| /* |
| * Copyright 2020 Google LLC |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * https://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package labels |
| |
| import ( |
| "testing" |
| ) |
| |
| var parseLabelTests = []struct { |
| in string |
| repo string |
| pkg string |
| target string |
| }{ |
| {"//devtools/buildozer:rule", "", "devtools/buildozer", "rule"}, |
| {"devtools/buildozer:rule", "", "devtools/buildozer", "rule"}, |
| {"//devtools/buildozer", "", "devtools/buildozer", "buildozer"}, |
| {"//base", "", "base", "base"}, |
| {"//base:", "", "base", "base"}, |
| {"@r//devtools/buildozer:rule", "r", "devtools/buildozer", "rule"}, |
| {"@r//devtools/buildozer", "r", "devtools/buildozer", "buildozer"}, |
| {"@r//base", "r", "base", "base"}, |
| {"@r//base:", "r", "base", "base"}, |
| {"@foo", "foo", "", "foo"}, |
| {":label", "", "", "label"}, |
| {"label", "", "", "label"}, |
| {"/abs/path/to/WORKSPACE:rule", "", "/abs/path/to/WORKSPACE", "rule"}, |
| } |
| |
| func TestParseLabel(t *testing.T) { |
| for i, tt := range parseLabelTests { |
| l := Parse(tt.in) |
| if l.Repository != tt.repo || l.Package != tt.pkg || l.Target != tt.target { |
| t.Errorf("%d. Parse(%q) => (%q, %q, %q), want (%q, %q, %q)", |
| i, tt.in, l.Repository, l.Package, l.Target, tt.repo, tt.pkg, tt.target) |
| } |
| } |
| } |
| |
| var shortenLabelTests = []struct { |
| in string |
| pkg string |
| result string |
| }{ |
| {"//devtools/buildozer:rule", "devtools/buildozer", ":rule"}, |
| {"@//devtools/buildozer:rule", "devtools/buildozer", ":rule"}, |
| {"//devtools/buildozer:rule", "devtools", "//devtools/buildozer:rule"}, |
| {"//base:rule", "devtools", "//base:rule"}, |
| {"//base:base", "devtools", "//base"}, |
| {"//base", "base", ":base"}, |
| {"//devtools/buildozer:buildozer", "", "//devtools/buildozer"}, |
| {"@r//devtools/buildozer:buildozer", "devtools/buildozer", "@r//devtools/buildozer"}, |
| {"@r//devtools/buildozer", "devtools/buildozer", "@r//devtools/buildozer"}, |
| {"@r//devtools", "devtools", "@r//devtools"}, |
| {"@r:rule", "", "@r:rule"}, |
| {"@r", "", "@r"}, |
| {"@foo//:foo", "", "@foo"}, |
| {"@foo//devtools:foo", "", "@foo//devtools:foo"}, |
| {"@foo//devtools:foo", "devtools", "@foo//devtools:foo"}, |
| {"@foo//foo:foo", "", "@foo//foo"}, |
| {":local", "", ":local"}, |
| {"something else", "", "something else"}, |
| {"/path/to/file", "path/to", "/path/to/file"}, |
| {"\"//baz\"", "", "\"//baz\""}, |
| } |
| |
| func TestShortenLabel(t *testing.T) { |
| for i, tt := range shortenLabelTests { |
| result := Shorten(tt.in, tt.pkg) |
| if result != tt.result { |
| t.Errorf("%d. Shorten(%q, %q) => %q, want %q", |
| i, tt.in, tt.pkg, result, tt.result) |
| } |
| } |
| } |
| |
| var labelsEqualTests = []struct { |
| label1 string |
| label2 string |
| pkg string |
| expected bool |
| }{ |
| {"//devtools/buildozer:rule", "rule", "devtools/buildozer", true}, |
| {"//devtools/buildozer:rule", "rule:jar", "devtools", false}, |
| } |
| |
| func TestLabelsEqual(t *testing.T) { |
| for i, tt := range labelsEqualTests { |
| if got := Equal(tt.label1, tt.label2, tt.pkg); got != tt.expected { |
| t.Errorf("%d. Equal(%q, %q, %q) => %v, want %v", |
| i, tt.label1, tt.label2, tt.pkg, got, tt.expected) |
| } |
| } |
| } |