mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-04 13:48:57 +00:00
fix(ci): parse beta-derived docs CSV lists (#783)
Keep repeated --expect-change flags compatible while accepting the comma-separated workflow input and ignoring whitespace, empty values, and duplicates. Issue: #783 User-Visible: no
This commit is contained in:
@@ -118,10 +118,11 @@ export function acceptedDocsManifest({
|
||||
};
|
||||
}
|
||||
|
||||
const list = (argv, name) => argv
|
||||
export const cliList = (argv, name) => [...new Set(argv
|
||||
.filter((arg) => arg.startsWith(`--${name}=`))
|
||||
.map((arg) => arg.slice(name.length + 3))
|
||||
.filter(Boolean);
|
||||
.flatMap((arg) => arg.slice(name.length + 3).split(','))
|
||||
.map((value) => value.trim())
|
||||
.filter(Boolean))];
|
||||
|
||||
/**
|
||||
* Манифест после приёмки «кадры те же попиксельно» (#512): от кандидата —
|
||||
@@ -275,9 +276,10 @@ async function main(argv) {
|
||||
if (existsSync(onDisk)) committed[scenario.id] = sha256(readFileSync(onDisk));
|
||||
}
|
||||
|
||||
const declared = list(argv, 'expect-change');
|
||||
const declared = cliList(argv, 'expect-change');
|
||||
const skipWitnesses = argv.includes('--no-witnesses');
|
||||
const skipReason = (list(argv, 'reason')[0] || '').trim();
|
||||
const skipReason = (argv.find((arg) => arg.startsWith('--reason='))
|
||||
?.slice('--reason='.length) || '').trim();
|
||||
const decision = docsAcceptancePlan({
|
||||
ids, committed, candidate, declared, skipWitnesses, skipReason,
|
||||
});
|
||||
|
||||
@@ -6,7 +6,7 @@ import { readFileSync } from 'node:fs';
|
||||
import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
|
||||
import { tmpdir } from 'node:os';
|
||||
import { join } from 'node:path';
|
||||
import { acceptIdentical, acceptedDocsManifest, identicalDecision, identicalDocsManifest, verifyDocsCandidate } from '../scripts/docs-accept.mjs';
|
||||
import { acceptIdentical, acceptedDocsManifest, cliList, identicalDecision, identicalDocsManifest, verifyDocsCandidate } from '../scripts/docs-accept.mjs';
|
||||
import { DOC_SCREENSHOT_VERSION, DOC_SCREENSHOTS } from '../demo/docs/screenshots.mjs';
|
||||
|
||||
// Приёмка — единственное место, где картинки попадают в репозиторий, поэтому
|
||||
@@ -19,6 +19,15 @@ const FINGERPRINT = 'f'.repeat(64);
|
||||
const SCRIPT_SHA = 'a'.repeat(64);
|
||||
const bytesOf = (id) => Buffer.from(`картинка ${id}`);
|
||||
|
||||
test('beta-derived: docs expect-change accepts CSV and repeated flags', () => {
|
||||
assert.deepEqual(cliList([
|
||||
'--expect-change=view-desktop, view-touch',
|
||||
'--expect-change=view-desktop',
|
||||
'--expect-change=',
|
||||
'--other=ignored',
|
||||
], 'expect-change'), ['view-desktop', 'view-touch']);
|
||||
});
|
||||
|
||||
const candidate = (overrides = {}) => {
|
||||
const scenarios = {};
|
||||
for (const scenario of DOC_SCREENSHOTS) {
|
||||
|
||||
Reference in New Issue
Block a user