vendor tsgo
This commit is contained in:
177
tools/tsgo/internal/tspath/startsWithDirectory_test.go
Normal file
177
tools/tsgo/internal/tspath/startsWithDirectory_test.go
Normal file
@@ -0,0 +1,177 @@
|
||||
package tspath
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestStartsWithDirectory(t *testing.T) {
|
||||
t.Parallel()
|
||||
tests := []struct {
|
||||
name string
|
||||
fileName string
|
||||
directoryName string
|
||||
useCaseSensitiveFileNames bool
|
||||
expected bool
|
||||
}{
|
||||
{
|
||||
name: "exact match case sensitive",
|
||||
fileName: "/project/src/file.ts",
|
||||
directoryName: "/project/src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "exact match case insensitive",
|
||||
fileName: "/project/src/file.ts",
|
||||
directoryName: "/PROJECT/SRC",
|
||||
useCaseSensitiveFileNames: false,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "case sensitive mismatch",
|
||||
fileName: "/project/src/file.ts",
|
||||
directoryName: "/PROJECT/SRC",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "file not in directory",
|
||||
fileName: "/project/lib/file.ts",
|
||||
directoryName: "/project/src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "file in subdirectory",
|
||||
fileName: "/project/src/components/Button.tsx",
|
||||
directoryName: "/project/src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "file in parent directory",
|
||||
fileName: "/project/file.ts",
|
||||
directoryName: "/project/src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "windows style separators",
|
||||
fileName: "C:\\project\\src\\file.ts",
|
||||
directoryName: "C:\\project\\src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "mixed separators",
|
||||
fileName: "/project/src/file.ts",
|
||||
directoryName: "\\project\\src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "empty directory name",
|
||||
fileName: "/project/src/file.ts",
|
||||
directoryName: "",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "empty file name",
|
||||
fileName: "",
|
||||
directoryName: "/project/src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "identical paths",
|
||||
fileName: "/project/src",
|
||||
directoryName: "/project/src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false, // File name doesn't start with directory + separator
|
||||
},
|
||||
{
|
||||
name: "directory with trailing separator",
|
||||
fileName: "/project/src/file.ts",
|
||||
directoryName: "/project/src/",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "unicode characters",
|
||||
fileName: "/project/测试/file.ts",
|
||||
directoryName: "/project/测试",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "unicode case insensitive",
|
||||
fileName: "/project/测试/file.ts",
|
||||
directoryName: "/PROJECT/测试",
|
||||
useCaseSensitiveFileNames: false,
|
||||
expected: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
result := StartsWithDirectory(tt.fileName, tt.directoryName, tt.useCaseSensitiveFileNames)
|
||||
if result != tt.expected {
|
||||
t.Errorf("StartsWithDirectory(%q, %q, %v) = %v, expected %v",
|
||||
tt.fileName, tt.directoryName, tt.useCaseSensitiveFileNames, result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestStartsWithDirectoryEdgeCases(t *testing.T) {
|
||||
t.Parallel()
|
||||
tests := []struct {
|
||||
name string
|
||||
fileName string
|
||||
directoryName string
|
||||
useCaseSensitiveFileNames bool
|
||||
expected bool
|
||||
}{
|
||||
{
|
||||
name: "file name shorter than directory",
|
||||
fileName: "/proj",
|
||||
directoryName: "/project",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "file name starts with directory but no separator",
|
||||
fileName: "/projectsrc/file.ts",
|
||||
directoryName: "/project",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "relative paths",
|
||||
fileName: "src/file.ts",
|
||||
directoryName: "src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "absolute vs relative",
|
||||
fileName: "/project/src/file.ts",
|
||||
directoryName: "project/src",
|
||||
useCaseSensitiveFileNames: true,
|
||||
expected: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
result := StartsWithDirectory(tt.fileName, tt.directoryName, tt.useCaseSensitiveFileNames)
|
||||
if result != tt.expected {
|
||||
t.Errorf("StartsWithDirectory(%q, %q, %v) = %v, expected %v",
|
||||
tt.fileName, tt.directoryName, tt.useCaseSensitiveFileNames, result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user