From cdc306a31076d33bbfb35cd9d0494d19dfaae51c Mon Sep 17 00:00:00 2001 From: Sven Loth Date: Thu, 21 Dec 2017 12:11:42 +0100 Subject: [PATCH] added one more test to cover 2-level directory linking --- pipeline/docker/docker_test.go | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pipeline/docker/docker_test.go b/pipeline/docker/docker_test.go index 31d151cbb..2be176f8f 100644 --- a/pipeline/docker/docker_test.go +++ b/pipeline/docker/docker_test.go @@ -286,6 +286,42 @@ func TestLinkDirectory(t *testing.T) { os.RemoveAll(dstDir) } +func TestLinkTwoLevelDirectory(t *testing.T) { + const srcDir = "/tmp/testdir" + const srcLevel2 = srcDir+"/level2" + const testFile = "test" + const dstDir = "/tmp/linkedDir" + + os.Mkdir(srcDir, 0755) + os.Mkdir(srcLevel2, 0755) + err := ioutil.WriteFile(srcDir+"/"+testFile, []byte("foo"), 0644) + if err != nil { + t.Log("Cannot setup test file") + t.Fail() + } + err = ioutil.WriteFile(srcLevel2+"/"+testFile, []byte("foo"), 0644) + if err != nil { + t.Log("Cannot setup test file") + t.Fail() + } + err = directoryLink(srcDir, dstDir, nil) + if err != nil { + t.Log("Failed to link: ", err) + t.Fail() + } + if inode(srcDir+"/"+testFile) != inode(dstDir+"/"+testFile) { + t.Log("Inodes do not match") + t.Fail() + } + if inode(srcLevel2+"/"+testFile) != inode(dstDir+"/level2/"+testFile) { + t.Log("Inodes do not match") + t.Fail() + } + // cleanup + os.RemoveAll(srcDir) + os.RemoveAll(dstDir) +} + func inode(file string) uint64 { fileInfo, err := os.Stat(file) if err != nil {