diff options
author | 2022-02-02 18:12:30 -0800 | |
---|---|---|
committer | 2022-02-02 18:12:30 -0800 | |
commit | 94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a (patch) | |
tree | fa7686cad60464bc47889c67a6ecce9ae2f2fb9f | |
parent | 1a4ccd3f5c2ef273bd5307d9c8939177bdc310cc (diff) | |
download | bun-94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a.tar.gz bun-94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a.tar.zst bun-94cbfa45792342105fb1a5b69cafc3a8f4a1ba7a.zip |
Begin porting path-browserify tests
-rw-r--r-- | integration/bunjs-only-snippets/path.test.js | 184 |
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]); + }); +}); |