134 lines
2.9 KiB
Go
134 lines
2.9 KiB
Go
package tspath
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestContainsIgnoredPath(t *testing.T) {
|
|
t.Parallel()
|
|
tests := []struct {
|
|
name string
|
|
path string
|
|
expected bool
|
|
}{
|
|
{
|
|
name: "node_modules dot path",
|
|
path: "/project/node_modules/.pnpm/file.ts",
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "git directory",
|
|
path: "/project/.git/hooks/pre-commit",
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "emacs lock file",
|
|
path: "/project/src/file.ts.#",
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "regular file path",
|
|
path: "/project/src/file.ts",
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "node_modules without dot",
|
|
path: "/project/node_modules/lodash/index.js",
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "empty path",
|
|
path: "",
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "path with multiple ignored patterns",
|
|
path: "/project/node_modules/.pnpm/.git/.#file.ts",
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "case sensitive test",
|
|
path: "/project/NODE_MODULES/.PNPM/file.ts",
|
|
expected: false, // Should be case sensitive
|
|
},
|
|
{
|
|
name: "path with ignored pattern in middle",
|
|
path: "/project/src/node_modules/.pnpm/dist/file.js",
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "path with ignored pattern at end",
|
|
path: "/project/src/file.ts.#",
|
|
expected: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
result := ContainsIgnoredPath(tt.path)
|
|
if result != tt.expected {
|
|
t.Errorf("ContainsIgnoredPath(%q) = %v, expected %v", tt.path, result, tt.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIgnoredPathsPatterns(t *testing.T) {
|
|
t.Parallel()
|
|
// Test that all expected patterns are present
|
|
expectedPatterns := []string{"/node_modules/.", "/.git", ".#"}
|
|
|
|
for _, pattern := range expectedPatterns {
|
|
testPath := "/test" + pattern + "/file.ts"
|
|
if !ContainsIgnoredPath(testPath) {
|
|
t.Errorf("Expected pattern '%s' to be detected in path '%s'", pattern, testPath)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestIgnoredPathsEdgeCases(t *testing.T) {
|
|
t.Parallel()
|
|
tests := []struct {
|
|
name string
|
|
path string
|
|
expected bool
|
|
}{
|
|
{
|
|
name: "pattern at start",
|
|
path: "/node_modules./file.ts",
|
|
expected: false, // Pattern is "/node_modules/." not "/node_modules."
|
|
},
|
|
{
|
|
name: "pattern at end",
|
|
path: "/project/file.ts.#",
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "multiple occurrences",
|
|
path: "/project/.git/node_modules./.git/file.ts",
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "no slashes",
|
|
path: "node_modules.file.ts",
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "single slash",
|
|
path: "/file.ts",
|
|
expected: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
result := ContainsIgnoredPath(tt.path)
|
|
if result != tt.expected {
|
|
t.Errorf("ContainsIgnoredPath(%q) = %v, expected %v", tt.path, result, tt.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|