mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-04 03:11:55 +02:00
2e5a8e5a54
this allows to template the owner, group and mtime in file infos inside archives. should help towards reproducible builds! goes well with #3618 Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
96 lines
1.7 KiB
Go
96 lines
1.7 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/goreleaser/goreleaser/internal/yaml"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestArchiveFiles_justString(t *testing.T) {
|
|
var actual Archive
|
|
|
|
err := yaml.UnmarshalStrict([]byte(`
|
|
files:
|
|
- ./script.sh
|
|
`), &actual)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []File{
|
|
{Source: "./script.sh"},
|
|
}, actual.Files)
|
|
}
|
|
|
|
func TestArchiveFiles_stringFiles(t *testing.T) {
|
|
var actual Archive
|
|
|
|
err := yaml.UnmarshalStrict([]byte(`
|
|
files:
|
|
- ./script.sh
|
|
- src: ./foo
|
|
dst: ./bar
|
|
info:
|
|
owner: carlos
|
|
group: users
|
|
`), &actual)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []File{
|
|
{Source: "./script.sh"},
|
|
{
|
|
Source: "./foo",
|
|
Destination: "./bar",
|
|
Info: FileInfo{
|
|
Owner: "carlos",
|
|
Group: "users",
|
|
},
|
|
},
|
|
}, actual.Files)
|
|
}
|
|
|
|
func TestArchiveFiles_complex(t *testing.T) {
|
|
var actual Archive
|
|
now := time.Now().UTC().Truncate(time.Second)
|
|
|
|
// 2021-07-17T15:14:10.264931-03:00
|
|
|
|
err := yaml.UnmarshalStrict([]byte(fmt.Sprintf(`
|
|
files:
|
|
- src: ./foo
|
|
dst: ./bar
|
|
info:
|
|
owner: carlos
|
|
group: users
|
|
- src: ./foobar
|
|
dst: ./barzaz
|
|
info:
|
|
owner: carlos
|
|
group: users
|
|
mode: 0644
|
|
mtime: "%s"
|
|
`, now.Format(time.RFC3339Nano))), &actual)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, []File{
|
|
{
|
|
Source: "./foo",
|
|
Destination: "./bar",
|
|
Info: FileInfo{
|
|
Owner: "carlos",
|
|
Group: "users",
|
|
},
|
|
},
|
|
{
|
|
Source: "./foobar",
|
|
Destination: "./barzaz",
|
|
Info: FileInfo{
|
|
Owner: "carlos",
|
|
Group: "users",
|
|
Mode: 0o644,
|
|
MTime: now.Format(time.RFC3339Nano),
|
|
ParsedMTime: time.Time{},
|
|
},
|
|
},
|
|
}, actual.Files)
|
|
}
|