|
1 | 1 | const t = require('tap')
|
2 | 2 | const stripAbsolutePath = require('../lib/strip-absolute-path.js')
|
| 3 | +const cwd = process.cwd() |
| 4 | +const requireInject = require('require-inject') |
3 | 5 |
|
4 |
| -const cases = { |
5 |
| - '/': ['/', ''], |
6 |
| - '////': ['////', ''], |
7 |
| - 'c:///a/b/c': ['c:///', 'a/b/c'], |
8 |
| - '\\\\foo\\bar\\baz': ['\\\\foo\\bar\\', 'baz'], |
9 |
| - '//foo//bar//baz': ['//', 'foo//bar//baz'], |
10 |
| - 'c:\\c:\\c:\\c:\\\\d:\\e/f/g': ['c:\\c:\\c:\\c:\\\\d:\\', 'e/f/g'], |
11 |
| -} |
| 6 | +t.test('basic', t => { |
| 7 | + const cases = { |
| 8 | + '/': ['/', ''], |
| 9 | + '////': ['////', ''], |
| 10 | + 'c:///a/b/c': ['c:///', 'a/b/c'], |
| 11 | + '\\\\foo\\bar\\baz': ['\\\\foo\\bar\\', 'baz'], |
| 12 | + '//foo//bar//baz': ['//', 'foo//bar//baz'], |
| 13 | + 'c:\\c:\\c:\\c:\\\\d:\\e/f/g': ['c:\\c:\\c:\\c:\\\\d:\\', 'e/f/g'], |
| 14 | + } |
12 | 15 |
|
13 |
| -for (const [input, [root, stripped]] of Object.entries(cases)) |
14 |
| - t.strictSame(stripAbsolutePath(input), [root, stripped], input) |
| 16 | + for (const [input, [root, stripped]] of Object.entries(cases)) |
| 17 | + t.strictSame(stripAbsolutePath(input, cwd), [root, stripped], input) |
| 18 | + t.end() |
| 19 | +}) |
| 20 | + |
| 21 | +t.test('drive-local paths', t => { |
| 22 | + const env = process.env |
| 23 | + t.teardown(() => process.env = env) |
| 24 | + const cwd = 'D:\\safety\\land' |
| 25 | + const realPath = require('path') |
| 26 | + // be windowsy |
| 27 | + const path = { |
| 28 | + ...realPath.win32, |
| 29 | + win32: realPath.win32, |
| 30 | + posix: realPath.posix, |
| 31 | + } |
| 32 | + const stripAbsolutePath = requireInject('../lib/strip-absolute-path.js', { path }) |
| 33 | + const cases = { |
| 34 | + '/': ['/', ''], |
| 35 | + '////': ['////', ''], |
| 36 | + 'c:///a/b/c': ['c:///', 'a/b/c'], |
| 37 | + '\\\\foo\\bar\\baz': ['\\\\foo\\bar\\', 'baz'], |
| 38 | + '//foo//bar//baz': ['//', 'foo//bar//baz'], |
| 39 | + 'c:\\c:\\c:\\c:\\\\d:\\e/f/g': ['c:\\c:\\c:\\c:\\\\d:\\', 'e/f/g'], |
| 40 | + 'c:..\\system\\explorer.exe': ['c:', '..\\system\\explorer.exe'], |
| 41 | + 'd:..\\..\\unsafe\\land': ['d:', '..\\..\\unsafe\\land'], |
| 42 | + 'c:foo': ['c:', 'foo'], |
| 43 | + 'D:mark': ['D:', 'mark'], |
| 44 | + '//?/X:/y/z': ['//?/X:/', 'y/z'], |
| 45 | + '\\\\?\\X:\\y\\z': ['\\\\?\\X:\\', 'y\\z'], |
| 46 | + } |
| 47 | + for (const [input, [root, stripped]] of Object.entries(cases)) { |
| 48 | + if (!t.strictSame(stripAbsolutePath(input, cwd), [root, stripped], input)) |
| 49 | + break |
| 50 | + } |
| 51 | + t.end() |
| 52 | +}) |
0 commit comments