Files
kjol/tools/tsgo/internal/tsoptions/wildcarddirectories_test.go
2026-07-09 16:50:43 -04:00

86 lines
2.8 KiB
Go

package tsoptions
import (
"testing"
"github.com/microsoft/typescript-go/internal/tspath"
"gotest.tools/v3/assert"
)
func TestGetWildcardDirectories_DotPrefixedIncludeWithDotDirExclude(t *testing.T) {
t.Parallel()
// https://github.com/microsoft/typescript-go/issues/3733
// "./"-prefixed include specs must be fully normalized before being tested
// against exclude patterns; otherwise the leftover literal "." path segment
// matches dot-directory excludes like "**/.*/", silently dropping every
// wildcard directory (and with them, root file watching for the config).
result := getWildcardDirectories(
[]string{"./app/**/*.ts", "./app/**/*.tsx"},
[]string{"**/node_modules", "**/.*/", "./build"},
tspath.ComparePathsOptions{
CurrentDirectory: "/home/projects/monorepo/apps/web",
UseCaseSensitiveFileNames: true,
},
)
assert.DeepEqual(t, result, map[string]bool{"/home/projects/monorepo/apps/web/app": true})
}
func TestGetWildcardDirectories_NonASCIICharacters(t *testing.T) {
t.Parallel()
tests := []struct {
name string
include []string
exclude []string
currentDirectory string
useCaseSensitiveFileNames bool
}{
{
name: "Norwegian character æ in path",
include: []string{"src/**/*.test.ts", "src/**/*.stories.ts", "src/**/*.mdx"},
exclude: []string{"node_modules"},
currentDirectory: "C:/Users/TobiasLægreid/dev/app/frontend/packages/react",
useCaseSensitiveFileNames: false,
},
{
name: "Japanese characters in path",
include: []string{"src/**/*.ts"},
exclude: []string{"テスト"},
currentDirectory: "/Users/ユーザー/プロジェクト",
useCaseSensitiveFileNames: true,
},
{
name: "Chinese characters in path",
include: []string{"源代码/**/*.js"},
exclude: []string{"节点模块"},
currentDirectory: "/home/用户/项目",
useCaseSensitiveFileNames: true,
},
{
name: "Various Unicode characters",
include: []string{"src/**/*.ts"},
exclude: []string{"node_modules"},
currentDirectory: "/Users/Müller/café/naïve/résumé",
useCaseSensitiveFileNames: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
comparePathsOptions := tspath.ComparePathsOptions{
CurrentDirectory: tt.currentDirectory,
UseCaseSensitiveFileNames: tt.useCaseSensitiveFileNames,
}
result := getWildcardDirectories(tt.include, tt.exclude, comparePathsOptions)
if result == nil {
t.Fatalf("expected non-nil result")
}
})
}
}