@@ -442,23 +442,28 @@ public async Task CancelledWaitingForOther(CancellationToken ct)
442
442
[ CancelAfter ( 30_000 ) ]
443
443
public async Task CancelledInner ( CancellationToken ct )
444
444
{
445
+ var httpCts = CancellationTokenSource . CreateLinkedTokenSource ( ct ) ;
446
+ var taskCts = CancellationTokenSource . CreateLinkedTokenSource ( ct ) ;
445
447
using var httpServer = new TestHttpServer ( async ctx =>
446
448
{
447
449
ctx . Response . StatusCode = 200 ;
448
- await ctx . Response . OutputStream . WriteAsync ( "test"u8 . ToArray ( ) , ct ) ;
449
- await ctx . Response . OutputStream . FlushAsync ( ct ) ;
450
- await Task . Delay ( TimeSpan . FromSeconds ( 5 ) , ct ) ;
450
+ await ctx . Response . OutputStream . WriteAsync ( "test"u8 . ToArray ( ) , httpCts . Token ) ;
451
+ await ctx . Response . OutputStream . FlushAsync ( httpCts . Token ) ;
452
+ // wait up to 5 seconds.
453
+ await Task . Delay ( TimeSpan . FromSeconds ( 5 ) , httpCts . Token ) ;
451
454
} ) ;
452
455
var url = new Uri ( httpServer . BaseUrl + "/test" ) ;
453
456
var destPath = Path . Combine ( _tempDir , "test" ) ;
454
457
455
458
var manager = new Downloader ( NullLogger < Downloader > . Instance ) ;
456
459
// The "inner" Task should fail.
457
- var smallerCt = new CancellationTokenSource ( TimeSpan . FromSeconds ( 1 ) ) . Token ;
460
+ var taskCt = taskCts . Token ;
458
461
var dlTask = await manager . StartDownloadAsync ( new HttpRequestMessage ( HttpMethod . Get , url ) , destPath ,
459
- NullDownloadValidator . Instance , smallerCt ) ;
462
+ NullDownloadValidator . Instance , taskCt ) ;
463
+ await taskCts . CancelAsync ( ) ;
460
464
var ex = Assert . ThrowsAsync < TaskCanceledException > ( async ( ) => await dlTask . Task ) ;
461
- Assert . That ( ex . CancellationToken , Is . EqualTo ( smallerCt ) ) ;
465
+ Assert . That ( ex . CancellationToken , Is . EqualTo ( taskCt ) ) ;
466
+ await httpCts . CancelAsync ( ) ;
462
467
}
463
468
464
469
[ Test ( Description = "Validation failure" ) ]
0 commit comments