Second set of enabling TestBuild CI for Windows

Signed-off-by: Darren Stahl <darst@microsoft.com>
This commit is contained in:
Darren Stahl 2016-01-25 15:58:03 -08:00
parent 5ee4ad1d77
commit 2b95f012db
1 changed files with 126 additions and 63 deletions

View File

@ -536,7 +536,6 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenChainedInSourceImage(c *check.C)
} }
func (s *DockerSuite) TestBuildOnBuildCmdEntrypointJSON(c *check.C) { func (s *DockerSuite) TestBuildOnBuildCmdEntrypointJSON(c *check.C) {
testRequires(c, DaemonIsLinux)
name1 := "onbuildcmd" name1 := "onbuildcmd"
name2 := "onbuildgenerated" name2 := "onbuildgenerated"
@ -557,16 +556,15 @@ ONBUILD RUN ["true"]`,
c.Fatal(err) c.Fatal(err)
} }
out, _ := dockerCmd(c, "run", "-t", name2) out, _ := dockerCmd(c, "run", name2)
if !regexp.MustCompile(`(?m)^hello world`).MatchString(out) { if !regexp.MustCompile(`(?m)^hello world`).MatchString(out) {
c.Fatal("did not get echo output from onbuild", out) c.Fatalf("did not get echo output from onbuild. Got: %q", out)
} }
} }
func (s *DockerSuite) TestBuildOnBuildEntrypointJSON(c *check.C) { func (s *DockerSuite) TestBuildOnBuildEntrypointJSON(c *check.C) {
testRequires(c, DaemonIsLinux)
name1 := "onbuildcmd" name1 := "onbuildcmd"
name2 := "onbuildgenerated" name2 := "onbuildgenerated"
@ -585,7 +583,7 @@ ONBUILD ENTRYPOINT ["echo"]`,
c.Fatal(err) c.Fatal(err)
} }
out, _ := dockerCmd(c, "run", "-t", name2) out, _ := dockerCmd(c, "run", name2)
if !regexp.MustCompile(`(?m)^hello world`).MatchString(out) { if !regexp.MustCompile(`(?m)^hello world`).MatchString(out) {
c.Fatal("got malformed output from onbuild", out) c.Fatal("got malformed output from onbuild", out)
@ -594,7 +592,7 @@ ONBUILD ENTRYPOINT ["echo"]`,
} }
func (s *DockerSuite) TestBuildCacheAdd(c *check.C) { func (s *DockerSuite) TestBuildCacheAdd(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Windows doesn't have httpserver image yet
name := "testbuildtwoimageswithadd" name := "testbuildtwoimageswithadd"
server, err := fakeStorage(map[string]string{ server, err := fakeStorage(map[string]string{
"robots.txt": "hello", "robots.txt": "hello",
@ -629,7 +627,7 @@ func (s *DockerSuite) TestBuildCacheAdd(c *check.C) {
} }
func (s *DockerSuite) TestBuildLastModified(c *check.C) { func (s *DockerSuite) TestBuildLastModified(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Windows doesn't have httpserver image yet
name := "testbuildlastmodified" name := "testbuildlastmodified"
server, err := fakeStorage(map[string]string{ server, err := fakeStorage(map[string]string{
@ -695,9 +693,20 @@ RUN ls -le /file`
} }
func (s *DockerSuite) TestBuildSixtySteps(c *check.C) { func (s *DockerSuite) TestBuildSixtySteps(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // TODO Windows: This test passes on Windows,
// but currently adds a disproportionate amount of time for the value it has.
// Removing it from Windows CI for now, but this will be revisited in the
// TP5 timeframe when perf is better.
name := "foobuildsixtysteps" name := "foobuildsixtysteps"
ctx, err := fakeContext("FROM scratch\n"+strings.Repeat("ADD foo /\n", 60),
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext("FROM "+baseImage+"\n"+strings.Repeat("ADD foo /\n", 60),
map[string]string{ map[string]string{
"foo": "test1", "foo": "test1",
}) })
@ -712,7 +721,7 @@ func (s *DockerSuite) TestBuildSixtySteps(c *check.C) {
} }
func (s *DockerSuite) TestBuildAddSingleFileToRoot(c *check.C) { func (s *DockerSuite) TestBuildAddSingleFileToRoot(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testaddimg" name := "testaddimg"
ctx, err := fakeContext(fmt.Sprintf(`FROM busybox ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -738,7 +747,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
// Issue #3960: "ADD src ." hangs // Issue #3960: "ADD src ." hangs
func (s *DockerSuite) TestBuildAddSingleFileToWorkdir(c *check.C) { func (s *DockerSuite) TestBuildAddSingleFileToWorkdir(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testaddsinglefiletoworkdir" name := "testaddsinglefiletoworkdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
ADD test_file .`, ADD test_file .`,
@ -765,7 +773,7 @@ ADD test_file .`,
} }
func (s *DockerSuite) TestBuildAddSingleFileToExistDir(c *check.C) { func (s *DockerSuite) TestBuildAddSingleFileToExistDir(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testaddsinglefiletoexistdir" name := "testaddsinglefiletoexistdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -791,7 +799,7 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
} }
func (s *DockerSuite) TestBuildCopyAddMultipleFiles(c *check.C) { func (s *DockerSuite) TestBuildCopyAddMultipleFiles(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
server, err := fakeStorage(map[string]string{ server, err := fakeStorage(map[string]string{
"robots.txt": "hello", "robots.txt": "hello",
}) })
@ -836,9 +844,16 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
} }
func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) { func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testaddmultiplefilestofile" name := "testaddmultiplefilestofile"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
ADD file1.txt file2.txt test ADD file1.txt file2.txt test
`, `,
map[string]string{ map[string]string{
@ -858,9 +873,16 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
} }
func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFile(c *check.C) { func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFile(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testjsonaddmultiplefilestofile" name := "testjsonaddmultiplefilestofile"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
ADD ["file1.txt", "file2.txt", "test"] ADD ["file1.txt", "file2.txt", "test"]
`, `,
map[string]string{ map[string]string{
@ -880,9 +902,16 @@ func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFile(c *check.C) {
} }
func (s *DockerSuite) TestBuildAddMultipleFilesToFileWild(c *check.C) { func (s *DockerSuite) TestBuildAddMultipleFilesToFileWild(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testaddmultiplefilestofilewild" name := "testaddmultiplefilestofilewild"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
ADD file*.txt test ADD file*.txt test
`, `,
map[string]string{ map[string]string{
@ -902,9 +931,16 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFileWild(c *check.C) {
} }
func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFileWild(c *check.C) { func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFileWild(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testjsonaddmultiplefilestofilewild" name := "testjsonaddmultiplefilestofilewild"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
ADD ["file*.txt", "test"] ADD ["file*.txt", "test"]
`, `,
map[string]string{ map[string]string{
@ -924,9 +960,16 @@ func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFileWild(c *check.C) {
} }
func (s *DockerSuite) TestBuildCopyMultipleFilesToFile(c *check.C) { func (s *DockerSuite) TestBuildCopyMultipleFilesToFile(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopymultiplefilestofile" name := "testcopymultiplefilestofile"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
COPY file1.txt file2.txt test COPY file1.txt file2.txt test
`, `,
map[string]string{ map[string]string{
@ -946,9 +989,16 @@ func (s *DockerSuite) TestBuildCopyMultipleFilesToFile(c *check.C) {
} }
func (s *DockerSuite) TestBuildJSONCopyMultipleFilesToFile(c *check.C) { func (s *DockerSuite) TestBuildJSONCopyMultipleFilesToFile(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testjsoncopymultiplefilestofile" name := "testjsoncopymultiplefilestofile"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
COPY ["file1.txt", "file2.txt", "test"] COPY ["file1.txt", "file2.txt", "test"]
`, `,
map[string]string{ map[string]string{
@ -968,7 +1018,7 @@ func (s *DockerSuite) TestBuildJSONCopyMultipleFilesToFile(c *check.C) {
} }
func (s *DockerSuite) TestBuildAddFileWithWhitespace(c *check.C) { func (s *DockerSuite) TestBuildAddFileWithWhitespace(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Not currently passing on Windows
name := "testaddfilewithwhitespace" name := "testaddfilewithwhitespace"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN mkdir "/test dir" RUN mkdir "/test dir"
@ -1004,7 +1054,7 @@ RUN [ $(cat "/test dir/test_file6") = 'test6' ]`,
} }
func (s *DockerSuite) TestBuildCopyFileWithWhitespace(c *check.C) { func (s *DockerSuite) TestBuildCopyFileWithWhitespace(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Not currently passing on Windows
name := "testcopyfilewithwhitespace" name := "testcopyfilewithwhitespace"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN mkdir "/test dir" RUN mkdir "/test dir"
@ -1040,7 +1090,6 @@ RUN [ $(cat "/test dir/test_file6") = 'test6' ]`,
} }
func (s *DockerSuite) TestBuildAddMultipleFilesToFileWithWhitespace(c *check.C) { func (s *DockerSuite) TestBuildAddMultipleFilesToFileWithWhitespace(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testaddmultiplefilestofilewithwhitespace" name := "testaddmultiplefilestofilewithwhitespace"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
ADD [ "test file1", "test file2", "test" ] ADD [ "test file1", "test file2", "test" ]
@ -1062,7 +1111,6 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFileWithWhitespace(c *check.C)
} }
func (s *DockerSuite) TestBuildCopyMultipleFilesToFileWithWhitespace(c *check.C) { func (s *DockerSuite) TestBuildCopyMultipleFilesToFileWithWhitespace(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopymultiplefilestofilewithwhitespace" name := "testcopymultiplefilestofilewithwhitespace"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
COPY [ "test file1", "test file2", "test" ] COPY [ "test file1", "test file2", "test" ]
@ -1084,7 +1132,7 @@ func (s *DockerSuite) TestBuildCopyMultipleFilesToFileWithWhitespace(c *check.C)
} }
func (s *DockerSuite) TestBuildCopyWildcard(c *check.C) { func (s *DockerSuite) TestBuildCopyWildcard(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Windows doesn't have httpserver image yet
name := "testcopywildcard" name := "testcopywildcard"
server, err := fakeStorage(map[string]string{ server, err := fakeStorage(map[string]string{
"robots.txt": "hello", "robots.txt": "hello",
@ -1135,7 +1183,6 @@ func (s *DockerSuite) TestBuildCopyWildcard(c *check.C) {
} }
func (s *DockerSuite) TestBuildCopyWildcardNoFind(c *check.C) { func (s *DockerSuite) TestBuildCopyWildcardNoFind(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopywildcardnofind" name := "testcopywildcardnofind"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
COPY file*.txt /tmp/ COPY file*.txt /tmp/
@ -1156,7 +1203,6 @@ func (s *DockerSuite) TestBuildCopyWildcardNoFind(c *check.C) {
} }
func (s *DockerSuite) TestBuildCopyWildcardInName(c *check.C) { func (s *DockerSuite) TestBuildCopyWildcardInName(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopywildcardinname" name := "testcopywildcardinname"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
COPY *.txt /tmp/ COPY *.txt /tmp/
@ -1181,7 +1227,6 @@ func (s *DockerSuite) TestBuildCopyWildcardInName(c *check.C) {
} }
func (s *DockerSuite) TestBuildCopyWildcardCache(c *check.C) { func (s *DockerSuite) TestBuildCopyWildcardCache(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopywildcardcache" name := "testcopywildcardcache"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
COPY file1.txt /tmp/`, COPY file1.txt /tmp/`,
@ -1215,7 +1260,7 @@ func (s *DockerSuite) TestBuildCopyWildcardCache(c *check.C) {
} }
func (s *DockerSuite) TestBuildAddSingleFileToNonExistingDir(c *check.C) { func (s *DockerSuite) TestBuildAddSingleFileToNonExistingDir(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testaddsinglefiletononexistingdir" name := "testaddsinglefiletononexistingdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1241,7 +1286,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
} }
func (s *DockerSuite) TestBuildAddDirContentToRoot(c *check.C) { func (s *DockerSuite) TestBuildAddDirContentToRoot(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testadddircontenttoroot" name := "testadddircontenttoroot"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1265,7 +1310,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
} }
func (s *DockerSuite) TestBuildAddDirContentToExistingDir(c *check.C) { func (s *DockerSuite) TestBuildAddDirContentToExistingDir(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testadddircontenttoexistingdir" name := "testadddircontenttoexistingdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1291,7 +1336,7 @@ RUN [ $(ls -l /exists/test_file | awk '{print $3":"$4}') = 'root:root' ]`,
} }
func (s *DockerSuite) TestBuildAddWholeDirToRoot(c *check.C) { func (s *DockerSuite) TestBuildAddWholeDirToRoot(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testaddwholedirtoroot" name := "testaddwholedirtoroot"
ctx, err := fakeContext(fmt.Sprintf(`FROM busybox ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1319,9 +1364,16 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
// Testing #5941 // Testing #5941
func (s *DockerSuite) TestBuildAddEtcToRoot(c *check.C) { func (s *DockerSuite) TestBuildAddEtcToRoot(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testaddetctoroot" name := "testaddetctoroot"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
ADD . /`, ADD . /`,
map[string]string{ map[string]string{
"etc/test_file": "test1", "etc/test_file": "test1",
@ -1338,7 +1390,7 @@ ADD . /`,
// Testing #9401 // Testing #9401
func (s *DockerSuite) TestBuildAddPreservesFilesSpecialBits(c *check.C) { func (s *DockerSuite) TestBuildAddPreservesFilesSpecialBits(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testaddpreservesfilesspecialbits" name := "testaddpreservesfilesspecialbits"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
ADD suidbin /usr/bin/suidbin ADD suidbin /usr/bin/suidbin
@ -1361,7 +1413,7 @@ RUN [ $(ls -l /usr/bin/suidbin | awk '{print $1}') = '-rwsr-xr-x' ]`,
} }
func (s *DockerSuite) TestBuildCopySingleFileToRoot(c *check.C) { func (s *DockerSuite) TestBuildCopySingleFileToRoot(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testcopysinglefiletoroot" name := "testcopysinglefiletoroot"
ctx, err := fakeContext(fmt.Sprintf(`FROM busybox ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1387,7 +1439,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
// Issue #3960: "ADD src ." hangs - adapted for COPY // Issue #3960: "ADD src ." hangs - adapted for COPY
func (s *DockerSuite) TestBuildCopySingleFileToWorkdir(c *check.C) { func (s *DockerSuite) TestBuildCopySingleFileToWorkdir(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopysinglefiletoworkdir" name := "testcopysinglefiletoworkdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
COPY test_file .`, COPY test_file .`,
@ -1414,7 +1465,7 @@ COPY test_file .`,
} }
func (s *DockerSuite) TestBuildCopySingleFileToExistDir(c *check.C) { func (s *DockerSuite) TestBuildCopySingleFileToExistDir(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testcopysinglefiletoexistdir" name := "testcopysinglefiletoexistdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1440,7 +1491,7 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
} }
func (s *DockerSuite) TestBuildCopySingleFileToNonExistDir(c *check.C) { func (s *DockerSuite) TestBuildCopySingleFileToNonExistDir(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testcopysinglefiletononexistdir" name := "testcopysinglefiletononexistdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1465,7 +1516,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
} }
func (s *DockerSuite) TestBuildCopyDirContentToRoot(c *check.C) { func (s *DockerSuite) TestBuildCopyDirContentToRoot(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testcopydircontenttoroot" name := "testcopydircontenttoroot"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1489,7 +1540,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
} }
func (s *DockerSuite) TestBuildCopyDirContentToExistDir(c *check.C) { func (s *DockerSuite) TestBuildCopyDirContentToExistDir(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testcopydircontenttoexistdir" name := "testcopydircontenttoexistdir"
ctx, err := fakeContext(`FROM busybox ctx, err := fakeContext(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1515,7 +1566,7 @@ RUN [ $(ls -l /exists/test_file | awk '{print $3":"$4}') = 'root:root' ]`,
} }
func (s *DockerSuite) TestBuildCopyWholeDirToRoot(c *check.C) { func (s *DockerSuite) TestBuildCopyWholeDirToRoot(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Linux specific test
name := "testcopywholedirtoroot" name := "testcopywholedirtoroot"
ctx, err := fakeContext(fmt.Sprintf(`FROM busybox ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
@ -1542,9 +1593,16 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
} }
func (s *DockerSuite) TestBuildCopyEtcToRoot(c *check.C) { func (s *DockerSuite) TestBuildCopyEtcToRoot(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopyetctoroot" name := "testcopyetctoroot"
ctx, err := fakeContext(`FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
ctx, err := fakeContext(`FROM `+baseImage+`
COPY . /`, COPY . /`,
map[string]string{ map[string]string{
"etc/test_file": "test1", "etc/test_file": "test1",
@ -1560,9 +1618,16 @@ COPY . /`,
} }
func (s *DockerSuite) TestBuildCopyDisallowRemote(c *check.C) { func (s *DockerSuite) TestBuildCopyDisallowRemote(c *check.C) {
testRequires(c, DaemonIsLinux)
name := "testcopydisallowremote" name := "testcopydisallowremote"
_, out, err := buildImageWithOut(name, `FROM scratch
var baseImage string
if daemonPlatform == "windows" {
baseImage = "windowsservercore"
} else {
baseImage = "scratch"
}
_, out, err := buildImageWithOut(name, `FROM `+baseImage+`
COPY https://index.docker.io/robots.txt /`, COPY https://index.docker.io/robots.txt /`,
true) true)
if err == nil || !strings.Contains(out, "Source can't be a URL for COPY") { if err == nil || !strings.Contains(out, "Source can't be a URL for COPY") {
@ -1571,15 +1636,14 @@ COPY https://index.docker.io/robots.txt /`,
} }
func (s *DockerSuite) TestBuildAddBadLinks(c *check.C) { func (s *DockerSuite) TestBuildAddBadLinks(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // Not currently working on Windows
const (
dockerfile = ` dockerfile := `
FROM scratch FROM scratch
ADD links.tar / ADD links.tar /
ADD foo.txt /symlink/ ADD foo.txt /symlink/
` `
targetFile = "foo.txt" targetFile := "foo.txt"
)
var ( var (
name = "test-link-absolute" name = "test-link-absolute"
) )
@ -1658,7 +1722,7 @@ func (s *DockerSuite) TestBuildAddBadLinks(c *check.C) {
} }
func (s *DockerSuite) TestBuildAddBadLinksVolume(c *check.C) { func (s *DockerSuite) TestBuildAddBadLinksVolume(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux) // ln not implemented on Windows busybox
const ( const (
dockerfileTemplate = ` dockerfileTemplate = `
FROM busybox FROM busybox
@ -1711,8 +1775,7 @@ func (s *DockerSuite) TestBuildAddBadLinksVolume(c *check.C) {
// Issue #5270 - ensure we throw a better error than "unexpected EOF" // Issue #5270 - ensure we throw a better error than "unexpected EOF"
// when we can't access files in the context. // when we can't access files in the context.
func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) { func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
testRequires(c, DaemonIsLinux) testRequires(c, DaemonIsLinux, UnixCli) // test uses chown/chmod: not available on windows
testRequires(c, UnixCli) // test uses chown/chmod: not available on windows
{ {
name := "testbuildinaccessiblefiles" name := "testbuildinaccessiblefiles"