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  }