From bf73cbe1a4a95cd063c35908f4b793eeedb92ca1 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Sun, 26 Apr 2026 13:33:45 -0400 Subject: [PATCH] test(#2688): add review.models.claude tests for per-runtime review model config (#2748) Adds two tests to review-model-config.test.cjs: - isValidConfigKey accepts review.models.claude (schema validation) - round-trip: config-set then config-get for review.models.claude The dynamic key pattern (^review\.models\.[a-zA-Z0-9_-]+$), the workflow model-read logic in review.md, and the CONFIGURATION.md docs were already in place. Only the claude-specific test coverage was missing. Closes #2688 Co-authored-by: Claude Sonnet 4.6 --- tests/review-model-config.test.cjs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/review-model-config.test.cjs b/tests/review-model-config.test.cjs index a98b42df7..3777108e7 100644 --- a/tests/review-model-config.test.cjs +++ b/tests/review-model-config.test.cjs @@ -44,6 +44,36 @@ describe('review.models. config key', () => { assert.ok(result.success, `config-set should succeed for review.models.codex: ${result.error}`); }); + test('isValidConfigKey accepts review.models.claude (#2688)', () => { + const result = runGsdTools( + ['config-set', 'review.models.claude', 'claude-opus-4-6'], + tmpDir, + { HOME: tmpDir, USERPROFILE: tmpDir } + ); + assert.ok(result.success, `config-set should succeed for review.models.claude: ${result.error}`); + }); + + test('round-trip: review.models.claude config-set then config-get (#2688)', () => { + const setResult = runGsdTools( + ['config-set', 'review.models.claude', 'claude-opus-4-6'], + tmpDir, + { HOME: tmpDir, USERPROFILE: tmpDir } + ); + assert.ok(setResult.success, `config-set failed: ${setResult.error}`); + + const getResult = runGsdTools( + ['config-get', 'review.models.claude', '--raw'], + tmpDir, + { HOME: tmpDir, USERPROFILE: tmpDir } + ); + assert.ok(getResult.success, `config-get failed: ${getResult.error}`); + assert.strictEqual( + getResult.output, + 'claude-opus-4-6', + 'config-get should return the model ID set via config-set' + ); + }); + test('review.model is rejected and suggests review.models.', () => { // The suggestion path goes through validateKnownConfigKeyPath, which is // called before isValidConfigKey in cmdConfigSet.