43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
package artifact
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestNormalizeTargetsPreservesOrderAndFirstOccurrence(t *testing.T) {
|
|
targets := []Target{
|
|
{OS: "linux", Arch: "amd64"},
|
|
{OS: "windows", Arch: "arm64"},
|
|
{OS: "linux", Arch: "amd64"},
|
|
}
|
|
want := []Target{{OS: "linux", Arch: "amd64"}, {OS: "windows", Arch: "arm64"}}
|
|
if got := NormalizeTargets(targets); !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("NormalizeTargets() = %#v, want %#v", got, want)
|
|
}
|
|
}
|
|
|
|
func TestExpectedBuildUsesSharedNamesInTargetOrder(t *testing.T) {
|
|
targets := []Target{{OS: "windows", Arch: "arm64"}, {OS: "linux", Arch: "amd64"}}
|
|
want := []Declaration{
|
|
{Target: targets[0], Filename: "app-v1.2.3-windows-arm64.exe"},
|
|
{Target: targets[1], Filename: "app-v1.2.3-linux-amd64"},
|
|
}
|
|
if got := ExpectedBuild("app", "v1.2.3", targets); !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("ExpectedBuild() = %#v, want %#v", got, want)
|
|
}
|
|
}
|
|
|
|
func TestValidComponentPreservesBuildAndReceiptRules(t *testing.T) {
|
|
for _, value := range []string{"", "path/name", `path\name`, "line\nbreak", "line\rbreak"} {
|
|
if ValidComponent(value) {
|
|
t.Errorf("ValidComponent(%q) = true, want false", value)
|
|
}
|
|
}
|
|
for _, value := range []string{"app", "..", "nul\x00byte"} {
|
|
if !ValidComponent(value) {
|
|
t.Errorf("ValidComponent(%q) = false, want true", value)
|
|
}
|
|
}
|
|
}
|