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  }