summaryrefslogtreecommitdiff
path: root/std/path/parse_format_test.ts
diff options
context:
space:
mode:
author木杉 <zhmushan@qq.com>2020-07-20 00:13:05 +0800
committerGitHub <noreply@github.com>2020-07-19 12:13:05 -0400
commit53adde866dd399aa2509d14508642fce37afb8f5 (patch)
treeb78e3ce6ef3b1d69ff1529c9e49513a51b6bad3e /std/path/parse_format_test.ts
parentc587450cd458514d8ae17d1fb649b1d36bb4649e (diff)
refactor(std/path): enrich the types in parse_format_test (#6803)
Diffstat (limited to 'std/path/parse_format_test.ts')
-rw-r--r--std/path/parse_format_test.ts72
1 files changed, 39 insertions, 33 deletions
diff --git a/std/path/parse_format_test.ts b/std/path/parse_format_test.ts
index 80692a84d..1b34ddc29 100644
--- a/std/path/parse_format_test.ts
+++ b/std/path/parse_format_test.ts
@@ -1,11 +1,14 @@
// Copyright the Browserify authors. MIT License.
// Ported from https://github.com/browserify/path-browserify/
+import type { FormatInputPathObject, ParsedPath } from "./mod.ts";
+
import { assertEquals } from "../testing/asserts.ts";
-import * as path from "./mod.ts";
+import { win32, posix } from "./mod.ts";
-// TODO(kt3k): fix any types in this file
+type FormatTestCase = [FormatInputPathObject, string];
+type ParseTestCase = [string, ParsedPath];
-const winPaths = [
+const winPaths: Array<[string, string]> = [
// [path, root]
["C:\\path\\dir\\index.html", "C:\\"],
["C:\\another_path\\DIR\\1\\2\\33\\\\index", "C:\\"],
@@ -32,9 +35,11 @@ const winPaths = [
["\\\\?\\UNC\\server\\share", "\\\\?\\UNC\\"],
];
-const winSpecialCaseParseTests = [["/foo/bar", { root: "/" }]];
+const winSpecialCaseParseTests: ParseTestCase[] = [
+ ["/foo/bar", { root: "/", dir: "/foo", base: "bar", ext: "", name: "bar" }],
+];
-const winSpecialCaseFormatTests = [
+const winSpecialCaseFormatTests: FormatTestCase[] = [
[{ dir: "some\\dir" }, "some\\dir\\"],
[{ base: "index.html" }, "index.html"],
[{ root: "C:\\" }, "C:\\"],
@@ -44,7 +49,7 @@ const winSpecialCaseFormatTests = [
[{}, ""],
];
-const unixPaths = [
+const unixPaths: Array<[string, string]> = [
// [path, root]
["/home/user/dir/file.txt", "/"],
["/home/user/a dir/another File.zip", "/"],
@@ -68,7 +73,7 @@ const unixPaths = [
["/foo/bar.baz", "/"],
];
-const unixSpecialCaseFormatTests = [
+const unixSpecialCaseFormatTests: FormatTestCase[] = [
[{ dir: "some/dir" }, "some/dir/"],
[{ base: "index.html" }, "index.html"],
[{ root: "/" }, "/"],
@@ -78,10 +83,11 @@ const unixSpecialCaseFormatTests = [
[{}, ""],
];
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function checkParseFormat(path: any, paths: any): void {
- paths.forEach(function (p: Array<Record<string, unknown>>) {
- const element = p[0];
+function checkParseFormat(
+ path: typeof win32 | typeof posix,
+ testCases: Array<[string, string]>,
+): void {
+ testCases.forEach(([element, root]) => {
const output = path.parse(element);
assertEquals(typeof output.root, "string");
assertEquals(typeof output.dir, "string");
@@ -89,50 +95,50 @@ function checkParseFormat(path: any, paths: any): void {
assertEquals(typeof output.ext, "string");
assertEquals(typeof output.name, "string");
assertEquals(path.format(output), element);
- assertEquals(output.rooroot, undefined);
+ assertEquals(output.root, root);
assertEquals(output.dir, output.dir ? path.dirname(element) : "");
assertEquals(output.base, path.basename(element));
+ assertEquals(output.ext, path.extname(element));
});
}
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function checkSpecialCaseParseFormat(path: any, testCases: any): void {
- testCases.forEach(function (testCase: Array<Record<string, unknown>>) {
- const element = testCase[0];
- const expect = testCase[1];
- const output = path.parse(element);
- Object.keys(expect).forEach(function (key) {
- assertEquals(output[key], expect[key]);
- });
+function checkSpecialCaseParseFormat(
+ path: typeof win32 | typeof posix,
+ testCases: ParseTestCase[],
+): void {
+ testCases.forEach(([element, expect]) => {
+ assertEquals(path.parse(element), expect);
});
}
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-function checkFormat(path: any, testCases: unknown[][]): void {
- testCases.forEach(function (testCase) {
+function checkFormat(
+ path: typeof win32 | typeof posix,
+ testCases: FormatTestCase[],
+): void {
+ testCases.forEach((testCase) => {
assertEquals(path.format(testCase[0]), testCase[1]);
});
}
Deno.test("parseWin32", function () {
- checkParseFormat(path.win32, winPaths);
- checkSpecialCaseParseFormat(path.win32, winSpecialCaseParseTests);
+ checkParseFormat(win32, winPaths);
+ checkSpecialCaseParseFormat(win32, winSpecialCaseParseTests);
});
Deno.test("parse", function () {
- checkParseFormat(path.posix, unixPaths);
+ checkParseFormat(posix, unixPaths);
});
Deno.test("formatWin32", function () {
- checkFormat(path.win32, winSpecialCaseFormatTests);
+ checkFormat(win32, winSpecialCaseFormatTests);
});
Deno.test("format", function () {
- checkFormat(path.posix, unixSpecialCaseFormatTests);
+ checkFormat(posix, unixSpecialCaseFormatTests);
});
// Test removal of trailing path separators
-const windowsTrailingTests = [
+const windowsTrailingTests: ParseTestCase[] = [
[".\\", { root: "", dir: "", base: ".", ext: "", name: "." }],
["\\\\", { root: "\\", dir: "\\", base: "", ext: "", name: "" }],
["\\\\", { root: "\\", dir: "\\", base: "", ext: "", name: "" }],
@@ -152,7 +158,7 @@ const windowsTrailingTests = [
],
];
-const posixTrailingTests = [
+const posixTrailingTests: ParseTestCase[] = [
["./", { root: "", dir: "", base: ".", ext: "", name: "." }],
["//", { root: "/", dir: "/", base: "", ext: "", name: "" }],
["///", { root: "/", dir: "/", base: "", ext: "", name: "" }],
@@ -165,7 +171,7 @@ const posixTrailingTests = [
Deno.test("parseTrailingWin32", function () {
windowsTrailingTests.forEach(function (p) {
- const actual = path.win32.parse(p[0] as string);
+ const actual = win32.parse(p[0]);
const expected = p[1];
assertEquals(actual, expected);
});
@@ -173,7 +179,7 @@ Deno.test("parseTrailingWin32", function () {
Deno.test("parseTrailing", function () {
posixTrailingTests.forEach(function (p) {
- const actual = path.posix.parse(p[0] as string);
+ const actual = posix.parse(p[0]);
const expected = p[1];
assertEquals(actual, expected);
});