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;',
|
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',
|
id: 'docs-accept-takes-any-chromium',
|
||||||
guard: 'node --test --test-name-pattern="без названного Chromium" test/docs-accept.test.mjs',
|
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 idOf = (path) => {
|
||||||
const file = String(path).split('/').pop();
|
const file = basename(path);
|
||||||
return DOC_SCREENSHOTS.find((scenario) => scenario.file === file)?.id;
|
return DOC_SCREENSHOTS.find((scenario) => scenario.file === file)?.id;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -112,3 +119,12 @@ test('кандидат чужой версии манифеста не прин
|
|||||||
assert.throws(() => verify(candidate({ version: DOC_SCREENSHOT_VERSION + 1 })),
|
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