@@ -71,15 +71,30 @@ suite('Unit Tests - debugging', () => {
7171 assert . equal ( tests . testFunctions . length , 2 , 'Incorrect number of test functions' ) ;
7272 assert . equal ( tests . testSuites . length , 2 , 'Incorrect number of test suites' ) ;
7373
74+ const deferred = createDeferred < string > ( ) ;
7475 const testFunction = [ tests . testFunctions [ 0 ] . testFunction ] ;
75- testManager . runTest ( CommandSource . commandPalette , { testFunction } , false , true ) ;
76- const launched = await mockDebugLauncher . launched ;
77- assert . isTrue ( launched , 'Debugger not launched' ) ;
76+ const runningPromise = testManager . runTest ( CommandSource . commandPalette , { testFunction } , false , true ) ;
77+
78+ // This promise should never resolve nor reject.
79+ runningPromise
80+ . then ( ( ) => deferred . reject ( 'Debugger stopped when it shouldn\'t have' ) )
81+ . catch ( error => deferred . reject ( error ) ) ;
82+
83+ mockDebugLauncher . launched
84+ . then ( ( launched ) => {
85+ if ( launched ) {
86+ deferred . resolve ( '' ) ;
87+ } else {
88+ deferred . reject ( 'Debugger not launched' ) ;
89+ }
90+ } ) . catch ( error => deferred . reject ( error ) ) ;
91+
92+ await deferred . promise ;
7893 }
7994
8095 test ( 'Debugger should start (unittest)' , async ( ) => {
8196 await updateSetting ( 'unitTest.unittestArgs' , [ '-s=./tests' , '-p=test_*.py' ] , rootWorkspaceUri , configTarget ) ;
82- await testStartingDebugger ( 'unittest' ) ;
97+ await testStartingDebugger ( 'unittest' ) ;
8398 } ) ;
8499
85100 test ( 'Debugger should start (pytest)' , async ( ) => {
@@ -105,9 +120,10 @@ suite('Unit Tests - debugging', () => {
105120 const launched = await mockDebugLauncher . launched ;
106121 assert . isTrue ( launched , 'Debugger not launched' ) ;
107122
108- testManager . discoverTests ( CommandSource . commandPalette , true , true , true ) ;
109-
123+ const discoveryPromise = testManager . discoverTests ( CommandSource . commandPalette , true , true , true ) ;
110124 await expect ( runningPromise ) . to . be . rejectedWith ( CANCELLATION_REASON , 'Incorrect reason for ending the debugger' ) ;
125+ ioc . dispose ( ) ; // will cancel test discovery
126+ await expect ( discoveryPromise ) . to . be . rejectedWith ( CANCELLATION_REASON , 'Incorrect reason for ending the debugger' ) ;
111127 }
112128
113129 test ( 'Debugger should stop when user invokes a test discovery (unittest)' , async ( ) => {
@@ -151,6 +167,7 @@ suite('Unit Tests - debugging', () => {
151167 runningPromise
152168 . then ( ( ) => 'Debugger stopped when it shouldn\'t have' )
153169 . catch ( ( ) => 'Debugger crashed when it shouldn\'t have' )
170+ // tslint:disable-next-line: no-floating-promises
154171 . then ( error => {
155172 deferred . reject ( error ) ;
156173 } ) ;
0 commit comments