github.com/ssube/gitlab-ci-multi-runner@v1.2.1-0.20160607142738-b8d1285632e6/commands/helpers/file_archiver_test.go (about) 1 package helpers 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "time" 10 ) 11 12 const fileArchiverUntrackedFile = "untracked_test_file.txt" 13 const fileArchiverOtherFile = "other_test_file.txt" 14 const fileArchiverNotExistingFile = "not_existing_file.txt" 15 const fileArchiverAbsoluteFile = "/absolute.txt" 16 const fileArchiverRelativeFile = "../../../relative.txt" 17 18 func TestCacheArchiverAddingUntrackedFiles(t *testing.T) { 19 ioutil.WriteFile(fileArchiverUntrackedFile, nil, 0600) 20 defer os.Remove(fileArchiverUntrackedFile) 21 22 f := fileArchiver{ 23 Untracked: true, 24 } 25 err := f.enumerate() 26 assert.NoError(t, err) 27 assert.Len(t, f.sortedFiles(), 1) 28 assert.Contains(t, f.sortedFiles(), fileArchiverUntrackedFile) 29 } 30 31 func TestCacheArchiverAddingFile(t *testing.T) { 32 ioutil.WriteFile(fileArchiverUntrackedFile, nil, 0600) 33 defer os.Remove(fileArchiverUntrackedFile) 34 35 f := fileArchiver{ 36 Paths: []string{fileArchiverUntrackedFile}, 37 } 38 err := f.enumerate() 39 assert.NoError(t, err) 40 assert.Len(t, f.sortedFiles(), 1) 41 assert.Contains(t, f.sortedFiles(), fileArchiverUntrackedFile) 42 } 43 44 func TestFileArchiverToFailOnAbsoulteFile(t *testing.T) { 45 f := fileArchiver{ 46 Paths: []string{fileArchiverAbsoluteFile}, 47 } 48 err := f.enumerate() 49 assert.NoError(t, err) 50 assert.Empty(t, f.sortedFiles()) 51 assert.NotContains(t, f.sortedFiles(), fileArchiverAbsoluteFile) 52 } 53 54 func TestFileArchiverToFailOnRelativeFile(t *testing.T) { 55 f := fileArchiver{ 56 Paths: []string{fileArchiverRelativeFile}, 57 } 58 err := f.enumerate() 59 assert.NoError(t, err) 60 assert.Empty(t, f.sortedFiles()) 61 } 62 63 func TestFileArchiverToAddNotExistingFile(t *testing.T) { 64 f := fileArchiver{ 65 Paths: []string{fileArchiverNotExistingFile}, 66 } 67 err := f.enumerate() 68 assert.NoError(t, err) 69 assert.Empty(t, f.sortedFiles()) 70 } 71 72 func TestFileArchiverChanged(t *testing.T) { 73 ioutil.WriteFile(fileArchiverOtherFile, nil, 0600) 74 defer os.Remove(fileArchiverOtherFile) 75 76 ioutil.WriteFile(fileArchiverUntrackedFile, nil, 0600) 77 defer os.Remove(fileArchiverUntrackedFile) 78 79 f := fileArchiver{ 80 Paths: []string{fileArchiverUntrackedFile}, 81 } 82 err := f.enumerate() 83 assert.NoError(t, err) 84 assert.Len(t, f.sortedFiles(), 1) 85 assert.False(t, f.isChanged(time.Now().Add(time.Minute))) 86 assert.True(t, f.isChanged(time.Now().Add(-time.Minute))) 87 88 assert.False(t, f.isFileChanged(fileArchiverOtherFile), "should return false if file was modified before the listed file") 89 os.Chtimes(fileArchiverOtherFile, time.Now(), time.Now().Add(-time.Minute)) 90 assert.True(t, f.isFileChanged(fileArchiverOtherFile), "should return true if file was modified") 91 assert.True(t, f.isFileChanged(fileArchiverNotExistingFile), "should return true if file doesn't exist") 92 }