From 85bdb25015686ab24802a5d77fedcfbebf2750e5 Mon Sep 17 00:00:00 2001 From: Grigory Date: Mon, 8 Apr 2024 23:18:59 +0500 Subject: [PATCH 1/4] fix(which/windows): ignore file extension case --- src/which.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/which.zig b/src/which.zig index 59ae97ac1e0d30..d54988f9a51be7 100644 --- a/src/which.zig +++ b/src/which.zig @@ -79,7 +79,7 @@ pub fn endsWithExtension(str: []const u8) bool { const file_ext = str[str.len - 3 ..]; inline for (win_extensions) |ext| { comptime std.debug.assert(ext.len == 3); - if (bun.strings.eqlComptimeCheckLenWithType(u8, file_ext, ext, false)) return true; + if (bun.strings.eqlCaseInsensitiveASCIIICheckLength(file_ext, ext)) return true; } return false; } From fb3ad51de71bbc23aa50801b2041f216f8eb5a01 Mon Sep 17 00:00:00 2001 From: Grigory Date: Tue, 9 Apr 2024 16:10:38 +0500 Subject: [PATCH 2/4] feat(which): add test for `endsWithExtension` fun --- src/which.zig | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/which.zig b/src/which.zig index d54988f9a51be7..d3830ad97dd60d 100644 --- a/src/which.zig +++ b/src/which.zig @@ -179,3 +179,14 @@ test "which" { try std.testing.expect(null == which(&buf, realpath, try bun.getcwdAlloc(std.heap.c_allocator), "bin")); try std.testing.expect(null == which(&buf, realpath, try bun.getcwdAlloc(std.heap.c_allocator), "usr")); } + +test "endsWithExtension" { + try std.testing.expect(endsWithExtension("test.exe")); + try std.testing.expect(endsWithExtension("test.cmd")); + try std.testing.expect(endsWithExtension("test.bat")); + try std.testing.expect(endsWithExtension("test.EXE")); + try std.testing.expect(!endsWithExtension("test")); + try std.testing.expect(!endsWithExtension("test.")); + try std.testing.expect(!endsWithExtension("test.aa.")); + try std.testing.expect(!endsWithExtension(".")); +} From e555c66e5299c9db399c8efa50688b17499e13aa Mon Sep 17 00:00:00 2001 From: Grigory Date: Fri, 12 Apr 2024 03:35:56 +0500 Subject: [PATCH 3/4] Revert "feat(which): add test for `endsWithExtension` fun" This reverts commit fb3ad51de71bbc23aa50801b2041f216f8eb5a01. --- src/which.zig | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/which.zig b/src/which.zig index d3830ad97dd60d..d54988f9a51be7 100644 --- a/src/which.zig +++ b/src/which.zig @@ -179,14 +179,3 @@ test "which" { try std.testing.expect(null == which(&buf, realpath, try bun.getcwdAlloc(std.heap.c_allocator), "bin")); try std.testing.expect(null == which(&buf, realpath, try bun.getcwdAlloc(std.heap.c_allocator), "usr")); } - -test "endsWithExtension" { - try std.testing.expect(endsWithExtension("test.exe")); - try std.testing.expect(endsWithExtension("test.cmd")); - try std.testing.expect(endsWithExtension("test.bat")); - try std.testing.expect(endsWithExtension("test.EXE")); - try std.testing.expect(!endsWithExtension("test")); - try std.testing.expect(!endsWithExtension("test.")); - try std.testing.expect(!endsWithExtension("test.aa.")); - try std.testing.expect(!endsWithExtension(".")); -} From cecb63af0124025aea4f6d9779f1a74c1456349a Mon Sep 17 00:00:00 2001 From: Grigory Date: Fri, 12 Apr 2024 03:36:50 +0500 Subject: [PATCH 4/4] add test --- test/js/bun/util/which.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/js/bun/util/which.test.ts b/test/js/bun/util/which.test.ts index ffd02386a31fab..edb4670e32a2b8 100644 --- a/test/js/bun/util/which.test.ts +++ b/test/js/bun/util/which.test.ts @@ -33,6 +33,7 @@ if (isWindows) { test("which", () => { expect(which("cmd")).toBe("C:\\Windows\\system32\\cmd.exe"); expect(which("cmd.exe")).toBe("C:\\Windows\\system32\\cmd.exe"); + expect(which("cmd.EXE")).toBe("C:\\Windows\\system32\\cmd.EXE"); expect(which("cmd.bat")).toBe(null); const exe = basename(process.execPath); const dir = join(process.execPath, "../");