From c9595f9ed6d3c85d12fe9ed1f1da9fd49df1a10f Mon Sep 17 00:00:00 2001 From: Tomas Zijdemans Date: Fri, 9 Oct 2026 12:48:26 +0200 Subject: [PATCH 1/2] fix(path): match backtick, not U+2018, in [[:punct:]] --- path/_common/glob_to_reg_exp.ts | 2 +- path/glob_to_regexp_test.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/path/_common/glob_to_reg_exp.ts b/path/_common/glob_to_reg_exp.ts index dd3df5da8b14..ab8c9af86e23 100644 --- a/path/_common/glob_to_reg_exp.ts +++ b/path/_common/glob_to_reg_exp.ts @@ -142,7 +142,7 @@ export function _globToRegExp( else if (value === "lower") segment += "a-z"; else if (value === "print") segment += "\x20-\x7E"; else if (value === "punct") { - segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~"; } else if (value === "space") segment += "\\s\v"; else if (value === "upper") segment += "A-Z"; else if (value === "word") segment += "\\w"; diff --git a/path/glob_to_regexp_test.ts b/path/glob_to_regexp_test.ts index 0816b2179b23..62739bb5183f 100644 --- a/path/glob_to_regexp_test.ts +++ b/path/glob_to_regexp_test.ts @@ -132,9 +132,10 @@ Deno.test({ for (const c of "\x20\x7E") { assert(match("[[:print:]]", c, { extended: false, globstar: false }), c); } - for (const c of "!\"#$%&'()*+,-./:;<=>?@[\\]^_‘{|}~") { + for (const c of "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~") { assert(match("[[:punct:]]", c, { extended: false, globstar: false }), c); } + assert(!match("[[:punct:]]", "‘", { extended: false, globstar: false })); for (const c of "\t\n\v\f\r ") { assert(match("[[:space:]]", c, { extended: false, globstar: false }), c); } From 6acb0ac8ac74b1ac3e5c003db289e9f3e5ed6f66 Mon Sep 17 00:00:00 2001 From: Tomas Zijdemans Date: Fri, 9 Oct 2026 12:55:25 +0200 Subject: [PATCH 2/2] fix(path): verify punctuation rejection on both platforms --- path/glob_to_regexp_test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/path/glob_to_regexp_test.ts b/path/glob_to_regexp_test.ts index 62739bb5183f..beee4eb1b3e3 100644 --- a/path/glob_to_regexp_test.ts +++ b/path/glob_to_regexp_test.ts @@ -135,7 +135,12 @@ Deno.test({ for (const c of "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~") { assert(match("[[:punct:]]", c, { extended: false, globstar: false }), c); } - assert(!match("[[:punct:]]", "‘", { extended: false, globstar: false })); + assert( + !posixMatch("[[:punct:]]", "‘", { extended: false, globstar: false }), + ); + assert( + !windowsMatch("[[:punct:]]", "‘", { extended: false, globstar: false }), + ); for (const c of "\t\n\v\f\r ") { assert(match("[[:space:]]", c, { extended: false, globstar: false }), c); }