This repository has been archived by the owner on Dec 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutil_test.go
90 lines (83 loc) · 1.76 KB
/
util_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package main
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func ExamplePrefix() {
path := "foo/bar/baz"
for prefix, k := Prefix(path, 0); k != -1; prefix, k = Prefix(path, k) {
fmt.Printf("%q ", prefix)
}
// Output: "" "foo" "foo/bar" "foo/bar/baz"
}
func TestPrefix(t *testing.T) {
cases := []struct {
name string
path string
expected []string
}{
{
name: lineno(),
path: "",
expected: []string{""},
},
{
name: lineno(),
path: "foo",
expected: []string{"", "foo"},
},
{
name: lineno(),
path: "foo/bar",
expected: []string{"", "foo", "foo/bar"},
},
{
name: lineno(),
path: "foo/bar/baz",
expected: []string{"", "foo", "foo/bar", "foo/bar/baz"},
},
// Cases that probably should not happen
// but which we still want to handle gracefully.
{
name: lineno(),
path: "/foo",
expected: []string{"", "/foo"},
},
{
name: lineno(),
path: "foo/",
expected: []string{"", "foo", "foo/"},
},
{
name: lineno(),
path: "foo/bar/",
expected: []string{"", "foo", "foo/bar", "foo/bar/"},
},
{
name: lineno(),
path: "/",
expected: []string{"", "/"},
},
{
name: lineno(),
path: "//",
expected: []string{"", "/", "//"},
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
actual := []string{}
for prefix, k := Prefix(c.path, 0); k != -1; prefix, k = Prefix(c.path, k) {
actual = append(actual, prefix)
}
assert.Equal(t, c.expected, actual)
})
}
}
func ExampleDeleteEnv() {
vars := []string{"USER=joe", "UID=1001", "PATH=/bin", "PAGER=less"}
vars = DeleteEnv(vars, "UID", "HOME", "PAGER")
fmt.Println(vars)
// Output: [USER=joe PATH=/bin]
}