Accept undefined as explicit second argument for path.*.basename (#12609)

This commit is contained in:
190n
2024-07-16 16:37:21 -07:00
committed by GitHub
parent f05f13780e
commit ff0dc62314
2 changed files with 3 additions and 1 deletions

View File

@@ -453,7 +453,7 @@ pub inline fn basenameJS_T(comptime T: type, globalObject: *JSC.JSGlobalObject,
}
pub fn basename(globalObject: *JSC.JSGlobalObject, isWindows: bool, args_ptr: [*]JSC.JSValue, args_len: u16) callconv(JSC.conv) JSC.JSValue {
const suffix_ptr: ?JSC.JSValue = if (args_len > 1) args_ptr[1] else null;
const suffix_ptr: ?JSC.JSValue = if (args_len > 1 and args_ptr[1] != .undefined) args_ptr[1] else null;
if (suffix_ptr) |_suffix_ptr| {
// Supress exeption in zig. It does globalThis.vm().throwError() in JS land.

View File

@@ -45,6 +45,7 @@ describe("path.dirname", () => {
assert.strictEqual(path.win32.basename("basename.ext\\"), "basename.ext");
assert.strictEqual(path.win32.basename("basename.ext\\\\"), "basename.ext");
assert.strictEqual(path.win32.basename("foo"), "foo");
assert.strictEqual(path.win32.basename("foo", undefined), "foo");
assert.strictEqual(path.win32.basename("aaa\\bbb", "\\bbb"), "bbb");
assert.strictEqual(path.win32.basename("aaa\\bbb", "a\\bbb"), "bbb");
assert.strictEqual(path.win32.basename("aaa\\bbb", "bbb"), "bbb");
@@ -72,6 +73,7 @@ describe("path.dirname", () => {
assert.strictEqual(path.posix.basename("basename.ext\\"), "basename.ext\\");
assert.strictEqual(path.posix.basename("basename.ext\\\\"), "basename.ext\\\\");
assert.strictEqual(path.posix.basename("foo"), "foo");
assert.strictEqual(path.posix.basename("foo", undefined), "foo");
});
test("posix with control characters", () => {