internal/shaderlister: bug fix: test failures on Windows

The directory check must be skipped when the pattern includes a meta
character.

Updates #3157
This commit is contained in:
Hajime Hoshi 2025-02-09 00:59:47 +09:00
parent 5e2f2d37aa
commit 0182f7044d

View File

@ -205,6 +205,12 @@ func isAsciiSpace(r rune) bool {
return r == ' ' || r == '\t' || r == '\v' || r == '\n' || r == '\r'
}
func includesGlobMetaChar(str string) bool {
// '-' and '^' are meta characters only when these are in brackets.
// So, these don't need to be checked.
return strings.ContainsAny(str, "*?[]")
}
func appendShaderSources(shaders []Shader, pkg *packages.Package) ([]Shader, error) {
// Resolve ebitengine:shaderfile directives.
visitedPatterns := map[string]struct{}{}
@ -223,6 +229,7 @@ func appendShaderSources(shaders []Shader, pkg *packages.Package) ([]Shader, err
continue
}
visitedPatterns[pattern] = struct{}{}
if !includesGlobMetaChar(pattern) {
stat, err := os.Stat(pattern)
if err == nil && stat.IsDir() {
// If the pattern is a directory, read all files in the directory recursively.
@ -251,6 +258,7 @@ func appendShaderSources(shaders []Shader, pkg *packages.Package) ([]Shader, err
if err != nil && !errors.Is(err, os.ErrNotExist) {
return nil, err
}
}
paths, err := filepath.Glob(pattern)
if err != nil {
return nil, err