get.porter.sh/porter@v1.3.0/pkg/porter/build_test.go (about) 1 package porter 2 3 import ( 4 "fmt" 5 "testing" 6 7 "get.porter.sh/porter/pkg" 8 "get.porter.sh/porter/pkg/manifest" 9 "get.porter.sh/porter/pkg/mixin" 10 "get.porter.sh/porter/pkg/pkgmgmt" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestPorter_GetUsedMixins(t *testing.T) { 16 p := NewTestPorter(t) 17 defer p.Close() 18 19 // Add an extra mixin that isn't used by the bundle 20 testMixins := p.Mixins.(*mixin.TestMixinProvider) 21 testMixins.TestPackageManager.Packages = append(testMixins.TestPackageManager.Packages, &pkgmgmt.Metadata{ 22 Name: "mymixin", 23 VersionInfo: pkgmgmt.VersionInfo{ 24 Version: "v0.1.0", 25 Commit: "defxyz", 26 Author: "It was Me", 27 }, 28 }) 29 30 m := &manifest.Manifest{ 31 Mixins: []manifest.MixinDeclaration{ 32 {Name: "exec"}, 33 }, 34 } 35 36 results, err := p.getUsedMixins(p.RootContext, m) 37 require.NoError(t, err, "getUsedMixins failed") 38 assert.Len(t, results, 1) 39 assert.Equal(t, 1, testMixins.GetCalled("exec"), "expected the exec mixin to be called once") 40 } 41 42 func TestPorter_ErrorMessageOnMissingPorterYaml(t *testing.T) { 43 p := NewTestPorter(t) 44 defer p.Close() 45 46 o := BuildOptions{ 47 BundleDefinitionOptions: BundleDefinitionOptions{}, 48 } 49 50 err := o.Validate(p.Porter) 51 require.ErrorContains(t, err, fmt.Sprintf("could not find porter.yaml in the current directory %s, make sure you are in the right directory or specify the porter manifest with --file", o.Dir)) 52 } 53 54 func TestPorter_NoErrorWhenPorterYamlIsPresent(t *testing.T) { 55 p := NewTestPorter(t) 56 defer p.Close() 57 58 o := BuildOptions{ 59 BundleDefinitionOptions: BundleDefinitionOptions{}, 60 } 61 err := p.FileSystem.WriteFile("porter.yaml", []byte(""), pkg.FileModeWritable) 62 require.NoError(t, err) 63 64 err = o.Validate(p.Porter) 65 require.NoError(t, err, "validate BuildOptions failed") 66 }