From 227eb4a5516d0ada3be2bc043559f2ff421dba69 Mon Sep 17 00:00:00 2001 From: "Stephen McQuay (smcquay)" Date: Fri, 3 Jun 2016 17:37:05 -0700 Subject: [PATCH] relax validity tests to break on slash Change-Id: I1578a0aa77ee1fc957bb9a93690ed92633d3a65a --- vain.go | 16 +++++++++++++++- vain_test.go | 7 +++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/vain.go b/vain.go index e8e1426..07d35cd 100644 --- a/vain.go +++ b/vain.go @@ -50,10 +50,24 @@ func (p Package) String() string { ) } +func splitPathHasPrefix(path, prefix []string) bool { + if len(path) < len(prefix) { + return false + } + for i, p := range prefix { + if path[i] != p { + return false + } + } + return true +} + // Valid checks that p will not confuse the go tool if added to packages. func Valid(p string, packages []Package) bool { + ps := strings.Split(p, "/") for _, pkg := range packages { - if strings.HasPrefix(pkg.Path, p) || strings.HasPrefix(p, pkg.Path) { + pre := strings.Split(pkg.Path, "/") + if splitPathHasPrefix(ps, pre) || splitPathHasPrefix(pre, ps) { return false } } diff --git a/vain_test.go b/vain_test.go index 2533b20..bbf343e 100644 --- a/vain_test.go +++ b/vain_test.go @@ -113,6 +113,13 @@ func TestValid(t *testing.T) { in: "foo/bar/baz", want: true, }, + { + pkgs: []Package{ + {Path: "a/b"}, + }, + in: "a/bb", + want: true, + }, } for _, test := range tests { got := Valid(test.in, test.pkgs)