Skip to content

Commit efdd0f3

Browse files
committed
fix: reject array defaults in harness config
1 parent 8067503 commit efdd0f3

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

scripts/__tests__/rslib-harness.test.mjs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,31 @@ export default {
418418
});
419419
});
420420

421+
test('resolveProjects rejects defaults array shape', async () => {
422+
await withTempDir(async (root) => {
423+
writeRslibProject(root, 'packages/pkg-a', 'pkg-a');
424+
writeFile(
425+
join(root, 'rslib.harness.config.mjs'),
426+
`
427+
export default {
428+
defaults: [],
429+
projects: ['packages/*'],
430+
};
431+
`,
432+
);
433+
434+
await assert.rejects(
435+
() =>
436+
resolveProjects({
437+
harnessConfigPath: join(root, 'rslib.harness.config.mjs'),
438+
rootDir: root,
439+
projectFilters: [],
440+
}),
441+
/"defaults" must be an object/,
442+
);
443+
});
444+
});
445+
421446
test('resolveProjects validates top-level root as string', async () => {
422447
await withTempDir(async (root) => {
423448
writeRslibProject(root, 'packages/pkg-a', 'pkg-a');

scripts/rslib-harness.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,11 @@ function validateHarnessConfigShape(config, configPath) {
370370
}
371371

372372
if (config.defaults !== undefined) {
373-
if (!config.defaults || typeof config.defaults !== 'object') {
373+
if (
374+
!config.defaults ||
375+
typeof config.defaults !== 'object' ||
376+
Array.isArray(config.defaults)
377+
) {
374378
throw new Error(
375379
`Invalid harness config at ${configPath}: "defaults" must be an object.`,
376380
);

0 commit comments

Comments
 (0)