update
This commit is contained in:
62
test/choose-dir-path.test.js
Normal file
62
test/choose-dir-path.test.js
Normal file
@@ -0,0 +1,62 @@
|
||||
'use strict';
|
||||
// 回归测试:选择与当前相同目录的不同大小写形式,应当判为"已是当前数据位置"。
|
||||
//
|
||||
// 被测对象是 lib/same-dir.js —— main.js(settings:choose-dir)与 config.js
|
||||
// (migrateLegacyData)共用它。之前本测试自己内联了一份实现来测,而 main.js
|
||||
// 实际用的是原始 `===`(Windows 大小写不一致时误判为不同目录,自己迁自己),
|
||||
// 测试却一路绿灯 —— 内联副本与生产代码脱节。现在直接测共享逻辑本体。
|
||||
const assert = require('node:assert');
|
||||
const path = require('node:path');
|
||||
const { isSameDir } = require('../lib/same-dir');
|
||||
|
||||
let passed = 0;
|
||||
function check(name, fn) {
|
||||
try { fn(); console.log(' ok -', name); passed++; }
|
||||
catch (e) { console.error(' FAIL -', name, '\n', e.message); process.exitCode = 1; }
|
||||
}
|
||||
|
||||
check('Windows 同目录不同大小写:应判为相同', () => {
|
||||
if (process.platform !== 'win32') {
|
||||
console.log(' (skipped on non-Windows)');
|
||||
return;
|
||||
}
|
||||
assert.strictEqual(
|
||||
isSameDir('C:\\Users\\Foo\\.clipboard-app', 'c:\\users\\foo\\.clipboard-app'),
|
||||
true
|
||||
);
|
||||
});
|
||||
|
||||
check('Windows 反斜杠/正斜杠混用:应判为相同', () => {
|
||||
if (process.platform !== 'win32') {
|
||||
console.log(' (skipped on non-Windows)');
|
||||
return;
|
||||
}
|
||||
// path.resolve 会统一为反斜杠
|
||||
const a = path.resolve('C:/Users/Foo/.clipboard-app');
|
||||
const b = path.resolve('C:\\Users\\Foo\\.clipboard-app');
|
||||
assert.strictEqual(isSameDir(a, b), true);
|
||||
});
|
||||
|
||||
check('Windows 不同盘符:应判为不同', () => {
|
||||
if (process.platform !== 'win32') {
|
||||
console.log(' (skipped on non-Windows)');
|
||||
return;
|
||||
}
|
||||
assert.strictEqual(
|
||||
isSameDir('C:\\foo', 'D:\\foo'),
|
||||
false
|
||||
);
|
||||
});
|
||||
|
||||
check('POSIX 严格比较(不同大小写应判为不同)', () => {
|
||||
if (process.platform === 'win32') {
|
||||
console.log(' (skipped on Windows)');
|
||||
return;
|
||||
}
|
||||
assert.strictEqual(
|
||||
isSameDir('/home/Foo/.clipboard-app', '/home/foo/.clipboard-app'),
|
||||
false
|
||||
);
|
||||
});
|
||||
|
||||
console.log(`\n${passed} checks passed`);
|
||||
Reference in New Issue
Block a user