| package toolbase |
| |
| import ( |
| "testing" |
| |
| "github.com/google/go-cmp/cmp" |
| ) |
| |
| func TestBazelLabelParse(t *testing.T) { |
| for i, te := range []struct { |
| p string |
| t *BazelLabel |
| }{ |
| {"//foo/bar", &BazelLabel{"dev_source_monogon", []string{"foo", "bar"}, "bar"}}, |
| {"//foo/bar:baz", &BazelLabel{"dev_source_monogon", []string{"foo", "bar"}, "baz"}}, |
| {"//:foo", &BazelLabel{"dev_source_monogon", nil, "foo"}}, |
| |
| {"@test//foo/bar", &BazelLabel{"test", []string{"foo", "bar"}, "bar"}}, |
| {"@test//foo/bar:baz", &BazelLabel{"test", []string{"foo", "bar"}, "baz"}}, |
| {"@test//:foo", &BazelLabel{"test", nil, "foo"}}, |
| |
| {"", nil}, |
| {"//", nil}, |
| {"//foo:bar/foo", nil}, |
| {"//foo//bar/foo", nil}, |
| {"/foo/bar/foo", nil}, |
| {"foo/bar/foo", nil}, |
| {"@//foo/bar/foo", nil}, |
| {"@foo/bar//foo/bar/foo", nil}, |
| {"@foo:bar//foo/bar/foo", nil}, |
| {"foo//foo/bar/foo", nil}, |
| } { |
| want := te.t |
| got := ParseBazelLabel(te.p) |
| if diff := cmp.Diff(want, got); diff != "" { |
| t.Errorf("case %d (%q): %s", i, te.p, diff) |
| } |
| } |
| } |
| |
| func TestBazelLabelString(t *testing.T) { |
| for i, te := range []struct { |
| in string |
| want string |
| }{ |
| {"//foo/bar", "@dev_source_monogon//foo/bar:bar"}, |
| {"//foo:bar", "@dev_source_monogon//foo:bar"}, |
| {"@com_github_example//:run", "@com_github_example//:run"}, |
| } { |
| l := ParseBazelLabel(te.in) |
| if l == nil { |
| t.Errorf("case %d: wanted %q, got nil", i, te.want) |
| continue |
| } |
| if want, got := te.want, l.String(); want != got { |
| t.Errorf("case %d: wanted %q, got %q", i, want, got) |
| } |
| } |
| } |