diff options
Diffstat (limited to '')
-rw-r--r-- | dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/gorelease/path_test.go | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/gorelease/path_test.go b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/gorelease/path_test.go new file mode 100644 index 0000000..57dfd98 --- /dev/null +++ b/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/gorelease/path_test.go @@ -0,0 +1,227 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "runtime" + "testing" +) + +func TestHasPathPrefix(t *testing.T) { + for _, test := range []struct { + desc, path, prefix string + want bool + }{ + { + desc: "empty_prefix", + path: "a/b", + prefix: "", + want: true, + }, { + desc: "partial_prefix", + path: "a/b", + prefix: "a", + want: true, + }, { + desc: "full_prefix", + path: "a/b", + prefix: "a/b", + want: true, + }, { + desc: "partial_component", + path: "aa/b", + prefix: "a", + want: false, + }, + } { + t.Run(test.desc, func(t *testing.T) { + if got := hasPathPrefix(test.path, test.prefix); got != test.want { + t.Errorf("hasPathPrefix(%q, %q): got %v, want %v", test.path, test.prefix, got, test.want) + } + }) + } +} + +func TestHasFilePathPrefix(t *testing.T) { + type test struct { + desc, path, prefix string + want bool + } + var tests []test + if runtime.GOOS == "windows" { + tests = []test{ + { + desc: "empty_prefix", + path: `c:\a\b`, + prefix: "", + want: true, + }, { + desc: "drive_prefix", + path: `c:\a\b`, + prefix: `c:\`, + want: true, + }, { + desc: "partial_prefix", + path: `c:\a\b`, + prefix: `c:\a`, + want: true, + }, { + desc: "full_prefix", + path: `c:\a\b`, + prefix: `c:\a\b`, + want: true, + }, { + desc: "partial_component", + path: `c:\aa\b`, + prefix: `c:\a`, + want: false, + }, + } + } else { + tests = []test{ + { + desc: "empty_prefix", + path: "/a/b", + prefix: "", + want: true, + }, { + desc: "partial_prefix", + path: "/a/b", + prefix: "/a", + want: true, + }, { + desc: "full_prefix", + path: "/a/b", + prefix: "/a/b", + want: true, + }, { + desc: "partial_component", + path: "/aa/b", + prefix: "/a", + want: false, + }, + } + } + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + if got := hasFilePathPrefix(test.path, test.prefix); got != test.want { + t.Errorf("hasFilePathPrefix(%q, %q): got %v, want %v", test.path, test.prefix, got, test.want) + } + }) + } +} + +func TestTrimFilePathPrefix(t *testing.T) { + type test struct { + desc, path, prefix, want string + } + var tests []test + if runtime.GOOS == "windows" { + tests = []test{ + // Note: these two cases in which the result preserves the leading \ + // don't come up in reality in gorelease. That's because prefix is + // always far to the right of the path parts (ex github.com/foo/bar + // in C:\Users\foo\AppData\Local\Temp\...\github.com\foo\bar). + { + desc: "empty_prefix", + path: `c:\a\b`, + prefix: "", + want: `\a\b`, + }, { + desc: "partial_component", + path: `c:\aa\b`, + prefix: `c:\a`, + want: `\aa\b`, + }, + + { + desc: "drive_prefix", + path: `c:\a\b`, + prefix: `c:\`, + want: `a\b`, + }, { + desc: "partial_prefix", + path: `c:\a\b`, + prefix: `c:\a`, + want: `b`, + }, { + desc: "full_prefix", + path: `c:\a\b`, + prefix: `c:\a\b`, + want: "", + }, + } + } else { + tests = []test{ + { + desc: "empty_prefix", + path: "/a/b", + prefix: "", + want: "/a/b", + }, { + desc: "partial_prefix", + path: "/a/b", + prefix: "/a", + want: "b", + }, { + desc: "full_prefix", + path: "/a/b", + prefix: "/a/b", + want: "", + }, { + desc: "partial_component", + path: "/aa/b", + prefix: "/a", + want: "/aa/b", + }, + } + } + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + if got := trimFilePathPrefix(test.path, test.prefix); got != test.want { + t.Errorf("hasFilePathPrefix(%q, %q): got %v, want %v", test.path, test.prefix, got, test.want) + } + }) + } +} + +func TestTrimPathPrefix(t *testing.T) { + for _, test := range []struct { + desc, path, prefix, want string + }{ + { + desc: "empty_prefix", + path: "a/b", + prefix: "", + want: "a/b", + }, { + desc: "abs_empty_prefix", + path: "/a/b", + prefix: "", + want: "/a/b", + }, { + desc: "partial_prefix", + path: "a/b", + prefix: "a", + want: "b", + }, { + desc: "full_prefix", + path: "a/b", + prefix: "a/b", + want: "", + }, { + desc: "partial_component", + path: "aa/b", + prefix: "a", + want: "aa/b", + }, + } { + t.Run(test.desc, func(t *testing.T) { + if got := trimPathPrefix(test.path, test.prefix); got != test.want { + t.Errorf("trimPathPrefix(%q, %q): got %q, want %q", test.path, test.prefix, got, test.want) + } + }) + } +} |