|  | 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) | 
|  | } | 
|  | } | 
|  | } |