diff --git a/src/vs/base/test/common/event.test.ts b/src/vs/base/test/common/event.test.ts index 79816c693e2..d87a96adda5 100644 --- a/src/vs/base/test/common/event.test.ts +++ b/src/vs/base/test/common/event.test.ts @@ -9,6 +9,7 @@ import { errorHandler, setUnexpectedErrorHandler } from 'vs/base/common/errors'; import { AsyncEmitter, DebounceEmitter, Emitter, Event, EventBufferer, EventMultiplexer, IWaitUntil, MicrotaskEmitter, PauseableEmitter, Relay } from 'vs/base/common/event'; import { DisposableStore, IDisposable, isDisposable, setDisposableTracker, toDisposable } from 'vs/base/common/lifecycle'; import { observableValue, transaction } from 'vs/base/common/observable'; +import { runWithFakedTimers } from 'vs/base/test/common/timeTravelScheduler'; import { DisposableTracker, ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils'; namespace Samples { @@ -317,26 +318,29 @@ suite('Event', function () { }); test('DebounceEmitter', async function () { - let callCount = 0; - let sum = 0; - const emitter = new DebounceEmitter({ - merge: arr => { - callCount += 1; - return arr.reduce((p, c) => p + c); - } + return runWithFakedTimers({}, async function () { + + let callCount = 0; + let sum = 0; + const emitter = new DebounceEmitter({ + merge: arr => { + callCount += 1; + return arr.reduce((p, c) => p + c); + } + }); + + emitter.event(e => { sum = e; }); + + const p = Event.toPromise(emitter.event); + + emitter.fire(1); + emitter.fire(2); + + await p; + + assert.strictEqual(callCount, 1); + assert.strictEqual(sum, 3); }); - - emitter.event(e => { sum = e; }); - - const p = Event.toPromise(emitter.event); - - emitter.fire(1); - emitter.fire(2); - - await p; - - assert.strictEqual(callCount, 1); - assert.strictEqual(sum, 3); }); test('Microtask Emitter', (done) => { @@ -410,59 +414,64 @@ suite('AsyncEmitter', function () { }); test('sequential delivery', async function () { + return runWithFakedTimers({}, async function () { - interface E extends IWaitUntil { - foo: boolean; - } + interface E extends IWaitUntil { + foo: boolean; + } - let globalState = 0; - const emitter = new AsyncEmitter(); + let globalState = 0; + const emitter = new AsyncEmitter(); - emitter.event(e => { - e.waitUntil(timeout(10).then(_ => { - assert.strictEqual(globalState, 0); - globalState += 1; - })); + emitter.event(e => { + e.waitUntil(timeout(10).then(_ => { + assert.strictEqual(globalState, 0); + globalState += 1; + })); + }); + + emitter.event(e => { + e.waitUntil(timeout(1).then(_ => { + assert.strictEqual(globalState, 1); + globalState += 1; + })); + }); + + await emitter.fireAsync({ foo: true }, CancellationToken.None); + assert.strictEqual(globalState, 2); }); - - emitter.event(e => { - e.waitUntil(timeout(1).then(_ => { - assert.strictEqual(globalState, 1); - globalState += 1; - })); - }); - - await emitter.fireAsync({ foo: true }, CancellationToken.None); - assert.strictEqual(globalState, 2); }); test('sequential, in-order delivery', async function () { - interface E extends IWaitUntil { - foo: number; - } - const events: number[] = []; - let done = false; - const emitter = new AsyncEmitter(); + return runWithFakedTimers({}, async function () { - // e1 - emitter.event(e => { - e.waitUntil(timeout(10).then(async _ => { - if (e.foo === 1) { - await emitter.fireAsync({ foo: 2 }, CancellationToken.None); - assert.deepStrictEqual(events, [1, 2]); - done = true; - } - })); + interface E extends IWaitUntil { + foo: number; + } + const events: number[] = []; + let done = false; + const emitter = new AsyncEmitter(); + + // e1 + emitter.event(e => { + e.waitUntil(timeout(10).then(async _ => { + if (e.foo === 1) { + await emitter.fireAsync({ foo: 2 }, CancellationToken.None); + assert.deepStrictEqual(events, [1, 2]); + done = true; + } + })); + }); + + // e2 + emitter.event(e => { + events.push(e.foo); + e.waitUntil(timeout(7)); + }); + + await emitter.fireAsync({ foo: 1 }, CancellationToken.None); + assert.ok(done); }); - - // e2 - emitter.event(e => { - events.push(e.foo); - e.waitUntil(timeout(7)); - }); - - await emitter.fireAsync({ foo: 1 }, CancellationToken.None); - assert.ok(done); }); test('catch errors', async function () { diff --git a/src/vs/workbench/api/test/browser/extHostDiagnostics.test.ts b/src/vs/workbench/api/test/browser/extHostDiagnostics.test.ts index 021725f35f0..f7d92af7f58 100644 --- a/src/vs/workbench/api/test/browser/extHostDiagnostics.test.ts +++ b/src/vs/workbench/api/test/browser/extHostDiagnostics.test.ts @@ -16,6 +16,7 @@ import type * as vscode from 'vscode'; import { nullExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; import { ExtUri, extUri } from 'vs/base/common/resources'; import { IExtHostFileSystemInfo } from 'vs/workbench/api/common/extHostFileSystemInfo'; +import { runWithFakedTimers } from 'vs/base/test/common/timeTravelScheduler'; suite('ExtHostDiagnostics', () => { @@ -438,43 +439,46 @@ suite('ExtHostDiagnostics', () => { }); test('Diagnostics created by tasks aren\'t accessible to extensions #47292', async function () { - const diags = new ExtHostDiagnostics(new class implements IMainContext { - getProxy(id: any): any { - return {}; - } - set(): any { - return null; - } - dispose() { } - assertRegistered(): void { + return runWithFakedTimers({}, async function () { - } - drain() { - return undefined!; - } - }, new NullLogService(), fileSystemInfoService); + const diags = new ExtHostDiagnostics(new class implements IMainContext { + getProxy(id: any): any { + return {}; + } + set(): any { + return null; + } + dispose() { } + assertRegistered(): void { + + } + drain() { + return undefined!; + } + }, new NullLogService(), fileSystemInfoService); - // - const uri = URI.parse('foo:bar'); - const data: IMarkerData[] = [{ - message: 'message', - startLineNumber: 1, - startColumn: 1, - endLineNumber: 1, - endColumn: 1, - severity: 3 - }]; + // + const uri = URI.parse('foo:bar'); + const data: IMarkerData[] = [{ + message: 'message', + startLineNumber: 1, + startColumn: 1, + endLineNumber: 1, + endColumn: 1, + severity: 3 + }]; - const p1 = Event.toPromise(diags.onDidChangeDiagnostics); - diags.$acceptMarkersChange([[uri, data]]); - await p1; - assert.strictEqual(diags.getDiagnostics(uri).length, 1); + const p1 = Event.toPromise(diags.onDidChangeDiagnostics); + diags.$acceptMarkersChange([[uri, data]]); + await p1; + assert.strictEqual(diags.getDiagnostics(uri).length, 1); - const p2 = Event.toPromise(diags.onDidChangeDiagnostics); - diags.$acceptMarkersChange([[uri, []]]); - await p2; - assert.strictEqual(diags.getDiagnostics(uri).length, 0); + const p2 = Event.toPromise(diags.onDidChangeDiagnostics); + diags.$acceptMarkersChange([[uri, []]]); + await p2; + assert.strictEqual(diags.getDiagnostics(uri).length, 0); + }); }); test('languages.getDiagnostics doesn\'t handle case insensitivity correctly #128198', function () { diff --git a/test/unit/electron/renderer.js b/test/unit/electron/renderer.js index 9b291fd0bd7..47f8fb0a53e 100644 --- a/test/unit/electron/renderer.js +++ b/test/unit/electron/renderer.js @@ -298,7 +298,7 @@ function runTests(opts) { mocha.grep(opts.grep); } - if (!opts.debug) { + if (!opts.dev) { mocha.reporter(IPCReporter); } @@ -308,7 +308,7 @@ function runTests(opts) { }); }); - if (opts.debug) { + if (opts.dev) { runner.on('fail', (test, err) => { console.error(test.fullTitle());