diff options
author | 2023-07-25 20:49:48 +0800 | |
---|---|---|
committer | 2023-07-25 05:49:48 -0700 | |
commit | 0297cb15271e309acb543896f24f4ddac9833428 (patch) | |
tree | e979b2a5d84c42ff74d09a04d9d7e1534728c222 | |
parent | 4209703b351f8155aff411d52927e1d72165770a (diff) | |
download | bun-0297cb15271e309acb543896f24f4ddac9833428.tar.gz bun-0297cb15271e309acb543896f24f4ddac9833428.tar.zst bun-0297cb15271e309acb543896f24f4ddac9833428.zip |
fix the encoding of `dirname`'s return value. (#3799)
-rw-r--r-- | src/bun.js/node/types.zig | 2 | ||||
-rw-r--r-- | test/js/node/path/path.test.js | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig index bc2144095..23d693d69 100644 --- a/src/bun.js/node/types.zig +++ b/src/bun.js/node/types.zig @@ -1782,7 +1782,7 @@ pub const Path = struct { else @This().dirnamePosix(base_slice); - return JSC.ZigString.init(out).toValueGC(globalThis); + return JSC.ZigString.init(out).withEncoding().toValueGC(globalThis); } pub fn extname(globalThis: *JSC.JSGlobalObject, _: bool, args_ptr: [*]JSC.JSValue, args_len: u16) callconv(.C) JSC.JSValue { if (comptime is_bindgen) return JSC.JSValue.jsUndefined(); diff --git a/test/js/node/path/path.test.js b/test/js/node/path/path.test.js index deab41796..8f32bdb2c 100644 --- a/test/js/node/path/path.test.js +++ b/test/js/node/path/path.test.js @@ -66,6 +66,20 @@ describe("dirname", () => { expect(path.posix.dirname("\\a")).toBe("."); expect(path.posix.dirname("a")).toBe("."); expect(path.posix.dirname("/a/b//c")).toBe("/a/b/"); + expect(path.posix.dirname("/文檔")).toBe("/"); + expect(path.posix.dirname("/文檔/")).toBe("/"); + expect(path.posix.dirname("/文檔/新建文件夾")).toBe("/文檔"); + expect(path.posix.dirname("/文檔/新建文件夾/")).toBe("/文檔"); + expect(path.posix.dirname("//新建文件夾")).toBe("//"); + expect(path.posix.dirname("///新建文件夾")).toBe("//"); + expect(path.posix.dirname("////新建文件夾")).toBe("///"); + expect(path.posix.dirname("/////新建文件夾")).toBe("////"); + expect(path.posix.dirname("新建文件夾")).toBe("."); + expect(path.posix.dirname("新建文件夾/")).toBe("."); + expect(path.posix.dirname("文檔/新建文件夾")).toBe("文檔"); + expect(path.posix.dirname("文檔/")).toBe("."); + expect(path.posix.dirname("文檔///新建文件夾")).toBe("文檔//"); + expect(path.posix.dirname("文檔//新建文件夾")).toBe("文檔/"); }); it("path.win32.dirname", () => { expect(path.win32.dirname("c:\\")).toBe("c:\\"); @@ -105,6 +119,31 @@ describe("dirname", () => { expect(path.win32.dirname("/")).toBe("/"); expect(path.win32.dirname("////")).toBe("/"); expect(path.win32.dirname("foo")).toBe("."); + expect(path.win32.dirname("c:\\")).toBe("c:\\"); + expect(path.win32.dirname("c:\\文檔")).toBe("c:\\"); + expect(path.win32.dirname("c:\\文檔\\")).toBe("c:\\"); + expect(path.win32.dirname("c:\\文檔\\新建文件夾")).toBe("c:\\文檔"); + expect(path.win32.dirname("c:\\文檔\\新建文件夾\\")).toBe("c:\\文檔"); + expect(path.win32.dirname("c:\\文檔\\新建文件夾\\baz")).toBe("c:\\文檔\\新建文件夾"); + expect(path.win32.dirname("c:\\文檔 1\\新建文件夾")).toBe("c:\\文檔 1"); + expect(path.win32.dirname("c:\\\\文檔")).toBe("c:\\"); + expect(path.win32.dirname("\\文檔")).toBe("\\"); + expect(path.win32.dirname("\\文檔\\")).toBe("\\"); + expect(path.win32.dirname("\\文檔\\新建文件夾")).toBe("\\文檔"); + expect(path.win32.dirname("\\文檔\\新建文件夾\\")).toBe("\\文檔"); + expect(path.win32.dirname("\\文檔\\新建文件夾\\baz")).toBe("\\文檔\\新建文件夾"); + expect(path.win32.dirname("\\文檔 1\\baz")).toBe("\\文檔 1"); + expect(path.win32.dirname("c:")).toBe("c:"); + expect(path.win32.dirname("c:文檔")).toBe("c:"); + expect(path.win32.dirname("c:文檔\\")).toBe("c:"); + expect(path.win32.dirname("c:文檔\\新建文件夾")).toBe("c:文檔"); + expect(path.win32.dirname("c:文檔\\新建文件夾\\")).toBe("c:文檔"); + expect(path.win32.dirname("c:文檔\\新建文件夾\\baz")).toBe("c:文檔\\新建文件夾"); + expect(path.win32.dirname("c:文檔 1\\baz")).toBe("c:文檔 1"); + expect(path.win32.dirname("/文檔/新建文件夾/")).toBe("/文檔"); + expect(path.win32.dirname("/文檔/新建文件夾")).toBe("/文檔"); + expect(path.win32.dirname("/文檔")).toBe("/"); + expect(path.win32.dirname("新建文件夾")).toBe("."); }); }); |