diff --git a/integration-cli/docker_cli_links_test.go b/integration-cli/docker_cli_links_test.go index 651e96f8cc..652db3280e 100644 --- a/integration-cli/docker_cli_links_test.go +++ b/integration-cli/docker_cli_links_test.go @@ -231,7 +231,7 @@ func TestLinksNotStartedParentNotFail(t *testing.T) { } func TestLinksHostsFilesInject(t *testing.T) { - testRequires(t, SameHostDaemon) + testRequires(t, SameHostDaemon, ExecSupport) defer deleteAllContainers() @@ -251,12 +251,12 @@ func TestLinksHostsFilesInject(t *testing.T) { time.Sleep(1 * time.Second) - contentOne, err := readContainerFile(idOne, "hosts") + contentOne, err := readContainerFileWithExec(idOne, "/etc/hosts") if err != nil { t.Fatal(err, string(contentOne)) } - contentTwo, err := readContainerFile(idTwo, "hosts") + contentTwo, err := readContainerFileWithExec(idTwo, "/etc/hosts") if err != nil { t.Fatal(err, string(contentTwo)) } @@ -285,7 +285,7 @@ func TestLinksNetworkHostContainer(t *testing.T) { } func TestLinksUpdateOnRestart(t *testing.T) { - testRequires(t, SameHostDaemon) + testRequires(t, SameHostDaemon, ExecSupport) defer deleteAllContainers() @@ -302,7 +302,7 @@ func TestLinksUpdateOnRestart(t *testing.T) { if err != nil { t.Fatal(err) } - content, err := readContainerFile(id, "hosts") + content, err := readContainerFileWithExec(id, "/etc/hosts") if err != nil { t.Fatal(err, string(content)) } @@ -327,7 +327,7 @@ func TestLinksUpdateOnRestart(t *testing.T) { if err != nil { t.Fatal(err) } - content, err = readContainerFile(id, "hosts") + content, err = readContainerFileWithExec(id, "/etc/hosts") if err != nil { t.Fatal(err, string(content)) } diff --git a/integration-cli/docker_utils.go b/integration-cli/docker_utils.go index 56283952ca..2c4518fa14 100644 --- a/integration-cli/docker_utils.go +++ b/integration-cli/docker_utils.go @@ -895,6 +895,11 @@ func readContainerFile(containerId, filename string) ([]byte, error) { return content, nil } +func readContainerFileWithExec(containerId, filename string) ([]byte, error) { + out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "exec", containerId, "cat", filename)) + return []byte(out), err +} + func setupRegistry(t *testing.T) func() { reg, err := newTestRegistryV2(t) if err != nil { diff --git a/integration-cli/requirements.go b/integration-cli/requirements.go index 783e982067..fe7c51ee74 100644 --- a/integration-cli/requirements.go +++ b/integration-cli/requirements.go @@ -21,6 +21,10 @@ var ( func() bool { return isUnixCli }, "Test requires posix utilities or functionality to run.", } + ExecSupport = TestRequirement{ + func() bool { return supportsExec }, + "Test requires 'docker exec' capabilities on the tested daemon.", + } ) // testRequires checks if the environment satisfies the requirements diff --git a/integration-cli/test_vars_exec.go b/integration-cli/test_vars_exec.go new file mode 100644 index 0000000000..7633b346ba --- /dev/null +++ b/integration-cli/test_vars_exec.go @@ -0,0 +1,8 @@ +// +build !test_no_exec + +package main + +const ( + // indicates docker daemon tested supports 'docker exec' + supportsExec = true +) diff --git a/integration-cli/test_vars_noexec.go b/integration-cli/test_vars_noexec.go new file mode 100644 index 0000000000..0845090524 --- /dev/null +++ b/integration-cli/test_vars_noexec.go @@ -0,0 +1,8 @@ +// +build test_no_exec + +package main + +const ( + // indicates docker daemon tested supports 'docker exec' + supportsExec = false +)