mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-04-17 12:06:50 +02:00
134 lines
3.0 KiB
Go
134 lines
3.0 KiB
Go
|
package archivefiles
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/goreleaser/goreleaser/internal/tmpl"
|
||
|
"github.com/goreleaser/goreleaser/pkg/config"
|
||
|
"github.com/goreleaser/goreleaser/pkg/context"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestEval(t *testing.T) {
|
||
|
now := time.Now().Truncate(time.Second)
|
||
|
tmpl := tmpl.New(context.New(config.Project{}))
|
||
|
|
||
|
t.Run("single file", func(t *testing.T) {
|
||
|
result, err := Eval(tmpl, []config.File{
|
||
|
{
|
||
|
Source: "./testdata/**/d.txt",
|
||
|
Destination: "var/foobar/d.txt",
|
||
|
},
|
||
|
})
|
||
|
|
||
|
require.NoError(t, err)
|
||
|
require.Equal(t, []config.File{
|
||
|
{
|
||
|
Source: "testdata/a/b/c/d.txt",
|
||
|
Destination: "var/foobar/d.txt/testdata/a/b/c/d.txt",
|
||
|
},
|
||
|
}, result)
|
||
|
})
|
||
|
|
||
|
t.Run("match multiple files within tree without destination", func(t *testing.T) {
|
||
|
result, err := Eval(tmpl, []config.File{{Source: "./testdata/a"}})
|
||
|
|
||
|
require.NoError(t, err)
|
||
|
require.Equal(t, []config.File{
|
||
|
{Source: "testdata/a/a.txt", Destination: "testdata/a/a.txt"},
|
||
|
{Source: "testdata/a/b/a.txt", Destination: "testdata/a/b/a.txt"},
|
||
|
{Source: "testdata/a/b/c/d.txt", Destination: "testdata/a/b/c/d.txt"},
|
||
|
}, result)
|
||
|
})
|
||
|
|
||
|
t.Run("match multiple files within tree specific destination", func(t *testing.T) {
|
||
|
result, err := Eval(tmpl, []config.File{
|
||
|
{
|
||
|
Source: "./testdata/a",
|
||
|
Destination: "usr/local/test",
|
||
|
Info: config.FileInfo{
|
||
|
Owner: "carlos",
|
||
|
Group: "users",
|
||
|
Mode: 0o755,
|
||
|
MTime: now,
|
||
|
},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
require.NoError(t, err)
|
||
|
require.Equal(t, []config.File{
|
||
|
{
|
||
|
Source: "testdata/a/a.txt",
|
||
|
Destination: "usr/local/test/testdata/a/a.txt",
|
||
|
Info: config.FileInfo{
|
||
|
Owner: "carlos",
|
||
|
Group: "users",
|
||
|
Mode: 0o755,
|
||
|
MTime: now,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
Source: "testdata/a/b/a.txt",
|
||
|
Destination: "usr/local/test/testdata/a/b/a.txt",
|
||
|
Info: config.FileInfo{
|
||
|
Owner: "carlos",
|
||
|
Group: "users",
|
||
|
Mode: 0o755,
|
||
|
MTime: now,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
Source: "testdata/a/b/c/d.txt",
|
||
|
Destination: "usr/local/test/testdata/a/b/c/d.txt",
|
||
|
Info: config.FileInfo{
|
||
|
Owner: "carlos",
|
||
|
Group: "users",
|
||
|
Mode: 0o755,
|
||
|
MTime: now,
|
||
|
},
|
||
|
},
|
||
|
}, result)
|
||
|
})
|
||
|
|
||
|
t.Run("match multiple files within tree specific destination stripping parents", func(t *testing.T) {
|
||
|
result, err := Eval(tmpl, []config.File{
|
||
|
{
|
||
|
Source: "./testdata/a",
|
||
|
Destination: "usr/local/test",
|
||
|
StripParent: true,
|
||
|
Info: config.FileInfo{
|
||
|
Owner: "carlos",
|
||
|
Group: "users",
|
||
|
Mode: 0o755,
|
||
|
MTime: now,
|
||
|
},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
require.NoError(t, err)
|
||
|
require.Equal(t, []config.File{
|
||
|
{
|
||
|
Source: "testdata/a/a.txt",
|
||
|
Destination: "usr/local/test/a.txt",
|
||
|
Info: config.FileInfo{
|
||
|
Owner: "carlos",
|
||
|
Group: "users",
|
||
|
Mode: 0o755,
|
||
|
MTime: now,
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
Source: "testdata/a/b/c/d.txt",
|
||
|
Destination: "usr/local/test/d.txt",
|
||
|
Info: config.FileInfo{
|
||
|
Owner: "carlos",
|
||
|
Group: "users",
|
||
|
Mode: 0o755,
|
||
|
MTime: now,
|
||
|
},
|
||
|
},
|
||
|
}, result)
|
||
|
})
|
||
|
}
|