package version import ( "fmt" "testing" ) func TestParseGitDescribe(t *testing.T) { expected := []Info{ Info{0, 0, 0, []string{"dev"}, []string{"unknown"}}, Info{0, 0, 0, []string{}, []string{"git", "feedbeef"}}, Info{1, 2, 0, []string{"dev", "1"}, []string{"git", "83", "feedbeef"}}, Info{1, 2, 3, []string{"dev", "1"}, []string{"git", "83", "feedbeef", "dirty"}}, Info{1, 2, 3, []string{}, []string{"git", "dirty"}}, Info{1, 2, 3, []string{"beta"}, []string{"git", "dirty"}}, Info{1, 2, 3, []string{"rc"}, []string{}}, } inputs := []string{ "", "feedbeef", "v1.2-dev.1-83-gfeedbeef", "v1.2.3-dev.1-83-gfeedbeef-dirty", "v1.2.3-dirty", "v1.2.3-beta-dirty", "v1.2.3-rc", } for i := 0; i < len(expected); i++ { got := parseGitDescribe(inputs[i]) if !expected[i].Equal(got) { t.Errorf("Got: %v, Expected: %v", got, expected[i]) } } } func TestInfoStringer(t *testing.T) { inputs := []Info{ Info{0, 0, 0, []string{"dev"}, []string{"unknown"}}, Info{0, 0, 0, []string{}, []string{"git", "feedbeef"}}, Info{1, 2, 0, []string{"dev", "1"}, []string{"git", "83", "feedbeef"}}, Info{1, 2, 3, []string{"dev", "1"}, []string{"git", "83", "feedbeef", "dirty"}}, Info{1, 2, 3, []string{}, []string{"git", "dirty"}}, Info{1, 2, 3, []string{"beta"}, []string{"git", "dirty"}}, Info{1, 2, 3, []string{"rc"}, []string{}}, } expected := []string{ "v0.0.0-dev+unknown", "v0.0.0+git.feedbeef", "v1.2.0-dev.1+git.83.feedbeef", "v1.2.3-dev.1+git.83.feedbeef.dirty", "v1.2.3+git.dirty", "v1.2.3-beta+git.dirty", "v1.2.3-rc", } for i := 0; i < len(expected); i++ { got := fmt.Sprint(inputs[i]) if got != expected[i] { t.Errorf("Got: %v, Expected: %v", got, expected[i]) } } }