package bundle import ( "os" "path/filepath" "strings" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestLoadNotExists(t *testing.T) { b, err := Load("/doesntexist") assert.True(t, os.IsNotExist(err)) assert.Nil(t, b) } func TestLoadExists(t *testing.T) { b, err := Load("./tests/basic") require.Nil(t, err) assert.Equal(t, "basic", b.Config.Bundle.Name) } func TestBundleCacheDir(t *testing.T) { projectDir := t.TempDir() f1, err := os.Create(filepath.Join(projectDir, "bundle.yml")) require.NoError(t, err) f1.Close() bundle, err := Load(projectDir) require.NoError(t, err) // Artificially set environment. // This is otherwise done by [mutators.SelectEnvironment]. bundle.Config.Bundle.Environment = "default" cacheDir, err := bundle.CacheDir() assert.NoError(t, err) assert.True(t, strings.HasPrefix(cacheDir, projectDir)) } func TestBundleMustLoadSuccess(t *testing.T) { t.Setenv(envBundleRoot, "./tests/basic") b, err := MustLoad() require.NoError(t, err) assert.Equal(t, "tests/basic", filepath.ToSlash(b.Config.Path)) } func TestBundleMustLoadFailureWithEnv(t *testing.T) { t.Setenv(envBundleRoot, "./tests/doesntexist") _, err := MustLoad() require.Error(t, err, "not a directory") } func TestBundleMustLoadFailureIfNotFound(t *testing.T) { chdir(t, t.TempDir()) _, err := MustLoad() require.Error(t, err, "unable to find bundle root") } func TestBundleTryLoadSuccess(t *testing.T) { t.Setenv(envBundleRoot, "./tests/basic") b, err := TryLoad() require.NoError(t, err) assert.Equal(t, "tests/basic", filepath.ToSlash(b.Config.Path)) } func TestBundleTryLoadFailureWithEnv(t *testing.T) { t.Setenv(envBundleRoot, "./tests/doesntexist") _, err := TryLoad() require.Error(t, err, "not a directory") } func TestBundleTryLoadOkIfNotFound(t *testing.T) { chdir(t, t.TempDir()) b, err := TryLoad() assert.NoError(t, err) assert.Nil(t, b) }