aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-02-02 18:12:30 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-02-02 18:12:30 -0800
commit94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a (patch)
treefa7686cad60464bc47889c67a6ecce9ae2f2fb9f
parent1a4ccd3f5c2ef273bd5307d9c8939177bdc310cc (diff)
downloadbun-94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a.tar.gz
bun-94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a.tar.zst
bun-94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a.zip
Begin porting path-browserify tests
-rw-r--r--integration/bunjs-only-snippets/path.test.js184
1 files changed, 184 insertions, 0 deletions
diff --git a/integration/bunjs-only-snippets/path.test.js b/integration/bunjs-only-snippets/path.test.js
new file mode 100644
index 000000000..7f4708b31
--- /dev/null
+++ b/integration/bunjs-only-snippets/path.test.js
@@ -0,0 +1,184 @@
+import { describe, it, expect } from "bun:test";
+import * as path from "node:path";
+
+const __filename = import.meta.file;
+
+describe("path.basename", () => {
+ it("basics", () => {
+ expect(path.basename(__filename)).toBe("path.test.js");
+ expect(path.basename(__filename, ".js")).toBe("path.test");
+ expect(path.basename(".js", ".js")).toBe("");
+ expect(path.basename("")).toBe("");
+ expect(path.basename("/dir/basename.ext")).toBe("basename.ext");
+ expect(path.basename("/basename.ext")).toBe("basename.ext");
+ expect(path.basename("basename.ext")).toBe("basename.ext");
+ expect(path.basename("basename.ext/")).toBe("basename.ext");
+ expect(path.basename("basename.ext//")).toBe("basename.ext");
+ expect(path.basename("aaa/bbb", "/bbb")).toBe("bbb");
+ expect(path.basename("aaa/bbb", "a/bbb")).toBe("bbb");
+ expect(path.basename("aaa/bbb", "bbb")).toBe("bbb");
+ expect(path.basename("aaa/bbb//", "bbb")).toBe("bbb");
+ expect(path.basename("aaa/bbb", "bb")).toBe("b");
+ expect(path.basename("aaa/bbb", "b")).toBe("bb");
+ expect(path.basename("/aaa/bbb", "/bbb")).toBe("bbb");
+ expect(path.basename("/aaa/bbb", "a/bbb")).toBe("bbb");
+ expect(path.basename("/aaa/bbb", "bbb")).toBe("bbb");
+ expect(path.basename("/aaa/bbb//", "bbb")).toBe("bbb");
+ expect(path.basename("/aaa/bbb", "bb")).toBe("b");
+ expect(path.basename("/aaa/bbb", "b")).toBe("bb");
+ expect(path.basename("/aaa/bbb")).toBe("bbb");
+ expect(path.basename("/aaa/")).toBe("aaa");
+ expect(path.basename("/aaa/b")).toBe("b");
+ expect(path.basename("/a/b")).toBe("b");
+ expect(path.basename("//a")).toBe("a");
+ });
+
+ it("On unix a backslash is just treated as any other character.", () => {
+ expect(path.posix.basename("\\dir\\basename.ext")).toBe(
+ "\\dir\\basename.ext"
+ );
+ expect(path.posix.basename("\\basename.ext")).toBe("\\basename.ext");
+ expect(path.posix.basename("basename.ext")).toBe("basename.ext");
+ expect(path.posix.basename("basename.ext\\")).toBe("basename.ext\\");
+ expect(path.posix.basename("basename.ext\\\\")).toBe("basename.ext\\\\");
+ expect(path.posix.basename("foo")).toBe("foo");
+ });
+
+ it("POSIX filenames may include control characters", () => {
+ // c.f. http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html
+ var controlCharFilename = "Icon" + String.fromCharCode(13);
+ expect(path.posix.basename("/a/b/" + controlCharFilename)).toBe(
+ controlCharFilename
+ );
+ });
+});
+
+it("path.posix.extname", () => {
+ var pairs = [
+ [__filename, ".js"],
+ ["", ""],
+ ["/path/to/file", ""],
+ ["/path/to/file.ext", ".ext"],
+ ["/path.to/file.ext", ".ext"],
+ ["/path.to/file", ""],
+ ["/path.to/.file", ""],
+ ["/path.to/.file.ext", ".ext"],
+ ["/path/to/f.ext", ".ext"],
+ ["/path/to/..ext", ".ext"],
+ ["/path/to/..", ""],
+ ["file", ""],
+ ["file.ext", ".ext"],
+ [".file", ""],
+ [".file.ext", ".ext"],
+ ["/file", ""],
+ ["/file.ext", ".ext"],
+ ["/.file", ""],
+ ["/.file.ext", ".ext"],
+ [".path/file.ext", ".ext"],
+ ["file.ext.ext", ".ext"],
+ ["file.", "."],
+ [".", ""],
+ ["./", ""],
+ [".file.ext", ".ext"],
+ [".file", ""],
+ [".file.", "."],
+ [".file..", "."],
+ ["..", ""],
+ ["../", ""],
+ ["..file.ext", ".ext"],
+ ["..file", ".file"],
+ ["..file.", "."],
+ ["..file..", "."],
+ ["...", "."],
+ ["...ext", ".ext"],
+ ["....", "."],
+ ["file.ext/", ".ext"],
+ ["file.ext//", ".ext"],
+ ["file/", ""],
+ ["file//", ""],
+ ["file./", "."],
+ ["file.//", "."],
+ ];
+
+ pairs.forEach(function (p) {
+ var input = p[0];
+ var expected = p[1];
+ expect(expected).toBe(path.posix.extname(input));
+ });
+});
+
+it("path.posix.dirname", function (t) {
+ expect(path.posix.dirname("/a/b/")).toBe("a");
+ expect(path.posix.dirname("/a/b")).toBe("a");
+ expect(path.posix.dirname("/a")).toBe("/");
+ expect(path.posix.dirname("")).toBe(".");
+ expect(path.posix.dirname("/")).toBe("/");
+ expect(path.posix.dirname("//a")).toBe("//");
+ expect(path.posix.dirname("foo")).toBe(".");
+});
+
+it("path.posix.isAbsolute", () => {
+ expect(path.posix.isAbsolute("/home/foo")).toBe(true);
+ expect(path.posix.isAbsolute("/home/foo/..")).toBe(true);
+ expect(path.posix.isAbsolute("bar/")).toBe(false);
+ expect(path.posix.isAbsolute("./baz")).toBe(false);
+});
+
+tape("path.posix.join", () => {
+ var joinTests =
+ // arguments result
+ [
+ [[".", "x/b", "..", "/b/c.js"], "x/b/c.js"],
+ [[], "."],
+ [["/.", "x/b", "..", "/b/c.js"], "/x/b/c.js"],
+ [["/foo", "../../../bar"], "/bar"],
+ [["foo", "../../../bar"], "../../bar"],
+ [["foo/", "../../../bar"], "../../bar"],
+ [["foo/x", "../../../bar"], "../bar"],
+ [["foo/x", "./bar"], "foo/x/bar"],
+ [["foo/x/", "./bar"], "foo/x/bar"],
+ [["foo/x/", ".", "bar"], "foo/x/bar"],
+ [["./"], "./"],
+ [[".", "./"], "./"],
+ [[".", ".", "."], "."],
+ [[".", "./", "."], "."],
+ [[".", "/./", "."], "."],
+ [[".", "/////./", "."], "."],
+ [["."], "."],
+ [["", "."], "."],
+ [["", "foo"], "foo"],
+ [["foo", "/bar"], "foo/bar"],
+ [["", "/foo"], "/foo"],
+ [["", "", "/foo"], "/foo"],
+ [["", "", "foo"], "foo"],
+ [["foo", ""], "foo"],
+ [["foo/", ""], "foo/"],
+ [["foo", "", "/bar"], "foo/bar"],
+ [["./", "..", "/foo"], "../foo"],
+ [["./", "..", "..", "/foo"], "../../foo"],
+ [[".", "..", "..", "/foo"], "../../foo"],
+ [["", "..", "..", "/foo"], "../../foo"],
+ [["/"], "/"],
+ [["/", "."], "/"],
+ [["/", ".."], "/"],
+ [["/", "..", ".."], "/"],
+ [[""], "."],
+ [["", ""], "."],
+ [[" /foo"], " /foo"],
+ [[" ", "foo"], " /foo"],
+ [[" ", "."], " "],
+ [[" ", "/"], " /"],
+ [[" ", ""], " "],
+ [["/", "foo"], "/foo"],
+ [["/", "/foo"], "/foo"],
+ [["/", "//foo"], "/foo"],
+ [["/", "", "/foo"], "/foo"],
+ [["", "/", "foo"], "/foo"],
+ [["", "/", "/foo"], "/foo"],
+ ];
+
+ joinTests.forEach(() => {
+ var actual = path.posix.join.apply(null, p[0]);
+ expect(actual).toBe(p[1]);
+ });
+});