blob: 48c30d5b6ecd8613b67bda26193ea005af9507cd [file] [log] [blame]
// 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 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)
}
})
}
}