mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
test: read the fixture basename on either separator
Issue: #247 User-Visible: no
This commit is contained in:
@@ -122,6 +122,19 @@ export const MUTANTS = [
|
||||
replace: ' const span = centre;',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'docs-fixture-splits-posix-only',
|
||||
guard: 'node --test --test-name-pattern="не зависит от разделителя платформы" '
|
||||
+ 'test/docs-accept.test.mjs',
|
||||
because: 'фикстура приёмки разбирала путь только по «/» и на Windows отдавала весь путь '
|
||||
+ 'вместо имени файла: три проверки краснели на верной реализации, а Linux этого не '
|
||||
+ 'видел вовсе — регресс обязан краснеть на любой платформе (#247)',
|
||||
patches: [{
|
||||
file: 'test/docs-accept.test.mjs',
|
||||
find: "export const basename = (path) => String(path).split(/[\\\\/]/).filter(Boolean).pop() ?? '';",
|
||||
replace: "export const basename = (path) => String(path).split('/').pop() ?? '';",
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'docs-accept-takes-any-chromium',
|
||||
guard: 'node --test --test-name-pattern="без названного Chromium" test/docs-accept.test.mjs',
|
||||
|
||||
@@ -39,8 +39,15 @@ const candidate = (overrides = {}) => {
|
||||
};
|
||||
};
|
||||
|
||||
// Разделитель зависит от платформы, а фикстура — нет (#247). `resolve()` на
|
||||
// Windows отдаёт `C:\\artifact\\01-view-desktop.png`, и разбор только по «/»
|
||||
// возвращал весь путь целиком: `idOf` давал undefined, синтетический хэш не
|
||||
// сходился, и три проверки краснели на верной реализации. Linux этого не ловил
|
||||
// вовсе — поэтому ниже отдельный тест на сам разбор.
|
||||
export const basename = (path) => String(path).split(/[\\/]/).filter(Boolean).pop() ?? '';
|
||||
|
||||
const idOf = (path) => {
|
||||
const file = String(path).split('/').pop();
|
||||
const file = basename(path);
|
||||
return DOC_SCREENSHOTS.find((scenario) => scenario.file === file)?.id;
|
||||
};
|
||||
|
||||
@@ -112,3 +119,12 @@ test('кандидат чужой версии манифеста не прин
|
||||
assert.throws(() => verify(candidate({ version: DOC_SCREENSHOT_VERSION + 1 })),
|
||||
/версии/);
|
||||
});
|
||||
|
||||
test('разбор пути фикстуры не зависит от разделителя платформы (#247)', () => {
|
||||
// Тест существует, чтобы регресс к `split('/')` краснел и на Linux: сам по
|
||||
// себе набор проверок выше на POSIX-путях проходит при любом разборе.
|
||||
assert.equal(basename('C:\\artifact\\01-view-desktop.png'), '01-view-desktop.png');
|
||||
assert.equal(basename('/artifact/01-view-desktop.png'), '01-view-desktop.png');
|
||||
assert.equal(basename('C:/artifact/sub\\02-view-touch.png'), '02-view-touch.png');
|
||||
assert.equal(basename('01-view-desktop.png'), '01-view-desktop.png');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user