diff options
| author | zjncs <[email protected]> | 2026-09-04 15:12:12 +0800 |
|---|---|---|
| committer | zjncs <[email protected]> | 2026-09-04 15:12:12 +0800 |
| commit | 8102c104461c1bb71a13e4531c59e23e371d35be (patch) | |
| tree | 8f92b07a024f3de21639fe33d68dcb93a0f38369 /tests/modules/os/test.lua | |
| parent | c1a32b8b31bb78cf4ac4b51b0a7a08b6c4224505 (diff) | |
escape brackets in path.pattern
path.pattern() escapes the lua pattern magic characters except '[' and
']', so a filename containing brackets is treated as a character class.
For example, os.files("a[1]*.lua") matches "a1.lua" instead of
"a[1].lua", and remove_files("a[1].lua") would remove "a1.lua"
instead of "a[1].lua".
Escape '[' and ']' like the other magic characters so bracket
characters in file names are matched literally.
Diffstat (limited to 'tests/modules/os/test.lua')
| -rw-r--r-- | tests/modules/os/test.lua | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/modules/os/test.lua b/tests/modules/os/test.lua index 2dcab35c6..d24615fd4 100644 --- a/tests/modules/os/test.lua +++ b/tests/modules/os/test.lua @@ -208,3 +208,13 @@ function test_isexec(t) os.tryrm(tempdir) end + +function test_files_with_brackets(t) + local tmpdir = os.tmpfile() .. ".dir" + io.writefile(path.join(tmpdir, "a[1].lua"), "x") + io.writefile(path.join(tmpdir, "a1.lua"), "x") + -- a wildcard is required, a plain existing file is matched without converting the pattern + local files = os.files(path.join(tmpdir, "a[1]*.lua")) + t:are_equal(files, {path.join(tmpdir, "a[1].lua")}) + os.tryrm(tmpdir) +end |
