aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-17 20:07:08 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-17 20:07:08 -0700
commit9e1745ee1f5844e6ab89135e776552d2ad1ad684 (patch)
tree133981a2dbfb1cc7fe4b566f198cb8dd87c83921
parent05cb5bb659a7213fc94c67d5836a9f9fb1517a30 (diff)
downloadbun-9e1745ee1f5844e6ab89135e776552d2ad1ad684.tar.gz
bun-9e1745ee1f5844e6ab89135e776552d2ad1ad684.tar.zst
bun-9e1745ee1f5844e6ab89135e776552d2ad1ad684.zip
Fixes #2676
-rw-r--r--src/bun.js/node/types.zig4
-rw-r--r--test/js/node/path/path.test.js22
2 files changed, 24 insertions, 2 deletions
diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig
index 6bee1243f..2dcbad38f 100644
--- a/src/bun.js/node/types.zig
+++ b/src/bun.js/node/types.zig
@@ -1556,9 +1556,9 @@ pub const Path = struct {
const base_slice = path.slice();
const out = if (isWindows)
- std.fs.path.dirnameWindows(base_slice) orelse "C:\\"
+ std.fs.path.dirnameWindows(base_slice) orelse "."
else
- std.fs.path.dirnamePosix(base_slice) orelse "/";
+ std.fs.path.dirnamePosix(base_slice) orelse ".";
return JSC.ZigString.init(out).toValueGC(globalThis);
}
diff --git a/test/js/node/path/path.test.js b/test/js/node/path/path.test.js
index 86807b325..d2880f124 100644
--- a/test/js/node/path/path.test.js
+++ b/test/js/node/path/path.test.js
@@ -13,6 +13,28 @@ it("should not inherit Object.prototype", () => {
expect(path).not.toHaveProperty("toString");
});
+it("path.dirname", () => {
+ const fixtures = [
+ ["yo", "."],
+ ["/yo", "/"],
+ ["/yo/", "/"],
+ ["/yo/123", "/yo"],
+ [".", "."],
+ ["../", "."],
+ ["../../", ".."],
+ ["../../foo", "../.."],
+ ["../../foo/../", "../../foo"],
+ ["/foo/../", "/foo"],
+ ["../../foo/../bar", "../../foo/.."],
+ ];
+ for (const [input, expected] of fixtures) {
+ expect(path.posix.dirname(input)).toBe(expected);
+ if (process.platform !== "win32") {
+ expect(path.dirname(input)).toBe(expected);
+ }
+ }
+});
+
it("path.basename", () => {
strictEqual(path.basename(file), "path.test.js");
strictEqual(path.basename(file, ".js"), "path.test");