github.com/ssube/gitlab-ci-multi-runner@v1.2.1-0.20160607142738-b8d1285632e6/helpers/archives/zip_create_test.go (about) 1 package archives 2 3 import ( 4 "archive/zip" 5 "io/ioutil" 6 "os" 7 "syscall" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 var testZipFileContent = []byte("test content") 14 15 func createTestFile(t *testing.T) string { 16 err := ioutil.WriteFile("test_file.txt", testZipFileContent, 0640) 17 assert.NoError(t, err) 18 return "test_file.txt" 19 } 20 21 func createSymlinkFile(t *testing.T) string { 22 err := os.Symlink("old_symlink", "new_symlink") 23 assert.NoError(t, err) 24 return "new_symlink" 25 } 26 27 func createTestDirectory(t *testing.T) string { 28 err := os.Mkdir("test_directory", 0711) 29 assert.NoError(t, err) 30 return "test_directory" 31 } 32 33 func createTestPipe(t *testing.T) string { 34 err := syscall.Mkfifo("test_pipe", 0600) 35 assert.NoError(t, err) 36 return "test_pipe" 37 } 38 39 func TestZipCreate(t *testing.T) { 40 td, err := ioutil.TempDir("", "zip_create") 41 if !assert.NoError(t, err) { 42 return 43 } 44 45 wd, err := os.Getwd() 46 assert.NoError(t, err) 47 defer os.Chdir(wd) 48 49 err = os.Chdir(td) 50 assert.NoError(t, err) 51 52 tempFile, err := ioutil.TempFile("", "archive") 53 if !assert.NoError(t, err) { 54 return 55 } 56 tempFile.Close() 57 defer os.Remove(tempFile.Name()) 58 59 err = CreateZipFile(tempFile.Name(), []string{ 60 createTestFile(t), 61 createSymlinkFile(t), 62 createTestDirectory(t), 63 createTestPipe(t), 64 "non_existing_file.txt", 65 }) 66 if !assert.NoError(t, err) { 67 return 68 } 69 70 archive, err := zip.OpenReader(tempFile.Name()) 71 if !assert.NoError(t, err) { 72 return 73 } 74 defer archive.Close() 75 76 assert.Len(t, archive.File, 3) 77 assert.Equal(t, "test_file.txt", archive.File[0].Name) 78 assert.Equal(t, 0640, archive.File[0].Mode().Perm()) 79 assert.NotEmpty(t, archive.File[0].Extra) 80 assert.Equal(t, "new_symlink", archive.File[1].Name) 81 assert.Equal(t, "test_directory/", archive.File[2].Name) 82 assert.NotEmpty(t, archive.File[2].Extra) 83 assert.True(t, archive.File[2].Mode().IsDir()) 84 }