migrate deno_path to deno_std (denoland/deno_std#26)

Previously https://github.com/zhmushan/deno_path

Original: 1a35f9daf5
This commit is contained in:
木杉 2018-12-19 10:29:39 +08:00 committed by Ryan Dahl
parent 3c8f564ab8
commit 2d58da520f
16 changed files with 2292 additions and 3 deletions

89
path/extname_test.ts Normal file
View file

@ -0,0 +1,89 @@
// Copyright the Browserify authors. MIT License.
// Ported from https://github.com/browserify/path-browserify/
import { test, assertEqual } from "https://deno.land/x/testing/testing.ts";
import * as path from "./index";
const slashRE = /\//g;
const pairs = [
["", ""],
["/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.//", "."]
];
test(function extname() {
pairs.forEach(function(p) {
const input = p[0];
const expected = p[1];
assertEqual(expected, path.posix.extname(input));
});
// On *nix, backslash is a valid name component like any other character.
assertEqual(path.posix.extname(".\\"), "");
assertEqual(path.posix.extname("..\\"), ".\\");
assertEqual(path.posix.extname("file.ext\\"), ".ext\\");
assertEqual(path.posix.extname("file.ext\\\\"), ".ext\\\\");
assertEqual(path.posix.extname("file\\"), "");
assertEqual(path.posix.extname("file\\\\"), "");
assertEqual(path.posix.extname("file.\\"), ".\\");
assertEqual(path.posix.extname("file.\\\\"), ".\\\\");
});
test(function extnameWin32() {
pairs.forEach(function(p) {
const input = p[0].replace(slashRE, "\\");
const expected = p[1];
assertEqual(expected, path.win32.extname(input));
assertEqual(expected, path.win32.extname("C:" + input));
});
// On Windows, backslash is a path separator.
assertEqual(path.win32.extname(".\\"), "");
assertEqual(path.win32.extname("..\\"), "");
assertEqual(path.win32.extname("file.ext\\"), ".ext");
assertEqual(path.win32.extname("file.ext\\\\"), ".ext");
assertEqual(path.win32.extname("file\\"), "");
assertEqual(path.win32.extname("file\\\\"), "");
assertEqual(path.win32.extname("file.\\"), ".");
assertEqual(path.win32.extname("file.\\\\"), ".");
});