github.com/goreleaser/goreleaser@v1.25.1/pkg/config/config_archive_files_test.go (about)

     1  package config
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/goreleaser/goreleaser/internal/yaml"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestArchiveFiles_justString(t *testing.T) {
    13  	var actual Archive
    14  
    15  	err := yaml.UnmarshalStrict([]byte(`
    16  files:
    17  - ./script.sh
    18  `), &actual)
    19  	require.NoError(t, err)
    20  	require.Equal(t, []File{
    21  		{Source: "./script.sh"},
    22  	}, actual.Files)
    23  }
    24  
    25  func TestArchiveFiles_stringFiles(t *testing.T) {
    26  	var actual Archive
    27  
    28  	err := yaml.UnmarshalStrict([]byte(`
    29  files:
    30  - ./script.sh
    31  - src: ./foo
    32    dst: ./bar
    33    info:
    34      owner: carlos
    35      group: users
    36  `), &actual)
    37  	require.NoError(t, err)
    38  	require.Equal(t, []File{
    39  		{Source: "./script.sh"},
    40  		{
    41  			Source:      "./foo",
    42  			Destination: "./bar",
    43  			Info: FileInfo{
    44  				Owner: "carlos",
    45  				Group: "users",
    46  			},
    47  		},
    48  	}, actual.Files)
    49  }
    50  
    51  func TestArchiveFiles_complex(t *testing.T) {
    52  	var actual Archive
    53  	now := time.Now().UTC().Truncate(time.Second)
    54  
    55  	// 2021-07-17T15:14:10.264931-03:00
    56  
    57  	err := yaml.UnmarshalStrict([]byte(fmt.Sprintf(`
    58  files:
    59  - src: ./foo
    60    dst: ./bar
    61    info:
    62      owner: carlos
    63      group: users
    64  - src: ./foobar
    65    dst: ./barzaz
    66    info:
    67      owner: carlos
    68      group: users
    69      mode: 0644
    70      mtime: "%s"
    71  `, now.Format(time.RFC3339Nano))), &actual)
    72  	require.NoError(t, err)
    73  
    74  	require.Equal(t, []File{
    75  		{
    76  			Source:      "./foo",
    77  			Destination: "./bar",
    78  			Info: FileInfo{
    79  				Owner: "carlos",
    80  				Group: "users",
    81  			},
    82  		},
    83  		{
    84  			Source:      "./foobar",
    85  			Destination: "./barzaz",
    86  			Info: FileInfo{
    87  				Owner:       "carlos",
    88  				Group:       "users",
    89  				Mode:        0o644,
    90  				MTime:       now.Format(time.RFC3339Nano),
    91  				ParsedMTime: time.Time{},
    92  			},
    93  		},
    94  	}, actual.Files)
    95  }