diff --git a/src/main.js b/src/main.js index 84af1506598..1dcd38660cd 100644 --- a/src/main.js +++ b/src/main.js @@ -448,7 +448,6 @@ global.getOpenUrls = function () { return openUrls; }; - // use '/CachedData'-directory to store // node/v8 cached data. let nodeCachedDataDir = getNodeCachedDataDir().then(function (value) { diff --git a/src/typings/electron.d.ts b/src/typings/electron.d.ts index ce604fb1bf0..daf41dbc736 100644 --- a/src/typings/electron.d.ts +++ b/src/typings/electron.d.ts @@ -507,7 +507,7 @@ declare namespace Electron { * and macOS, icons depend on the application associated with file mime type. */ getFileIcon(path: string, callback: (error: Error, icon: NativeImage) => void): void; - getGpuFeatureStatus(): GPUFeatureStatus; + getGPUFeatureStatus(): GPUFeatureStatus; getJumpListSettings(): JumpListSettings; /** * Note: When distributing your packaged app, you have to also ship the locales diff --git a/src/vs/base/node/processes.ts b/src/vs/base/node/processes.ts index 8c351239652..1b61d41e675 100644 --- a/src/vs/base/node/processes.ts +++ b/src/vs/base/node/processes.ts @@ -381,7 +381,7 @@ export interface IQueuedSender { // queue is free again to consume messages. // On Windows we always wait for the send() method to return before sending the next message // to workaround https://github.com/nodejs/node/issues/7657 (IPC can freeze process) -export function createQueuedSender(childProcess: cp.ChildProcess | NodeJS.Process): IQueuedSender { +export function createQueuedSender(childProcess: cp.ChildProcess): IQueuedSender { let msgQueue: string[] = []; let useQueue = false; diff --git a/src/vs/base/node/request.ts b/src/vs/base/node/request.ts index b3d3a11f3e3..79a067db70e 100644 --- a/src/vs/base/node/request.ts +++ b/src/vs/base/node/request.ts @@ -96,7 +96,7 @@ export function request(options: IRequestOptions): TPromise { stream = stream.pipe(createGunzip()); } - c({ res, stream }); + c({ res, stream } as IRequestContext); } }); diff --git a/src/vs/base/test/common/arrays.test.ts b/src/vs/base/test/common/arrays.test.ts index e05fed736e1..3d2e505a023 100644 --- a/src/vs/base/test/common/arrays.test.ts +++ b/src/vs/base/test/common/arrays.test.ts @@ -75,7 +75,7 @@ suite('Arrays', () => { for (let i = 1; i < array.length; i++) { let n = array[i]; if (last > n) { - assert.fail(array.slice(i - 10, i + 10)); + assert.fail(JSON.stringify(array.slice(i - 10, i + 10))); } } } diff --git a/src/vs/base/test/common/cache.test.ts b/src/vs/base/test/common/cache.test.ts index 521c59b3375..c7bab09abd0 100644 --- a/src/vs/base/test/common/cache.test.ts +++ b/src/vs/base/test/common/cache.test.ts @@ -16,9 +16,9 @@ suite('Cache', () => { const cache = new Cache(() => TPromise.as(counter++)); return cache.get() - .then(c => assert.equal(c, 0), () => assert.fail()) + .then(c => assert.equal(c, 0), () => assert.fail('Unexpected assertion error')) .then(() => cache.get()) - .then(c => assert.equal(c, 0), () => assert.fail()); + .then(c => assert.equal(c, 0), () => assert.fail('Unexpected assertion error')); }); test('simple error', () => { @@ -26,9 +26,9 @@ suite('Cache', () => { const cache = new Cache(() => TPromise.wrapError(new Error(String(counter++)))); return cache.get() - .then(() => assert.fail(), err => assert.equal(err.message, 0)) + .then(() => assert.fail('Unexpected assertion error'), err => assert.equal(err.message, 0)) .then(() => cache.get()) - .then(() => assert.fail(), err => assert.equal(err.message, 0)); + .then(() => assert.fail('Unexpected assertion error'), err => assert.equal(err.message, 0)); }); test('should retry cancellations', () => { diff --git a/src/vs/base/test/node/processes/fixtures/fork.ts b/src/vs/base/test/node/processes/fixtures/fork.ts index 10537b1b6cc..9729d543579 100644 --- a/src/vs/base/test/node/processes/fixtures/fork.ts +++ b/src/vs/base/test/node/processes/fixtures/fork.ts @@ -7,7 +7,7 @@ import * as processes from 'vs/base/node/processes'; -const sender = processes.createQueuedSender(process); +const sender = processes.createQueuedSender(process); process.on('message', msg => { sender.send(msg); diff --git a/src/vs/base/test/node/processes/fixtures/fork_large.ts b/src/vs/base/test/node/processes/fixtures/fork_large.ts index e89bc4bb394..df17dd8bdc0 100644 --- a/src/vs/base/test/node/processes/fixtures/fork_large.ts +++ b/src/vs/base/test/node/processes/fixtures/fork_large.ts @@ -7,7 +7,7 @@ import * as processes from 'vs/base/node/processes'; -const sender = processes.createQueuedSender(process); +const sender = processes.createQueuedSender(process); process.on('message', msg => { sender.send(msg); diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 47b3b15b814..d1a8bfab221 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -5,7 +5,7 @@ 'use strict'; -import { app, ipcMain as ipc, BrowserWindow } from 'electron'; +import { app, ipcMain as ipc } from 'electron'; import * as platform from 'vs/base/common/platform'; import { WindowsManager } from 'vs/code/electron-main/windows'; import { IWindowsService, OpenContext, ActiveWindowManager } from 'vs/platform/windows/common/windows'; @@ -127,7 +127,7 @@ export class CodeApplication { return srcUri.startsWith(URI.file(this.environmentService.appRoot.toLowerCase()).toString()); }; - app.on('web-contents-created', (_event: any, contents) => { + app.on('web-contents-created', (event: any, contents) => { contents.on('will-attach-webview', (event: Electron.Event, webPreferences, params) => { delete webPreferences.preload; webPreferences.nodeIntegration = false; @@ -182,15 +182,15 @@ export class CodeApplication { this.windowsMainService.openNewWindow(OpenContext.DESKTOP); //macOS native tab "+" button }); - ipc.on('vscode:exit', (_event: any, code: number) => { + ipc.on('vscode:exit', (event: any, code: number) => { this.logService.trace('IPC#vscode:exit', code); this.dispose(); this.lifecycleService.kill(code); }); - ipc.on('vscode:fetchShellEnv', (_event: any, windowId: number) => { - const { webContents } = BrowserWindow.fromId(windowId); + ipc.on('vscode:fetchShellEnv', event => { + const webContents = event.sender.webContents; getShellEnvironment().then(shellEnv => { if (!webContents.isDestroyed()) { webContents.send('vscode:acceptShellEnv', shellEnv); @@ -204,7 +204,7 @@ export class CodeApplication { }); }); - ipc.on('vscode:broadcast', (_event: any, windowId: number, broadcast: { channel: string; payload: any; }) => { + ipc.on('vscode:broadcast', (event: any, windowId: number, broadcast: { channel: string; payload: any; }) => { if (this.windowsMainService && broadcast.channel && !isUndefinedOrNull(broadcast.payload)) { this.logService.trace('IPC#vscode:broadcast', broadcast.channel, broadcast.payload); @@ -402,11 +402,12 @@ export class CodeApplication { this.windowsMainService.ready(this.userEnv); // Open our first window + const macOpenFiles = (global).macOpenFiles as string[]; const context = !!process.env['VSCODE_CLI'] ? OpenContext.CLI : OpenContext.DESKTOP; if (args['new-window'] && args._.length === 0) { this.windowsMainService.open({ context, cli: args, forceNewWindow: true, forceEmpty: true, initialStartup: true }); // new window if "-n" was used without paths - } else if (global.macOpenFiles && global.macOpenFiles.length && (!args._ || !args._.length)) { - this.windowsMainService.open({ context: OpenContext.DOCK, cli: args, pathsToOpen: global.macOpenFiles, initialStartup: true }); // mac: open-file event received on startup + } else if (macOpenFiles && macOpenFiles.length && (!args._ || !args._.length)) { + this.windowsMainService.open({ context: OpenContext.DOCK, cli: args, pathsToOpen: macOpenFiles, initialStartup: true }); // mac: open-file event received on startup } else { this.windowsMainService.open({ context, cli: args, forceNewWindow: args['new-window'] || (!args._.length && args['unity-launch']), diffMode: args.diff, initialStartup: true }); // default: read paths from cli } diff --git a/src/vs/code/electron-main/menus.ts b/src/vs/code/electron-main/menus.ts index 6133a99b783..46d965ac212 100644 --- a/src/vs/code/electron-main/menus.ts +++ b/src/vs/code/electron-main/menus.ts @@ -100,7 +100,7 @@ export class CodeMenu { this.windowsMainService.onWindowClose(() => this.updateWorkspaceMenuItems()); // Listen to extension viewlets - ipc.on('vscode:extensionViewlets', (_event: any, rawExtensionViewlets: string) => { + ipc.on('vscode:extensionViewlets', (event: any, rawExtensionViewlets: string) => { let extensionViewlets: IExtensionViewlet[] = []; try { extensionViewlets = JSON.parse(rawExtensionViewlets); diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 7406f3e7d73..af71a291e7b 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -606,7 +606,7 @@ export class CodeWindow implements ICodeWindow { // Perf Counters windowConfiguration.perfEntries = exportEntries(); - windowConfiguration.perfStartTime = global.perfStartTime; + windowConfiguration.perfStartTime = (global).perfStartTime; windowConfiguration.perfWindowLoadTime = Date.now(); // Config (combination of process.argv and window configuration) diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 85f39a00a01..8f15684a41f 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -169,7 +169,7 @@ export class WindowsManager implements IWindowsMainService { }); // React to workbench loaded events from windows - ipc.on('vscode:workbenchLoaded', (_event: any, windowId: number) => { + ipc.on('vscode:workbenchLoaded', (event: any, windowId: number) => { this.logService.trace('IPC#vscode-workbenchLoaded'); const win = this.getWindowById(windowId); diff --git a/src/vs/editor/contrib/rename/renameInputField.ts b/src/vs/editor/contrib/rename/renameInputField.ts index 76f4feab71a..4eb6d89148d 100644 --- a/src/vs/editor/contrib/rename/renameInputField.ts +++ b/src/vs/editor/contrib/rename/renameInputField.ts @@ -192,7 +192,7 @@ export default class RenameInputField implements IContentWidget, IDisposable { this._inputField.setSelectionRange( parseInt(this._inputField.getAttribute('selectionStart')), parseInt(this._inputField.getAttribute('selectionEnd'))); - }, 25); + }, 100); } private _hide(): void { diff --git a/src/vs/editor/test/common/model/model.test.ts b/src/vs/editor/test/common/model/model.test.ts index 63b862035ec..b53ce735bfc 100644 --- a/src/vs/editor/test/common/model/model.test.ts +++ b/src/vs/editor/test/common/model/model.test.ts @@ -109,7 +109,7 @@ suite('Editor Model - Model', () => { let e: ModelRawContentChangedEvent = null; thisModel.onDidChangeRawContent((_e) => { if (e !== null) { - assert.fail(); + assert.fail('Unexpected assertion error'); } e = _e; }); @@ -128,7 +128,7 @@ suite('Editor Model - Model', () => { let e: ModelRawContentChangedEvent = null; thisModel.onDidChangeRawContent((_e) => { if (e !== null) { - assert.fail(); + assert.fail('Unexpected assertion error'); } e = _e; }); @@ -205,7 +205,7 @@ suite('Editor Model - Model', () => { let e: ModelRawContentChangedEvent = null; thisModel.onDidChangeRawContent((_e) => { if (e !== null) { - assert.fail(); + assert.fail('Unexpected assertion error'); } e = _e; }); @@ -224,7 +224,7 @@ suite('Editor Model - Model', () => { let e: ModelRawContentChangedEvent = null; thisModel.onDidChangeRawContent((_e) => { if (e !== null) { - assert.fail(); + assert.fail('Unexpected assertion error'); } e = _e; }); @@ -243,7 +243,7 @@ suite('Editor Model - Model', () => { let e: ModelRawContentChangedEvent = null; thisModel.onDidChangeRawContent((_e) => { if (e !== null) { - assert.fail(); + assert.fail('Unexpected assertion error'); } e = _e; }); @@ -263,7 +263,7 @@ suite('Editor Model - Model', () => { let e: ModelRawContentChangedEvent = null; thisModel.onDidChangeRawContent((_e) => { if (e !== null) { - assert.fail(); + assert.fail('Unexpected assertion error'); } e = _e; }); @@ -314,7 +314,7 @@ suite('Editor Model - Model', () => { let e: ModelRawContentChangedEvent = null; thisModel.onDidChangeRawContent((_e) => { if (e !== null) { - assert.fail(); + assert.fail('Unexpected assertion error'); } e = _e; }); diff --git a/src/vs/platform/url/electron-main/electronUrlListener.ts b/src/vs/platform/url/electron-main/electronUrlListener.ts index 418e08c5b91..d228fdc23ef 100644 --- a/src/vs/platform/url/electron-main/electronUrlListener.ts +++ b/src/vs/platform/url/electron-main/electronUrlListener.ts @@ -32,7 +32,7 @@ export class ElectronURLListener { @IURLService private urlService: IURLService, @IWindowsMainService private windowsService: IWindowsMainService ) { - const globalBuffer = (global.getOpenUrls() || []) as string[]; + const globalBuffer = ((global).getOpenUrls() || []) as string[]; const rawBuffer = [ ...(typeof initial === 'string' ? [initial] : initial), ...globalBuffer diff --git a/src/vs/workbench/electron-browser/bootstrap/index.js b/src/vs/workbench/electron-browser/bootstrap/index.js index 0c0b9b7c018..75f6dc4d7f6 100644 --- a/src/vs/workbench/electron-browser/bootstrap/index.js +++ b/src/vs/workbench/electron-browser/bootstrap/index.js @@ -28,7 +28,7 @@ process.lazyEnv = new Promise(function (resolve) { assign(process.env, shellEnv); resolve(process.env); }); - ipc.send('vscode:fetchShellEnv', remote.getCurrentWindow().id); + ipc.send('vscode:fetchShellEnv'); }); Error.stackTraceLimit = 100; // increase number of stack frames (from 10, https://github.com/v8/v8/wiki/Stack-Trace-API) diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index 53402073fbf..5da959f79eb 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -131,7 +131,7 @@ export class ElectronWindow extends Themable { }); // Support runAction event - ipc.on('vscode:runAction', (_event: any, request: IRunActionInWindowRequest) => { + ipc.on('vscode:runAction', (event: any, request: IRunActionInWindowRequest) => { const args: any[] = []; // If we run an action from the touchbar, we fill in the currently active resource @@ -162,7 +162,7 @@ export class ElectronWindow extends Themable { }); // Support resolve keybindings event - ipc.on('vscode:resolveKeybindings', (_event: any, rawActionIds: string) => { + ipc.on('vscode:resolveKeybindings', (event: any, rawActionIds: string) => { let actionIds: string[] = []; try { actionIds = JSON.parse(rawActionIds); @@ -178,7 +178,7 @@ export class ElectronWindow extends Themable { }, () => errors.onUnexpectedError); }); - ipc.on('vscode:reportError', (_event: any, error: string) => { + ipc.on('vscode:reportError', (event: any, error: string) => { if (error) { const errorParsed = JSON.parse(error); errorParsed.mainProcess = true; @@ -187,13 +187,13 @@ export class ElectronWindow extends Themable { }); // Support openFiles event for existing and new files - ipc.on('vscode:openFiles', (_event: any, request: IOpenFileRequest) => this.onOpenFiles(request)); + ipc.on('vscode:openFiles', (event: any, request: IOpenFileRequest) => this.onOpenFiles(request)); // Support addFolders event if we have a workspace opened - ipc.on('vscode:addFolders', (_event: any, request: IAddFoldersRequest) => this.onAddFoldersRequest(request)); + ipc.on('vscode:addFolders', (event: any, request: IAddFoldersRequest) => this.onAddFoldersRequest(request)); // Message support - ipc.on('vscode:showInfoMessage', (_event: any, message: string) => { + ipc.on('vscode:showInfoMessage', (event: any, message: string) => { this.notificationService.info(message); }); @@ -240,7 +240,7 @@ export class ElectronWindow extends Themable { }); // keyboard layout changed event - ipc.on('vscode:accessibilitySupportChanged', (_event: any, accessibilitySupportEnabled: boolean) => { + ipc.on('vscode:accessibilitySupportChanged', (event: any, accessibilitySupportEnabled: boolean) => { browser.setAccessibilitySupport(accessibilitySupportEnabled ? AccessibilitySupport.Enabled : AccessibilitySupport.Disabled); }); diff --git a/src/vs/workbench/node/extensionHostMain.ts b/src/vs/workbench/node/extensionHostMain.ts index 9a17c7976dc..e353d69e992 100644 --- a/src/vs/workbench/node/extensionHostMain.ts +++ b/src/vs/workbench/node/extensionHostMain.ts @@ -28,14 +28,14 @@ import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService'; // const nativeExit = process.exit.bind(process); function patchProcess(allowExit: boolean) { - process.exit = function (code) { + process.exit = function (code?: number) { if (allowExit) { exit(code); } else { const err = new Error('An extension called process.exit() and this was prevented.'); console.warn(err.stack); } - }; + } as (code?: number) => never; process.crash = function () { const err = new Error('An extension called process.crash() and this was prevented.'); diff --git a/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts b/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts index 05e315fc95b..d7c1b98eca9 100644 --- a/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts +++ b/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts @@ -55,12 +55,12 @@ export class NodeCachedDataManager implements IWorkbenchContribution { } */ this._telemetryService.publicLog('cachedDataInfo', { - didRequestCachedData: Boolean(global.require.getConfig().nodeCachedDataDir), + didRequestCachedData: Boolean((global).require.getConfig().nodeCachedDataDir), didRejectCachedData, didProduceCachedData }); - global.require.config({ onNodeCachedData: undefined }); + (global).require.config({ onNodeCachedData: undefined }); delete MonacoEnvironment.onNodeCachedData; } } diff --git a/src/vs/workbench/parts/debug/test/node/debugAdapter.test.ts b/src/vs/workbench/parts/debug/test/node/debugAdapter.test.ts index fadc7c6c5fd..bc4cfc87f6c 100644 --- a/src/vs/workbench/parts/debug/test/node/debugAdapter.test.ts +++ b/src/vs/workbench/parts/debug/test/node/debugAdapter.test.ts @@ -136,6 +136,6 @@ suite('Debug - Adapter', () => { return adapter.getInitialConfigurationContent().then(content => { assert.equal(content, expected); - }, err => assert.fail()); + }, err => assert.fail(err)); }); }); \ No newline at end of file diff --git a/src/vs/workbench/parts/terminal/node/terminalProcess.ts b/src/vs/workbench/parts/terminal/node/terminalProcess.ts index 1bd5563acb0..008da19c4d6 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcess.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcess.ts @@ -24,7 +24,7 @@ var cols = process.env.PTYCOLS; var rows = process.env.PTYROWS; var currentTitle = ''; -setupPlanB(process.env.PTYPID); +setupPlanB(Number(process.env.PTYPID)); cleanEnv(); interface IOptions { @@ -91,9 +91,9 @@ process.on('message', function (message) { sendProcessId(); setupTitlePolling(); -function getArgs() { +function getArgs(): string[] { if (process.env['PTYSHELLCMDLINE']) { - return process.env['PTYSHELLCMDLINE']; + return [process.env['PTYSHELLCMDLINE']]; } var args = []; var i = 0; diff --git a/src/vs/workbench/services/crashReporter/electron-browser/crashReporterService.ts b/src/vs/workbench/services/crashReporter/electron-browser/crashReporterService.ts index 4778b3aa678..627c221fa6c 100644 --- a/src/vs/workbench/services/crashReporter/electron-browser/crashReporterService.ts +++ b/src/vs/workbench/services/crashReporter/electron-browser/crashReporterService.ts @@ -119,7 +119,7 @@ export class CrashReporterService implements ICrashReporterService { // Experimental crash reporting support for child processes on Mac only for now if (this.isEnabled && isMacintosh) { const childProcessOptions = deepClone(this.options); - childProcessOptions.extra.processName = name; + (childProcessOptions.extra).processName = name; childProcessOptions.crashesDirectory = os.tmpdir(); return childProcessOptions; diff --git a/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts b/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts index 6b85c158939..5e73b6cbaeb 100644 --- a/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts @@ -61,7 +61,7 @@ export class NsfwWatcherService implements IWatcherService { ignored: request.ignored }; - process.on('uncaughtException', e => { + process.on('uncaughtException', (e: Error | string) => { // Specially handle ENOSPC errors that can happen when // the watcher consumes so many file descriptors that diff --git a/src/vs/workbench/services/search/node/ripgrepTextSearch.ts b/src/vs/workbench/services/search/node/ripgrepTextSearch.ts index 57cb8d2bc06..8f2f0e3c850 100644 --- a/src/vs/workbench/services/search/node/ripgrepTextSearch.ts +++ b/src/vs/workbench/services/search/node/ripgrepTextSearch.ts @@ -29,7 +29,7 @@ const rgDiskPath = rgPath.replace(/\bnode_modules\.asar\b/, 'node_modules.asar.u export class RipgrepEngine { private isDone = false; private rgProc: cp.ChildProcess; - private killRgProcFn: Function; + private killRgProcFn: (code?: number) => void; private postProcessExclusions: glob.ParsedExpression; private ripgrepParser: RipgrepParser; diff --git a/src/vs/workbench/services/search/test/node/searchService.test.ts b/src/vs/workbench/services/search/test/node/searchService.test.ts index c687527d3b3..5d33088e881 100644 --- a/src/vs/workbench/services/search/test/node/searchService.test.ts +++ b/src/vs/workbench/services/search/test/node/searchService.test.ts @@ -109,7 +109,7 @@ suite('SearchService', () => { assert.deepStrictEqual(value, match); results++; } else { - assert.fail(value); + assert.fail(JSON.stringify(value)); } }); }); @@ -131,7 +131,7 @@ suite('SearchService', () => { }); results.push(value.length); } else { - assert.fail(value); + assert.fail(JSON.stringify(value)); } }); }); @@ -218,7 +218,7 @@ suite('SearchService', () => { if (Array.isArray(value)) { results.push(...value.map(v => v.path)); } else { - assert.fail(value); + assert.fail(JSON.stringify(value)); } }); }); @@ -245,7 +245,7 @@ suite('SearchService', () => { }); results.push(value.length); } else { - assert.fail(value); + assert.fail(JSON.stringify(value)); } }); }); @@ -275,7 +275,7 @@ suite('SearchService', () => { if (Array.isArray(value)) { results.push(...value.map(v => v.path)); } else { - assert.fail(value); + assert.fail(JSON.stringify(value)); } }).then(() => { const results = []; @@ -291,7 +291,7 @@ suite('SearchService', () => { if (Array.isArray(value)) { results.push(...value.map(v => v.path)); } else { - assert.fail(value); + assert.fail(JSON.stringify(value)); } }); }).then(() => { @@ -316,7 +316,7 @@ suite('SearchService', () => { if (Array.isArray(value)) { results.push(...value.map(v => v.path)); } else { - assert.fail(value); + assert.fail(JSON.stringify(value)); } }); });