github.com/secure-build/gitlab-runner@v12.5.0+incompatible/helpers/archives/zip_extra_test.go (about)

     1  package archives
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  
     8  	"archive/zip"
     9  	"encoding/binary"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestCreateZipExtra(t *testing.T) {
    14  	testFile, err := ioutil.TempFile("", "test")
    15  	assert.NoError(t, err)
    16  	defer testFile.Close()
    17  	defer os.Remove(testFile.Name())
    18  
    19  	fi, _ := testFile.Stat()
    20  	assert.NotNil(t, fi)
    21  
    22  	data := createZipExtra(fi)
    23  	assert.NotEmpty(t, data)
    24  	assert.Len(t, data, binary.Size(&ZipExtraField{})*2+
    25  		binary.Size(&ZipUIDGidField{})+
    26  		binary.Size(&ZipTimestampField{}))
    27  }
    28  
    29  func TestProcessZipExtra(t *testing.T) {
    30  	testFile, err := ioutil.TempFile("", "test")
    31  	assert.NoError(t, err)
    32  	defer testFile.Close()
    33  	defer os.Remove(testFile.Name())
    34  
    35  	fi, _ := testFile.Stat()
    36  	assert.NotNil(t, fi)
    37  
    38  	zipFile, err := zip.FileInfoHeader(fi)
    39  	assert.NoError(t, err)
    40  	zipFile.Extra = createZipExtra(fi)
    41  
    42  	err = ioutil.WriteFile(fi.Name(), []byte{}, 0666)
    43  	defer os.Remove(fi.Name())
    44  	assert.NoError(t, err)
    45  
    46  	err = processZipExtra(zipFile)
    47  	assert.NoError(t, err)
    48  
    49  	fi2, _ := testFile.Stat()
    50  	assert.NotNil(t, fi2)
    51  	assert.Equal(t, fi.Mode(), fi2.Mode())
    52  	assert.Equal(t, fi.ModTime(), fi2.ModTime())
    53  }