github.com/ssube/gitlab-ci-multi-runner@v1.2.1-0.20160607142738-b8d1285632e6/commands/helpers/artifacts_test.go (about) 1 package helpers 2 3 import ( 4 "archive/zip" 5 "bytes" 6 "github.com/Sirupsen/logrus" 7 "gitlab.com/gitlab-org/gitlab-ci-multi-runner/common" 8 "gitlab.com/gitlab-org/gitlab-ci-multi-runner/mocks" 9 "io" 10 "os" 11 ) 12 13 const artifactsTestArchivedFile = "archive_file" 14 15 type testNetwork struct { 16 mocks.Network 17 downloadState common.DownloadState 18 downloadCalled int 19 uploadState common.UploadState 20 uploadCalled int 21 } 22 23 func (m *testNetwork) DownloadArtifacts(config common.BuildCredentials, artifactsFile string) common.DownloadState { 24 m.downloadCalled++ 25 26 if m.downloadState == common.DownloadSucceeded { 27 file, err := os.Create(artifactsFile) 28 if err != nil { 29 logrus.Warningln(err) 30 return common.DownloadFailed 31 } 32 defer file.Close() 33 34 archive := zip.NewWriter(file) 35 archive.Create(artifactsTestArchivedFile) 36 archive.Close() 37 } 38 return m.downloadState 39 } 40 41 func (m *testNetwork) UploadRawArtifacts(config common.BuildCredentials, reader io.Reader, baseName string) common.UploadState { 42 m.uploadCalled++ 43 44 if m.uploadState == common.UploadSucceeded { 45 var buffer bytes.Buffer 46 io.Copy(&buffer, reader) 47 archive, err := zip.NewReader(bytes.NewReader(buffer.Bytes()), int64(buffer.Len())) 48 if err != nil { 49 logrus.Warningln(err) 50 return common.UploadForbidden 51 } 52 53 if len(archive.File) != 1 || archive.File[0].Name != artifactsTestArchivedFile { 54 logrus.Warningln("Invalid archive:", len(archive.File)) 55 return common.UploadForbidden 56 } 57 } 58 return m.uploadState 59 }