@@ -13,20 +13,22 @@ interface Callbacks {
1313 onFail ( position : T . Position , failSummary : T . TestFail ) : void
1414 onRun ( position : T . Position ) : void
1515 onError ( position : T . Position ) : void
16+ onLoadSubtasks ( { summary } : { summary : { [ testName : string ] : boolean } } ) : void
1617}
1718
1819const failChannelName = 'CodeRoad (Tests)'
1920const logChannelName = 'CodeRoad (Logs)'
2021
2122interface TestRunnerParams {
2223 position : T . Position
24+ subtasks ?: boolean
2325 onSuccess ?: ( ) => void
2426}
2527
2628const createTestRunner = ( data : TT . Tutorial , callbacks : Callbacks ) => {
2729 const testRunnerConfig = data . config . testRunner
2830 const testRunnerFilterArg = testRunnerConfig . args ?. filter
29- return async ( { position, onSuccess } : TestRunnerParams ) : Promise < void > => {
31+ return async ( { position, onSuccess, subtasks } : TestRunnerParams ) : Promise < void > => {
3032 const startTime = throttle ( )
3133 // throttle time early
3234 if ( ! startTime ) {
@@ -36,7 +38,9 @@ const createTestRunner = (data: TT.Tutorial, callbacks: Callbacks) => {
3638 logger ( '------------------- RUN TEST -------------------' )
3739
3840 // flag as running
39- callbacks . onRun ( position )
41+ if ( ! subtasks ) {
42+ callbacks . onRun ( position )
43+ }
4044
4145 let result : { stdout : string | undefined ; stderr : string | undefined }
4246 try {
@@ -79,6 +83,12 @@ const createTestRunner = (data: TT.Tutorial, callbacks: Callbacks) => {
7983
8084 const tap : ParserOutput = parser ( stdout || '' )
8185
86+ if ( subtasks ) {
87+ callbacks . onLoadSubtasks ( { summary : tap . summary } )
88+ // exit early
89+ return
90+ }
91+
8292 addOutput ( { channel : logChannelName , text : tap . logs . join ( '\n' ) , show : false } )
8393
8494 if ( stderr ) {
@@ -105,7 +115,9 @@ const createTestRunner = (data: TT.Tutorial, callbacks: Callbacks) => {
105115 // PASS
106116 if ( tap . ok ) {
107117 clearOutput ( failChannelName )
118+
108119 callbacks . onSuccess ( position )
120+
109121 if ( onSuccess ) {
110122 onSuccess ( )
111123 }
0 commit comments