blob: 5811fe0b723b3a669a3821e5b1b3ae7ee39e0776 [file] [log] [blame]
package main
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"go.skia.org/infra/go/testutils/unittest"
)
func TestFilter(t *testing.T) {
unittest.SmallTest(t)
testCases := []struct {
value []string
expected []string
hasError bool
message string
}{
{
value: []string{},
expected: nil,
hasError: true,
message: "Empty",
},
{
value: []string{
"invalid tag",
},
expected: nil,
hasError: true,
message: "No valid tags",
},
{
value: []string{"2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty "},
expected: []string{"2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty "},
hasError: false,
message: "Single",
},
{
value: []string{
"2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
"2018-04-20T21_14_00Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
},
expected: []string{
"2018-04-20T21_14_00Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
"2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
},
hasError: false,
message: "Multiple, Sort",
},
{
value: []string{
"invalid tag",
"2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
"another invalid tag",
"2018-04-20T21_14_00Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
"final invalid tag",
},
expected: []string{
"2018-04-20T21_14_00Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
"2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
},
hasError: false,
message: "Multiple, Sort, Strip invalid",
},
}
for _, tc := range testCases {
got, err := filter(tc.value)
want := tc.expected
gotError := err != nil
wantError := tc.hasError
assert.Equal(t, wantError, gotError, "hasError: "+tc.message)
assert.Equal(t, want, got, tc.message)
}
}
func TestImageFromCmdLineImage(t *testing.T) {
unittest.SmallTest(t)
testCases := []struct {
value string
provider tagProvider
expected string
expectedError bool
message string
}{
{
value: "gcr.io/skia-public/fiddle:2018-...",
provider: nil,
expected: "gcr.io/skia-public/fiddle:2018-...",
expectedError: false,
message: "already full name",
},
{
value: "fiddle",
provider: func(name string) ([]string, error) {
return []string{
"2018-04-20T21_14_00Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
"foo",
"2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
}, nil
},
expectedError: false,
expected: "gcr.io/skia-public/fiddle:2018-04-20T21_21_48Z-jcgregorio-f40851bf4611a844bb63b289e91cddc6eba886ae-dirty",
message: "tag provider",
},
{
value: "fiddle",
provider: func(name string) ([]string, error) {
return []string{}, fmt.Errorf("Failed to find any tags.")
},
expected: "",
expectedError: true,
message: "tag provider",
},
}
for _, tc := range testCases {
got, err := imageFromCmdLineImage(tc.value, tc.provider)
if (err != nil) != tc.expectedError {
t.Errorf("Error condition unexpected: %s, Error expected: %v, %s", err, tc.expectedError, tc.message)
}
if want := tc.expected; got != want {
t.Errorf("Failed case Got %v Want %v: %s", got, want, tc.message)
}
}
}