@@ -29,6 +29,15 @@ function genericInvalidArgumentFailure(operationId: CliOperationId) {
2929 } ) ;
3030}
3131
32+ function skippedSuccessScenario ( operationId : CliOperationId ) {
33+ return async ( harness : ConformanceHarness ) : Promise < ScenarioInvocation > => ( {
34+ stateDir : await harness . createStateDir ( `${ operationId } -skipped-success` ) ,
35+ args : [ 'status' ] ,
36+ } ) ;
37+ }
38+
39+ type SuccessScenarioFactory = ( harness : ConformanceHarness ) => Promise < ScenarioInvocation > ;
40+
3241function extractDiscoveryItems ( data : unknown ) : Record < string , unknown > [ ] {
3342 if ( ! data || typeof data !== 'object' ) return [ ] ;
3443
@@ -3020,9 +3029,9 @@ export const SUCCESS_SCENARIOS = {
30203029 await harness . openSessionFixture ( stateDir , 'doc-history-redo' , 'history-redo-session' ) ;
30213030 return { stateDir, args : [ 'history' , 'redo' , '--session' , 'history-redo-session' ] } ;
30223031 } ,
3023- } as const satisfies Record < CliOperationId , ( harness : ConformanceHarness ) => Promise < ScenarioInvocation > > ;
3032+ } as const satisfies Partial < Record < CliOperationId , SuccessScenarioFactory > > ;
30243033
3025- const RUNTIME_CONFORMANCE_SKIP = new Set < CliOperationId > ( [
3034+ const EXPLICIT_RUNTIME_CONFORMANCE_SKIP = new Set < CliOperationId > ( [
30263035 'doc.toc.markEntry' ,
30273036 'doc.toc.unmarkEntry' ,
30283037 'doc.toc.getEntry' ,
@@ -3041,10 +3050,21 @@ const RUNTIME_CONFORMANCE_SKIP = new Set<CliOperationId>([
30413050 'doc.images.removeCaption' ,
30423051] ) ;
30433052
3044- export const OPERATION_SCENARIOS = ( Object . keys ( SUCCESS_SCENARIOS ) as CliOperationId [ ] ) . map ( ( operationId ) => {
3053+ const CANONICAL_OPERATION_IDS = Object . keys ( CLI_OPERATION_COMMAND_KEYS ) as CliOperationId [ ] ;
3054+ const AUTO_SKIPPED_OPERATION_IDS = CANONICAL_OPERATION_IDS . filter (
3055+ ( operationId ) => SUCCESS_SCENARIOS [ operationId ] == null ,
3056+ ) ;
3057+
3058+ const RUNTIME_CONFORMANCE_SKIP = new Set < CliOperationId > ( [
3059+ ...EXPLICIT_RUNTIME_CONFORMANCE_SKIP ,
3060+ ...AUTO_SKIPPED_OPERATION_IDS ,
3061+ ] ) ;
3062+
3063+ export const OPERATION_SCENARIOS = CANONICAL_OPERATION_IDS . map ( ( operationId ) => {
3064+ const success = SUCCESS_SCENARIOS [ operationId ] ?? skippedSuccessScenario ( operationId ) ;
30453065 const scenario : OperationScenario = {
30463066 operationId,
3047- success : SUCCESS_SCENARIOS [ operationId ] ,
3067+ success,
30483068 failure : genericInvalidArgumentFailure ( operationId ) ,
30493069 expectedFailureCodes : [ 'INVALID_ARGUMENT' , 'MISSING_REQUIRED' ] ,
30503070 ...( RUNTIME_CONFORMANCE_SKIP . has ( operationId ) ? { skipRuntimeConformance : true } : { } ) ,
0 commit comments