If DOCKER_CLIENTONLY is set for test-integration-cli, we don't set
the 'daemon' build tag. 'isRemoteDaemon' will help us skip such
tests without a need to move them to a separate file and accidentally
lose track of them.
Added `testRequires` function to skip tests based on predefined
conditions evaluated in runtime. This way we can easily extend test
requirements like:
testRequires(t, Networking, SameHostDaemon, Linux)
Signed-off-by: Ahmet Alp Balkan <ahmetb@microsoft.com>
Upstream-commit: bc37c036b568f9ae27a7aa457ec73d0c5c6a61cf
Component: engine
31 lines
599 B
Go
31 lines
599 B
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
type TestCondition func() bool
|
|
|
|
type TestRequirement struct {
|
|
Condition TestCondition
|
|
SkipMessage string
|
|
}
|
|
|
|
// List test requirements
|
|
var (
|
|
SameHostDaemon = TestRequirement{
|
|
func() bool { return isLocalDaemon },
|
|
"Test requires docker daemon to runs on the same machine as CLI",
|
|
}
|
|
)
|
|
|
|
// testRequires checks if the environment satisfies the requirements
|
|
// for the test to run or skips the tests.
|
|
func testRequires(t *testing.T, requirements ...TestRequirement) {
|
|
for _, r := range requirements {
|
|
if !r.Condition() {
|
|
t.Skip(r.SkipMessage)
|
|
}
|
|
}
|
|
}
|