github.com/goreleaser/goreleaser@v1.25.1/pkg/config/config_test.go (about) 1 package config 2 3 import ( 4 "bytes" 5 "fmt" 6 "os" 7 "path/filepath" 8 "strings" 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestRepo(t *testing.T) { 15 require.Equal( 16 t, 17 "goreleaser/godownloader", 18 Repo{Owner: "goreleaser", Name: "godownloader"}.String(), 19 ) 20 } 21 22 func TestEmptyRepoNameAndOwner(t *testing.T) { 23 require.Empty(t, Repo{}.String()) 24 } 25 26 func TestLoadReader(t *testing.T) { 27 conf := ` 28 nfpms: 29 - homepage: http://goreleaser.github.io 30 ` 31 buf := strings.NewReader(conf) 32 prop, err := LoadReader(buf) 33 34 require.NoError(t, err) 35 require.Equal(t, "http://goreleaser.github.io", prop.NFPMs[0].Homepage, "yaml did not load correctly") 36 } 37 38 type errorReader struct{} 39 40 func (errorReader) Read(_ []byte) (n int, err error) { 41 return 1, fmt.Errorf("error") 42 } 43 44 func TestLoadBadReader(t *testing.T) { 45 _, err := LoadReader(errorReader{}) 46 require.Error(t, err) 47 } 48 49 func TestFile(t *testing.T) { 50 f, err := os.CreateTemp(t.TempDir(), "config") 51 require.NoError(t, err) 52 require.NoError(t, f.Close()) 53 _, err = Load(filepath.Join(f.Name())) 54 require.NoError(t, err) 55 } 56 57 func TestFileNotFound(t *testing.T) { 58 _, err := Load("/nope/no-way.yml") 59 require.Error(t, err) 60 } 61 62 func TestInvalidFields(t *testing.T) { 63 _, err := Load("testdata/invalid_config.yml") 64 require.EqualError(t, err, "yaml: unmarshal errors:\n line 2: field invalid_yaml not found in type config.Build") 65 } 66 67 func TestInvalidYaml(t *testing.T) { 68 _, err := Load("testdata/invalid.yml") 69 require.EqualError(t, err, "yaml: line 1: did not find expected node content") 70 } 71 72 func TestConfigWithAnchors(t *testing.T) { 73 _, err := Load("testdata/anchor.yaml") 74 require.NoError(t, err) 75 } 76 77 func TestVersion(t *testing.T) { 78 t.Run("allow no version", func(t *testing.T) { 79 _, err := LoadReader(bytes.NewReader(nil)) 80 require.NoError(t, err) 81 }) 82 t.Run("allow v0", func(t *testing.T) { 83 _, err := LoadReader(strings.NewReader("version: 0")) 84 require.NoError(t, err) 85 }) 86 t.Run("allow v1", func(t *testing.T) { 87 _, err := LoadReader(strings.NewReader("version: 1")) 88 require.NoError(t, err) 89 }) 90 t.Run("do not allow v2", func(t *testing.T) { 91 _, err := LoadReader(strings.NewReader("version: 2")) 92 require.Error(t, err) 93 require.ErrorIs(t, err, VersionError{2}) 94 }) 95 }