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