gopkg.in/openshift/source-to-image.v1@v1.2.0/pkg/util/fs/fs_test.go (about) 1 package fs 2 3 import ( 4 "os" 5 "path/filepath" 6 "reflect" 7 "testing" 8 9 testfs "github.com/openshift/source-to-image/pkg/test/fs" 10 ) 11 12 func helper(t *testing.T, keepSymlinks bool) { 13 sep := string(filepath.Separator) 14 15 // test plain file copy 16 fake := &testfs.FakeFileSystem{ 17 Files: []os.FileInfo{ 18 &FileInfo{FileName: "file", FileMode: 0600}, 19 }, 20 OpenContent: "test", 21 } 22 fake.KeepSymlinks(keepSymlinks) 23 err := doCopy(fake, sep+"file", sep+"dest", nil) 24 if err != nil { 25 t.Error(err) 26 } 27 if fake.CreateFile != sep+"dest" { 28 t.Error(fake.CreateFile) 29 } 30 if fake.CreateContent.String() != "test" { 31 t.Error(fake.CreateContent.String()) 32 } 33 if !reflect.DeepEqual(fake.ChmodFile, []string{sep + "dest"}) { 34 t.Error(fake.ChmodFile) 35 } 36 if fake.ChmodMode != 0600 { 37 t.Error(fake.ChmodMode) 38 } 39 40 // test broken symlink copy 41 fake = &testfs.FakeFileSystem{ 42 Files: []os.FileInfo{ 43 &FileInfo{FileName: "link", FileMode: os.ModeSymlink}, 44 }, 45 ReadlinkName: sep + "linkdest", 46 } 47 fake.KeepSymlinks(keepSymlinks) 48 err = doCopy(fake, sep+"link", sep+"dest", nil) 49 if err != nil { 50 t.Error(err) 51 } 52 if fake.SymlinkNewname != sep+"dest" { 53 t.Error(fake.SymlinkNewname) 54 } 55 if fake.SymlinkOldname != sep+"linkdest" { 56 t.Error(fake.SymlinkOldname) 57 } 58 59 // test non-broken symlink copy 60 fake = &testfs.FakeFileSystem{ 61 Files: []os.FileInfo{ 62 &FileInfo{FileName: "file", FileMode: 0600}, 63 &FileInfo{FileName: "link", FileMode: os.ModeSymlink}, 64 }, 65 OpenContent: "test", 66 ReadlinkName: sep + "file", 67 } 68 fake.KeepSymlinks(keepSymlinks) 69 err = doCopy(fake, sep+"link", sep+"dest", nil) 70 if err != nil { 71 t.Error(err) 72 } 73 if keepSymlinks { 74 if fake.SymlinkNewname != sep+"dest" { 75 t.Error(fake.SymlinkNewname) 76 } 77 } else { 78 if fake.CreateFile != sep+"dest" { 79 t.Error(fake.CreateFile) 80 } 81 if fake.CreateContent.String() != "test" { 82 t.Error(fake.CreateContent.String()) 83 } 84 if !reflect.DeepEqual(fake.ChmodFile, []string{sep + "dest"}) { 85 t.Error(fake.ChmodFile) 86 } 87 if fake.ChmodMode != 0600 { 88 t.Error(fake.ChmodMode) 89 } 90 } 91 } 92 93 func TestCopy(t *testing.T) { 94 helper(t, false) 95 } 96 97 func TestCopyKeepSymlinks(t *testing.T) { 98 helper(t, true) 99 }