mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Fix hygiene/compile issues (release/1.26) (#14261)
* Fix hygiene issues * Fix strict compile * fixes * compile fix * more fixes * more compile fixes * last one?! * fix tests
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
export class Deferred<T> {
|
export class Deferred<T> {
|
||||||
promise: Promise<T>;
|
promise: Promise<T>;
|
||||||
resolve!: (value?: T | PromiseLike<T>) => void;
|
resolve!: (value: T | PromiseLike<T>) => void;
|
||||||
reject!: (reason?: any) => void;
|
reject!: (reason?: any) => void;
|
||||||
constructor() {
|
constructor() {
|
||||||
this.promise = new Promise<T>((resolve, reject) => {
|
this.promise = new Promise<T>((resolve, reject) => {
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ export function getDatabaseStateDisplayText(state: string): string {
|
|||||||
* @returns Promise resolving to the user's input if it passed validation,
|
* @returns Promise resolving to the user's input if it passed validation,
|
||||||
* or undefined if the input box was closed for any other reason
|
* or undefined if the input box was closed for any other reason
|
||||||
*/
|
*/
|
||||||
async function promptInputBox(title: string, options: vscode.InputBoxOptions): Promise<string> {
|
async function promptInputBox(title: string, options: vscode.InputBoxOptions): Promise<string | undefined> {
|
||||||
const inputBox = vscode.window.createInputBox();
|
const inputBox = vscode.window.createInputBox();
|
||||||
inputBox.title = title;
|
inputBox.title = title;
|
||||||
inputBox.prompt = options.prompt;
|
inputBox.prompt = options.prompt;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { Deferred } from '../../common/promise';
|
|||||||
|
|
||||||
describe('Deferred', () => {
|
describe('Deferred', () => {
|
||||||
it('Then should be called upon resolution', function (done): void {
|
it('Then should be called upon resolution', function (done): void {
|
||||||
const deferred = new Deferred();
|
const deferred = new Deferred<void>();
|
||||||
deferred.then(() => {
|
deferred.then(() => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ describe('filePicker', function (): void {
|
|||||||
should(filePicker.filePathInputBox.value).should.not.be.undefined();
|
should(filePicker.filePathInputBox.value).should.not.be.undefined();
|
||||||
filePicker.value!.should.equal(initialPath);
|
filePicker.value!.should.equal(initialPath);
|
||||||
filePicker.component().items.length.should.equal(2, 'Filepicker container should have two components');
|
filePicker.component().items.length.should.equal(2, 'Filepicker container should have two components');
|
||||||
const deferred = new Deferred();
|
const deferred = new Deferred<void>();
|
||||||
sinon.stub(vscode.window, 'showOpenDialog').callsFake(async (_options) => {
|
sinon.stub(vscode.window, 'showOpenDialog').callsFake(async (_options) => {
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
return [newFileUri];
|
return [newFileUri];
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
export class Deferred<T> {
|
export class Deferred<T> {
|
||||||
promise: Promise<T>;
|
promise: Promise<T>;
|
||||||
resolve!: (value?: T | PromiseLike<T>) => void;
|
resolve!: (value: T | PromiseLike<T>) => void;
|
||||||
reject!: (reason?: any) => void;
|
reject!: (reason?: any) => void;
|
||||||
constructor() {
|
constructor() {
|
||||||
this.promise = new Promise<T>((resolve, reject) => {
|
this.promise = new Promise<T>((resolve, reject) => {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export class NoAzdataError extends Error implements azdataExt.ErrorWithLink {
|
|||||||
*/
|
*/
|
||||||
export function searchForCmd(exe: string): Promise<string> {
|
export function searchForCmd(exe: string): Promise<string> {
|
||||||
// Note : This is separated out to allow for easy test stubbing
|
// Note : This is separated out to allow for easy test stubbing
|
||||||
return new Promise<string>((resolve, reject) => which(exe, (err, path) => err ? reject(err) : resolve(path)));
|
return new Promise<string>((resolve, reject) => which(exe, (err, path) => err ? reject(err) : resolve(path || '')));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ describe('HttpClient', function (): void {
|
|||||||
it('errors on write stream error', async function (): Promise<void> {
|
it('errors on write stream error', async function (): Promise<void> {
|
||||||
const downloadFolder = os.tmpdir();
|
const downloadFolder = os.tmpdir();
|
||||||
const mockWriteStream = new PassThrough();
|
const mockWriteStream = new PassThrough();
|
||||||
const deferredPromise = new Deferred();
|
const deferredPromise = new Deferred<void>();
|
||||||
sinon.stub(fs, 'createWriteStream').callsFake(() => {
|
sinon.stub(fs, 'createWriteStream').callsFake(() => {
|
||||||
deferredPromise.resolve();
|
deferredPromise.resolve();
|
||||||
return <any>mockWriteStream;
|
return <any>mockWriteStream;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { Deferred } from '../../common/promise';
|
|||||||
describe('DeferredPromise', function (): void {
|
describe('DeferredPromise', function (): void {
|
||||||
|
|
||||||
it('Resolves correctly', async function(): Promise<void> {
|
it('Resolves correctly', async function(): Promise<void> {
|
||||||
const deferred = new Deferred();
|
const deferred = new Deferred<void>();
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
await should(deferred.promise).be.resolved();
|
await should(deferred.promise).be.resolved();
|
||||||
});
|
});
|
||||||
@@ -21,7 +21,7 @@ describe('DeferredPromise', function (): void {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Chains then correctly', function(done): void {
|
it('Chains then correctly', function(done): void {
|
||||||
const deferred = new Deferred();
|
const deferred = new Deferred<void>();
|
||||||
deferred.then( () => {
|
deferred.then( () => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,12 +27,12 @@ export abstract class BasePage {
|
|||||||
/**
|
/**
|
||||||
* This method constructs all the elements of the page.
|
* This method constructs all the elements of the page.
|
||||||
*/
|
*/
|
||||||
public async abstract start(): Promise<boolean>;
|
public abstract start(): Promise<boolean>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when the user is entering the page.
|
* This method is called when the user is entering the page.
|
||||||
*/
|
*/
|
||||||
public async abstract onPageEnter(): Promise<boolean>;
|
public abstract onPageEnter(): Promise<boolean>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when the user is leaving the page.
|
* This method is called when the user is leaving the page.
|
||||||
|
|||||||
@@ -445,7 +445,7 @@ export class Git {
|
|||||||
const [, letter] = match;
|
const [, letter] = match;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const networkPath = await new Promise<string>(resolve =>
|
const networkPath = await new Promise<string | undefined>(resolve =>
|
||||||
realpath.native(`${letter}:`, { encoding: 'utf8' }, (err, resolvedPath) =>
|
realpath.native(`${letter}:`, { encoding: 'utf8' }, (err, resolvedPath) =>
|
||||||
resolve(err !== null ? undefined : resolvedPath),
|
resolve(err !== null ? undefined : resolvedPath),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ export function* splitInChunks(array: string[], maxChunkLength: number): Iterabl
|
|||||||
|
|
||||||
interface ILimitedTaskFactory<T> {
|
interface ILimitedTaskFactory<T> {
|
||||||
factory: () => Promise<T>;
|
factory: () => Promise<T>;
|
||||||
c: (value?: T | Promise<T>) => void;
|
c: (value: T | Promise<T>) => void;
|
||||||
e: (error?: any) => void;
|
e: (error?: any) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export interface PromiseAdapter<T, U> {
|
|||||||
(
|
(
|
||||||
value: T,
|
value: T,
|
||||||
resolve:
|
resolve:
|
||||||
(value?: U | PromiseLike<U>) => void,
|
(value: U | PromiseLike<U>) => void,
|
||||||
reject:
|
reject:
|
||||||
(reason: any) => void
|
(reason: any) => void
|
||||||
): any;
|
): any;
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ export abstract class BasePage {
|
|||||||
/**
|
/**
|
||||||
* This method constructs all the elements of the page.
|
* This method constructs all the elements of the page.
|
||||||
*/
|
*/
|
||||||
public async abstract start(): Promise<boolean>;
|
public abstract start(): Promise<boolean>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when the user is entering the page.
|
* This method is called when the user is entering the page.
|
||||||
*/
|
*/
|
||||||
public async abstract onPageEnter(): Promise<boolean>;
|
public abstract onPageEnter(): Promise<boolean>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when the user is leaving the page.
|
* This method is called when the user is leaving the page.
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ describe('Add Edit External Languages Tab', () => {
|
|||||||
let tab = new AddEditLanguageTab(testContext.apiWrapper.object, parent, languageUpdateModel);
|
let tab = new AddEditLanguageTab(testContext.apiWrapper.object, parent, languageUpdateModel);
|
||||||
should.notEqual(tab.saveButton, undefined);
|
should.notEqual(tab.saveButton, undefined);
|
||||||
let updateCalled = false;
|
let updateCalled = false;
|
||||||
let promise = new Promise(resolve => {
|
let promise = new Promise<void>(resolve => {
|
||||||
parent.onUpdate(() => {
|
parent.onUpdate(() => {
|
||||||
updateCalled = true;
|
updateCalled = true;
|
||||||
resolve();
|
resolve();
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ describe('Edit External Languages Dialog', () => {
|
|||||||
dialog.showDialog();
|
dialog.showDialog();
|
||||||
|
|
||||||
let updateCalled = false;
|
let updateCalled = false;
|
||||||
let promise = new Promise(resolve => {
|
let promise = new Promise<void>(resolve => {
|
||||||
parent.onUpdate(() => {
|
parent.onUpdate(() => {
|
||||||
updateCalled = true;
|
updateCalled = true;
|
||||||
parent.onUpdatedLanguage(languageUpdateModel);
|
parent.onUpdatedLanguage(languageUpdateModel);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export class Delayer<T> {
|
|||||||
public defaultDelay: number;
|
public defaultDelay: number;
|
||||||
private timeout: any; // Timer
|
private timeout: any; // Timer
|
||||||
private completionPromise: Promise<T> | null;
|
private completionPromise: Promise<T> | null;
|
||||||
private onSuccess: ((value?: T | Thenable<T> | undefined) => void) | null;
|
private onSuccess: ((value: T | PromiseLike<T> | undefined) => void) | null;
|
||||||
private task: ITask<T> | null;
|
private task: ITask<T> | null;
|
||||||
|
|
||||||
constructor(defaultDelay: number) {
|
constructor(defaultDelay: number) {
|
||||||
@@ -30,7 +30,7 @@ export class Delayer<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!this.completionPromise) {
|
if (!this.completionPromise) {
|
||||||
this.completionPromise = new Promise<T>((resolve) => {
|
this.completionPromise = new Promise<T | undefined>((resolve) => {
|
||||||
this.onSuccess = resolve;
|
this.onSuccess = resolve;
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.completionPromise = null;
|
this.completionPromise = null;
|
||||||
@@ -76,4 +76,4 @@ export class Delayer<T> {
|
|||||||
this.timeout = null;
|
this.timeout = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export abstract class RemoteBook {
|
|||||||
this.remotePath = remotePath;
|
this.remotePath = remotePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async abstract createLocalCopy(): Promise<void>;
|
public abstract createLocalCopy(): Promise<void>;
|
||||||
|
|
||||||
public setLocalPath(): void {
|
public setLocalPath(): void {
|
||||||
// Save directory on User directory
|
// Save directory on User directory
|
||||||
|
|||||||
@@ -17,15 +17,15 @@ export abstract class BasePage {
|
|||||||
/**
|
/**
|
||||||
* This method constructs all the elements of the page.
|
* This method constructs all the elements of the page.
|
||||||
*/
|
*/
|
||||||
public async abstract initialize(): Promise<boolean>;
|
public abstract initialize(): Promise<boolean>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when the user is entering the page.
|
* This method is called when the user is entering the page.
|
||||||
*/
|
*/
|
||||||
public async abstract onPageEnter(): Promise<void>;
|
public abstract onPageEnter(): Promise<void>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when the user is leaving the page.
|
* This method is called when the user is leaving the page.
|
||||||
*/
|
*/
|
||||||
public async abstract onPageLeave(): Promise<boolean>;
|
public abstract onPageLeave(): Promise<boolean>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
|
|
||||||
this.beforeAll(async () => {
|
this.beforeAll(async () => {
|
||||||
bookTreeViewProvider = appContext.bookTreeViewProvider;
|
bookTreeViewProvider = appContext.bookTreeViewProvider;
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
||||||
await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
|
await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
|
||||||
});
|
});
|
||||||
@@ -276,7 +276,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
|
|
||||||
this.beforeAll(async () => {
|
this.beforeAll(async () => {
|
||||||
providedbookTreeViewProvider = appContext.providedBookTreeViewProvider;
|
providedbookTreeViewProvider = appContext.providedBookTreeViewProvider;
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([providedbookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('ProvidedBooksTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([providedbookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('ProvidedBooksTreeViewProvider did not initialize in time'); })]);
|
||||||
await providedbookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
|
await providedbookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
|
||||||
});
|
});
|
||||||
@@ -359,7 +359,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
this.beforeAll(async () => {
|
this.beforeAll(async () => {
|
||||||
pinnedTreeViewProvider = appContext.pinnedBookTreeViewProvider;
|
pinnedTreeViewProvider = appContext.pinnedBookTreeViewProvider;
|
||||||
bookTreeViewProvider = appContext.bookTreeViewProvider;
|
bookTreeViewProvider = appContext.bookTreeViewProvider;
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
||||||
await Promise.race([pinnedTreeViewProvider.initialized, errorCase.then(() => { throw new Error('PinnedTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([pinnedTreeViewProvider.initialized, errorCase.then(() => { throw new Error('PinnedTreeViewProvider did not initialize in time'); })]);
|
||||||
await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
|
await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
|
||||||
@@ -478,7 +478,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
index: 0
|
index: 0
|
||||||
};
|
};
|
||||||
bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
||||||
await bookTreeViewProvider.openBook(rootFolderPath, undefined, false, false);
|
await bookTreeViewProvider.openBook(rootFolderPath, undefined, false, false);
|
||||||
});
|
});
|
||||||
@@ -556,7 +556,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
index: 0
|
index: 0
|
||||||
};
|
};
|
||||||
bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -585,7 +585,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('BookTreeViewProvider.getSections', function () {
|
describe('BookTreeViewProvider.getSections', function () {
|
||||||
@@ -646,7 +646,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
index: 0
|
index: 0
|
||||||
}];
|
}];
|
||||||
bookTreeViewProvider = new BookTreeViewProvider(folder, mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
bookTreeViewProvider = new BookTreeViewProvider(folder, mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -659,10 +659,12 @@ describe('BooksTreeViewTests', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
after(async function (): Promise<void> {
|
after(async function (): Promise<void> {
|
||||||
if (await exists(rootFolderPath)) await promisify(rimraf)(rootFolderPath);
|
if (await exists(rootFolderPath)) {
|
||||||
|
await promisify(rimraf)(rootFolderPath);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('BookTreeViewProvider.Commands', function () {
|
describe('BookTreeViewProvider.Commands', function () {
|
||||||
@@ -716,7 +718,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
|
|
||||||
const mockExtensionContext = new MockExtensionContext();
|
const mockExtensionContext = new MockExtensionContext();
|
||||||
bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -913,7 +915,7 @@ describe('BooksTreeViewTests', function () {
|
|||||||
|
|
||||||
const mockExtensionContext = new MockExtensionContext();
|
const mockExtensionContext = new MockExtensionContext();
|
||||||
bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
|
||||||
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000));
|
let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
|
||||||
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export class TestChildProcessPromise<T> implements cp.ChildProcessPromise {
|
|||||||
this.reject = reject;
|
this.reject = reject;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
resolve!: (value?: T | PromiseLike<T>) => void;
|
resolve!: (value: T | PromiseLike<T>) => void;
|
||||||
reject!: (reason?: any) => void;
|
reject!: (reason?: any) => void;
|
||||||
then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2> {
|
then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2> {
|
||||||
return this._promise.then(onFulfilled, onRejected);
|
return this._promise.then(onFulfilled, onRejected);
|
||||||
|
|||||||
@@ -93,13 +93,13 @@ describe('WizardPage', () => {
|
|||||||
return enabled;
|
return enabled;
|
||||||
});
|
});
|
||||||
// Used to ensure that we wait until the enabled state is updated for our mocked components before continuing
|
// Used to ensure that we wait until the enabled state is updated for our mocked components before continuing
|
||||||
let enabledDeferred = new Deferred();
|
let enabledDeferred = new Deferred<void>();
|
||||||
|
|
||||||
initializeWizardPage(testWizardPage);
|
initializeWizardPage(testWizardPage);
|
||||||
await contentRegistered.promise;
|
await contentRegistered.promise;
|
||||||
await enabledDeferred.promise;
|
await enabledDeferred.promise;
|
||||||
should(stubInputBox.enabled).be.false('Input box should be disabled by default');
|
should(stubInputBox.enabled).be.false('Input box should be disabled by default');
|
||||||
enabledDeferred = new Deferred();
|
enabledDeferred = new Deferred<void>();
|
||||||
stubCheckbox.checked = true;
|
stubCheckbox.checked = true;
|
||||||
// Now wait for the enabled state to be updated again
|
// Now wait for the enabled state to be updated again
|
||||||
await enabledDeferred.promise;
|
await enabledDeferred.promise;
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ export class Deferred<T> {
|
|||||||
this.resolve = resolve;
|
this.resolve = resolve;
|
||||||
this.reject = reject;
|
this.reject = reject;
|
||||||
});;
|
});;
|
||||||
resolve!: (value?: T | PromiseLike<T>) => void;
|
resolve!: (value: T | PromiseLike<T>) => void;
|
||||||
reject!: (reason?: any) => void;
|
reject!: (reason?: any) => void;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,11 +99,11 @@ export async function verifyConnectionAndGetOwnerUri(endpoint: mssql.SchemaCompa
|
|||||||
|
|
||||||
let userConnection;
|
let userConnection;
|
||||||
userConnection = connectionList.find(connection =>
|
userConnection = connectionList.find(connection =>
|
||||||
(endpoint.connectionDetails['authenticationType'] === 'SqlLogin'
|
(endpoint.connectionDetails['authenticationType'] === 'SqlLogin'
|
||||||
&& endpoint.connectionDetails['serverName'] === connection.options.server
|
&& endpoint.connectionDetails['serverName'] === connection.options.server
|
||||||
&& endpoint.connectionDetails['userName'] === connection.options.user
|
&& endpoint.connectionDetails['userName'] === connection.options.user
|
||||||
&& (endpoint.connectionDetails['databaseName'].toLowerCase() === connection.options.database.toLowerCase()
|
&& (endpoint.connectionDetails['databaseName'].toLowerCase() === connection.options.database.toLowerCase()
|
||||||
|| connection.options.database.toLowerCase() === 'master')));
|
|| connection.options.database.toLowerCase() === 'master')));
|
||||||
|
|
||||||
if (userConnection === undefined) {
|
if (userConnection === undefined) {
|
||||||
const getConnectionString = loc.getConnectionString(caller);
|
const getConnectionString = loc.getConnectionString(caller);
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ export class ModelStore implements IModelStore {
|
|||||||
let promiseTracker = this._componentActions[componentId];
|
let promiseTracker = this._componentActions[componentId];
|
||||||
if (promiseTracker) {
|
if (promiseTracker) {
|
||||||
// Run initial actions first to ensure they're done before later actions (and thus don't overwrite following actions)
|
// Run initial actions first to ensure they're done before later actions (and thus don't overwrite following actions)
|
||||||
new Promise(resolve => {
|
new Promise<void>(resolve => {
|
||||||
promiseTracker.initial.forEach(action => action(component));
|
promiseTracker.initial.forEach(action => action(component));
|
||||||
resolve();
|
resolve();
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ suite('Dashboard Properties Widget Tests', () => {
|
|||||||
|
|
||||||
let testComponent = new PropertiesWidgetComponent(dashboardService.object, new TestChangeDetectorRef(), undefined, widgetConfig, testLogService);
|
let testComponent = new PropertiesWidgetComponent(dashboardService.object, new TestChangeDetectorRef(), undefined, widgetConfig, testLogService);
|
||||||
|
|
||||||
return new Promise(resolve => {
|
return new Promise<void>(resolve => {
|
||||||
// because config parsing is done async we need to put our asserts on the thread stack
|
// because config parsing is done async we need to put our asserts on the thread stack
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
const propertyItems: PropertyItem[] = (testComponent as any).parseProperties(databaseInfo);
|
const propertyItems: PropertyItem[] = (testComponent as any).parseProperties(databaseInfo);
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ export class NotebookSearchView extends SearchView {
|
|||||||
public startSearch(query: ITextQuery, excludePatternText: string, includePatternText: string, triggeredOnType: boolean, searchWidget: NotebookSearchWidget): Thenable<void> {
|
public startSearch(query: ITextQuery, excludePatternText: string, includePatternText: string, triggeredOnType: boolean, searchWidget: NotebookSearchWidget): Thenable<void> {
|
||||||
let progressComplete: () => void;
|
let progressComplete: () => void;
|
||||||
this.progressService.withProgress({ location: this.getProgressLocation(), delay: triggeredOnType ? 300 : 0 }, _progress => {
|
this.progressService.withProgress({ location: this.getProgressLocation(), delay: triggeredOnType ? 300 : 0 }, _progress => {
|
||||||
return new Promise(resolve => progressComplete = resolve);
|
return new Promise<void>(resolve => progressComplete = resolve);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.state = SearchUIState.Searching;
|
this.state = SearchUIState.Searching;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export class NotebookMarkdownRenderer {
|
|||||||
|
|
||||||
// signal to code-block render that the element has been created
|
// signal to code-block render that the element has been created
|
||||||
let signalInnerHTML: () => void;
|
let signalInnerHTML: () => void;
|
||||||
const withInnerHTML = new Promise(c => signalInnerHTML = c);
|
const withInnerHTML = new Promise<void>(c => signalInnerHTML = c);
|
||||||
|
|
||||||
let notebookFolder = this._notebookURI ? path.join(path.dirname(this._notebookURI.fsPath), path.sep) : '';
|
let notebookFolder = this._notebookURI ? path.join(path.dirname(this._notebookURI.fsPath), path.sep) : '';
|
||||||
if (!this._baseUrls.some(x => x === notebookFolder)) {
|
if (!this._baseUrls.some(x => x === notebookFolder)) {
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ export class NotebookService extends Disposable implements INotebookService {
|
|||||||
timeout = timeout ?? 30000;
|
timeout = timeout ?? 30000;
|
||||||
let promises: Promise<INotebookProvider>[] = [
|
let promises: Promise<INotebookProvider>[] = [
|
||||||
providerDescriptor.instanceReady,
|
providerDescriptor.instanceReady,
|
||||||
new Promise<INotebookProvider>((resolve, reject) => setTimeout(() => resolve(), timeout))
|
new Promise<INotebookProvider>((resolve, reject) => setTimeout(() => resolve(undefined), timeout))
|
||||||
];
|
];
|
||||||
return Promise.race(promises);
|
return Promise.race(promises);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -283,7 +283,7 @@ export class TreeUpdateUtils {
|
|||||||
reject(new Error(e.errorMessage));
|
reject(new Error(e.errorMessage));
|
||||||
}
|
}
|
||||||
if (e.connection.id === connection.id) {
|
if (e.connection.id === connection.id) {
|
||||||
resolve();
|
resolve(undefined);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ export class ActionBar extends Disposable implements IActionRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
push(arg: IAction | ReadonlyArray<IAction>, options: IActionOptions = {}): void {
|
push(arg: IAction | ReadonlyArray<IAction>, options: IActionOptions = {}): void {
|
||||||
const actions: ReadonlyArray<IAction> = Array.isArray(arg) ? arg : [arg];
|
const actions: ReadonlyArray<IAction> = Array.isArray(arg) ? arg : [<IAction>arg];
|
||||||
|
|
||||||
let index = types.isNumber(options.index) ? options.index : null;
|
let index = types.isNumber(options.index) ? options.index : null;
|
||||||
|
|
||||||
|
|||||||
@@ -1396,7 +1396,7 @@ suite('TreeModel - Dynamic data model', () => {
|
|||||||
assert.equal(gotTimes, 1);
|
assert.equal(gotTimes, 1);
|
||||||
|
|
||||||
let p2Complete: () => void;
|
let p2Complete: () => void;
|
||||||
dataModel.promiseFactory = () => { return new Promise((c) => { p2Complete = c; }); };
|
dataModel.promiseFactory = () => { return new Promise<void>((c) => { p2Complete = c; }); };
|
||||||
const p2 = model.refresh('father');
|
const p2 = model.refresh('father');
|
||||||
|
|
||||||
// same situation still
|
// same situation still
|
||||||
|
|||||||
@@ -745,7 +745,7 @@ export class CompositeDragAndDropObserver extends Disposable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function toggleDropEffect(dataTransfer: DataTransfer | null, dropEffect: string, shouldHaveIt: boolean) {
|
export function toggleDropEffect(dataTransfer: DataTransfer | null, dropEffect: 'none' | 'copy' | 'link' | 'move', shouldHaveIt: boolean) {
|
||||||
if (!dataTransfer) {
|
if (!dataTransfer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -775,10 +775,10 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
|
|||||||
const newResources = this.toUserDataSyncResourceGroups(
|
const newResources = this.toUserDataSyncResourceGroups(
|
||||||
(this.manualSync?.preview || [])
|
(this.manualSync?.preview || [])
|
||||||
.map(([syncResource, syncResourcePreview]) =>
|
.map(([syncResource, syncResourcePreview]) =>
|
||||||
([
|
([
|
||||||
syncResource,
|
syncResource,
|
||||||
syncResourcePreview.resourcePreviews
|
syncResourcePreview.resourcePreviews
|
||||||
]))
|
]))
|
||||||
);
|
);
|
||||||
if (!equals(newResources, this._resources, (a, b) => isEqual(a.local, b.local) && a.mergeState === b.mergeState)) {
|
if (!equals(newResources, this._resources, (a, b) => isEqual(a.local, b.local) && a.mergeState === b.mergeState)) {
|
||||||
this._resources = newResources;
|
this._resources = newResources;
|
||||||
|
|||||||
@@ -136,16 +136,16 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
|
|||||||
private async updateConflicts(conflicts: [SyncResource, IResourcePreview[]][]): Promise<void> {
|
private async updateConflicts(conflicts: [SyncResource, IResourcePreview[]][]): Promise<void> {
|
||||||
// Revive URIs
|
// Revive URIs
|
||||||
this._conflicts = conflicts.map(([syncResource, conflicts]) =>
|
this._conflicts = conflicts.map(([syncResource, conflicts]) =>
|
||||||
([
|
([
|
||||||
syncResource,
|
syncResource,
|
||||||
conflicts.map(r =>
|
conflicts.map(r =>
|
||||||
({
|
({
|
||||||
...r,
|
...r,
|
||||||
localResource: URI.revive(r.localResource),
|
localResource: URI.revive(r.localResource),
|
||||||
remoteResource: URI.revive(r.remoteResource),
|
remoteResource: URI.revive(r.remoteResource),
|
||||||
previewResource: URI.revive(r.previewResource),
|
previewResource: URI.revive(r.previewResource),
|
||||||
}))
|
}))
|
||||||
]));
|
]));
|
||||||
this._onDidChangeConflicts.fire(this._conflicts);
|
this._onDidChangeConflicts.fire(this._conflicts);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,19 +239,19 @@ class ManualSyncTask implements IManualSyncTask {
|
|||||||
|
|
||||||
private deserializePreviews(previews: [SyncResource, ISyncResourcePreview][]): [SyncResource, ISyncResourcePreview][] {
|
private deserializePreviews(previews: [SyncResource, ISyncResourcePreview][]): [SyncResource, ISyncResourcePreview][] {
|
||||||
return previews.map(([syncResource, preview]) =>
|
return previews.map(([syncResource, preview]) =>
|
||||||
([
|
([
|
||||||
syncResource,
|
syncResource,
|
||||||
{
|
{
|
||||||
isLastSyncFromCurrentMachine: preview.isLastSyncFromCurrentMachine,
|
isLastSyncFromCurrentMachine: preview.isLastSyncFromCurrentMachine,
|
||||||
resourcePreviews: preview.resourcePreviews.map(r => ({
|
resourcePreviews: preview.resourcePreviews.map(r => ({
|
||||||
...r,
|
...r,
|
||||||
localResource: URI.revive(r.localResource),
|
localResource: URI.revive(r.localResource),
|
||||||
remoteResource: URI.revive(r.remoteResource),
|
remoteResource: URI.revive(r.remoteResource),
|
||||||
previewResource: URI.revive(r.previewResource),
|
previewResource: URI.revive(r.previewResource),
|
||||||
acceptedResource: URI.revive(r.acceptedResource),
|
acceptedResource: URI.revive(r.acceptedResource),
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user