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  }