vendor tsgo
This commit is contained in:
85
tools/tsgo/internal/tsoptions/wildcarddirectories_test.go
Normal file
85
tools/tsgo/internal/tsoptions/wildcarddirectories_test.go
Normal file
@@ -0,0 +1,85 @@
|
||||
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")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user