From 492a58f05fe026653e27ed75d3ad4221f2e615b1 Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Fri, 20 Feb 2015 01:37:27 -0800 Subject: [PATCH] integ-cli: Skip some unix-specific cli tests Skipping some of the tests closely tied to running in a unix environment. Windows does not support chmod/chown and this causes some tests to fail creating desired behavior. - `TestBuildWithInaccessibleFilesInContext`: uses chown/chmod - `TestBuildDockerfileOutsideContext`: uses os.Symlink, not implemented on windows - `TestCpUnprivilegedUser`: uses chmod, and requires 'unprivilegeduser' created by Dockerfile (and thus requires to run inside container) - `TestBuildChownSingleFile`: uses chown Signed-off-by: Ahmet Alp Balkan --- integration-cli/docker_cli_build_test.go | 6 ++++++ integration-cli/docker_cli_cp_test.go | 2 ++ integration-cli/requirements.go | 4 ++++ integration-cli/test_vars_unix.go | 8 ++++++++ integration-cli/test_vars_windows.go | 8 ++++++++ 5 files changed, 28 insertions(+) create mode 100644 integration-cli/test_vars_unix.go create mode 100644 integration-cli/test_vars_windows.go diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 3384eed60c..adea41f011 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -1673,6 +1673,8 @@ func TestBuildAddBadLinksVolume(t *testing.T) { // Issue #5270 - ensure we throw a better error than "unexpected EOF" // when we can't access files in the context. func TestBuildWithInaccessibleFilesInContext(t *testing.T) { + testRequires(t, UnixCli) // test uses chown/chmod: not available on windows + { name := "testbuildinaccessiblefiles" defer deleteImages(name) @@ -4387,6 +4389,8 @@ func TestBuildStderr(t *testing.T) { } func TestBuildChownSingleFile(t *testing.T) { + testRequires(t, UnixCli) // test uses chown: not available on windows + name := "testbuildchownsinglefile" defer deleteImages(name) @@ -4658,6 +4662,8 @@ func TestBuildFromOfficialNames(t *testing.T) { } func TestBuildDockerfileOutsideContext(t *testing.T) { + testRequires(t, UnixCli) // uses os.Symlink: not implemented in windows at the time of writing (go-1.4.2) + name := "testbuilddockerfileoutsidecontext" tmpdir, err := ioutil.TempDir("", name) if err != nil { diff --git a/integration-cli/docker_cli_cp_test.go b/integration-cli/docker_cli_cp_test.go index 070b890257..2b88b62bf6 100644 --- a/integration-cli/docker_cli_cp_test.go +++ b/integration-cli/docker_cli_cp_test.go @@ -347,6 +347,8 @@ func TestCpSymlinkComponent(t *testing.T) { // Check that cp with unprivileged user doesn't return any error func TestCpUnprivilegedUser(t *testing.T) { + testRequires(t, UnixCli) // uses chmod/su: not available on windows + out, exitCode, err := dockerCmd(t, "run", "-d", "busybox", "/bin/sh", "-c", "touch "+cpTestName) if err != nil || exitCode != 0 { t.Fatal("failed to create a container", out, err) diff --git a/integration-cli/requirements.go b/integration-cli/requirements.go index 9d283d8114..783e982067 100644 --- a/integration-cli/requirements.go +++ b/integration-cli/requirements.go @@ -17,6 +17,10 @@ var ( func() bool { return isLocalDaemon }, "Test requires docker daemon to runs on the same machine as CLI", } + UnixCli = TestRequirement{ + func() bool { return isUnixCli }, + "Test requires posix utilities or functionality to run.", + } ) // testRequires checks if the environment satisfies the requirements diff --git a/integration-cli/test_vars_unix.go b/integration-cli/test_vars_unix.go new file mode 100644 index 0000000000..2f40136e0a --- /dev/null +++ b/integration-cli/test_vars_unix.go @@ -0,0 +1,8 @@ +// +build !windows + +package main + +const ( + // idetifies if test suite is running on a unix platform + isUnixCli = true +) diff --git a/integration-cli/test_vars_windows.go b/integration-cli/test_vars_windows.go new file mode 100644 index 0000000000..b5988a44ab --- /dev/null +++ b/integration-cli/test_vars_windows.go @@ -0,0 +1,8 @@ +// +build windows + +package main + +const ( + // idetifies if test suite is running on a unix platform + isUnixCli = false +)