mirror of https://go.googlesource.com/go
77 lines
2.0 KiB
Go
77 lines
2.0 KiB
Go
// Copyright 2023 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.
|
|
|
|
//go:build wasip1
|
|
|
|
package syscall_test
|
|
|
|
import (
|
|
"syscall"
|
|
"testing"
|
|
)
|
|
|
|
var joinPathTests = [...]struct {
|
|
dir, file, path string
|
|
}{
|
|
0: {".", ".", "."},
|
|
1: {"./", "./", "./"},
|
|
2: {"././././", ".", "."},
|
|
3: {".", "./././", "./"},
|
|
4: {".", "a", "a"},
|
|
5: {".", "a/b", "a/b"},
|
|
6: {".", "..", ".."},
|
|
7: {".", "../", "../"},
|
|
8: {".", "../../", "../../"},
|
|
9: {".", "../..", "../.."},
|
|
10: {".", "../..//..///", "../../../"},
|
|
11: {"/", "/", "/"},
|
|
12: {"/", "a", "/a"},
|
|
13: {"/", "a/b", "/a/b"},
|
|
14: {"/a", "b", "/a/b"},
|
|
15: {"/", ".", "/"},
|
|
16: {"/", "..", "/"},
|
|
17: {"/", "../../", "/"},
|
|
18: {"/", "/../a/b/c", "/a/b/c"},
|
|
19: {"/", "/../a/b/c", "/a/b/c"},
|
|
20: {"/", "./hello/world", "/hello/world"},
|
|
21: {"/a", "../", "/"},
|
|
22: {"/a/b/c", "..", "/a/b"},
|
|
23: {"/a/b/c", "..///..///", "/a/"},
|
|
24: {"/a/b/c", "..///..///..", "/"},
|
|
25: {"/a/b/c", "..///..///..///..", "/"},
|
|
26: {"/a/b/c", "..///..///..///..///..", "/"},
|
|
27: {"/a/b/c/", "/d/e/f/", "/a/b/c/d/e/f/"},
|
|
28: {"a/b/c/", ".", "a/b/c"},
|
|
29: {"a/b/c/", "./d", "a/b/c/d"},
|
|
30: {"a/b/c/", "./d/", "a/b/c/d/"},
|
|
31: {"a/b/", "./c/d/", "a/b/c/d/"},
|
|
32: {"../", "..", "../.."},
|
|
33: {"a/b/c/d", "e/../..", "a/b/c"},
|
|
34: {"a/b/c/d", "./e/../..", "a/b/c"},
|
|
35: {"a/b/c/d", "./e/..//../../f/g//", "a/b/f/g/"},
|
|
36: {"../../../", "a/../../b/c", "../../b/c"},
|
|
37: {"/a/b/c", "/.././/hey!", "/a/b/hey!"},
|
|
}
|
|
|
|
func TestJoinPath(t *testing.T) {
|
|
for _, test := range joinPathTests {
|
|
t.Run("", func(t *testing.T) {
|
|
path := syscall.JoinPath(test.dir, test.file)
|
|
if path != test.path {
|
|
t.Errorf("join(%q,%q): want=%q got=%q", test.dir, test.file, test.path, path)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func BenchmarkJoinPath(b *testing.B) {
|
|
for _, test := range joinPathTests {
|
|
b.Run("", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
syscall.JoinPath(test.dir, test.file)
|
|
}
|
|
})
|
|
}
|
|
}
|