github.com/Benchkram/bob@v0.0.0-20220321080157-7c8f3876e225/bobtask/artifact_test.go (about)

     1  package bobtask
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/Benchkram/bob/pkg/file"
    10  	"github.com/Benchkram/bob/pkg/store/filestore"
    11  	"github.com/Benchkram/errz"
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func TestPackAndUnpackArtifacts(t *testing.T) {
    16  
    17  	testdir, err := ioutil.TempDir("", "test-pack-and-unpack-artifact")
    18  	assert.Nil(t, err)
    19  	storage, err := ioutil.TempDir("", "test-pack-and-unpack-artifact-store")
    20  	assert.Nil(t, err)
    21  	defer func() {
    22  		os.RemoveAll(testdir)
    23  		os.RemoveAll(storage)
    24  	}()
    25  
    26  	artifactStore := filestore.New(storage)
    27  
    28  	assert.Nil(t, os.MkdirAll(filepath.Join(testdir, ".bbuild"), 0774))
    29  	assert.Nil(t, os.MkdirAll(filepath.Join(testdir, ".bbuild/dirone"), 0774))
    30  	assert.Nil(t, os.WriteFile(filepath.Join(testdir, ".bbuild/dirone/fileone"), []byte("fileone"), 0774))
    31  	assert.Nil(t, os.WriteFile(filepath.Join(testdir, ".bbuild/dirone/filetwo"), []byte("filetwo"), 0774))
    32  	assert.Nil(t, os.MkdirAll(filepath.Join(testdir, ".bbuild/dirtwo"), 0774))
    33  	assert.Nil(t, os.WriteFile(filepath.Join(testdir, ".bbuild/dirtwo/fileone"), []byte("fileone"), 0774))
    34  	assert.Nil(t, os.WriteFile(filepath.Join(testdir, ".bbuild/dirtwo/filetwo"), []byte("filetwo"), 0774))
    35  
    36  	tsk := Make()
    37  	tsk.dir = testdir
    38  	tsk.local = artifactStore
    39  	tsk.name = "mytaskname"
    40  
    41  	tsk.TargetDirty = ".bbuild/dirone/"
    42  	err = tsk.parseTargets()
    43  	assert.Nil(t, err)
    44  
    45  	err = tsk.ArtifactPack("aaa")
    46  	errz.Log(err)
    47  	assert.Nil(t, err)
    48  
    49  	err = os.RemoveAll(filepath.Join(testdir, ".build/dirone"))
    50  	assert.Nil(t, err)
    51  
    52  	success, err := tsk.ArtifactUnpack("aaa")
    53  	assert.Nil(t, err)
    54  	assert.True(t, success)
    55  
    56  	assert.True(t, file.Exists(filepath.Join(testdir, ".bbuild/dirone/fileone")))
    57  	assert.True(t, file.Exists(filepath.Join(testdir, ".bbuild/dirone/filetwo")))
    58  
    59  	// assure artifact inspect returns without an error
    60  	_, err = tsk.ArtifactInspect("aaa")
    61  	assert.Nil(t, err)
    62  }