mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
add PGSQL to integration test (#6040)
* Verify providers in integration test * include pgsql
This commit is contained in:
Binary file not shown.
@@ -25,6 +25,7 @@ export function activate(context: vscode.ExtensionContext) {
|
|||||||
let installerFullPath = join(extensionInstallersFolder, installers[i]);
|
let installerFullPath = join(extensionInstallersFolder, installers[i]);
|
||||||
console.info(`installing extension at ${installerFullPath}`);
|
console.info(`installing extension at ${installerFullPath}`);
|
||||||
await azdata.extensions.install(installerFullPath);
|
await azdata.extensions.install(installerFullPath);
|
||||||
|
console.info(`extension has been installed successfully. vsix: ${installers[i]}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await setConfiguration('workbench.enablePreviewFeatures', true);
|
await setConfiguration('workbench.enablePreviewFeatures', true);
|
||||||
@@ -34,26 +35,71 @@ export function activate(context: vscode.ExtensionContext) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
vscode.commands.registerCommand('test.waitForExtensionsToLoad', async () => {
|
vscode.commands.registerCommand('test.waitForExtensionsToLoad', async () => {
|
||||||
let expectedExtensions = ['Microsoft.agent', 'Microsoft.import', 'Microsoft.mssql', 'Microsoft.profiler'];
|
const expectedExtensions = ['Microsoft.agent', 'Microsoft.import', 'Microsoft.mssql', 'Microsoft.profiler', 'Microsoft.azuredatastudio-postgresql'];
|
||||||
|
const commonFeatures: azdata.DataProviderType[] = [
|
||||||
|
azdata.DataProviderType.AdminServicesProvider,
|
||||||
|
azdata.DataProviderType.BackupProvider,
|
||||||
|
azdata.DataProviderType.CapabilitiesProvider,
|
||||||
|
azdata.DataProviderType.ConnectionProvider,
|
||||||
|
azdata.DataProviderType.FileBrowserProvider,
|
||||||
|
azdata.DataProviderType.MetadataProvider,
|
||||||
|
azdata.DataProviderType.ObjectExplorerProvider,
|
||||||
|
azdata.DataProviderType.ProfilerProvider,
|
||||||
|
azdata.DataProviderType.QueryProvider,
|
||||||
|
azdata.DataProviderType.RestoreProvider,
|
||||||
|
azdata.DataProviderType.ScriptingProvider,
|
||||||
|
azdata.DataProviderType.TaskServicesProvider];
|
||||||
|
|
||||||
|
const features_mssql: azdata.DataProviderType[] = [
|
||||||
|
azdata.DataProviderType.AgentServicesProvider,
|
||||||
|
azdata.DataProviderType.DacFxServicesProvider,
|
||||||
|
azdata.DataProviderType.IconProvider,
|
||||||
|
azdata.DataProviderType.SchemaCompareServicesProvider
|
||||||
|
];
|
||||||
|
|
||||||
|
features_mssql.push(...commonFeatures);
|
||||||
|
|
||||||
|
const providerFeatureMapping: { providerId: string, features: azdata.DataProviderType[] }[] = [
|
||||||
|
{
|
||||||
|
providerId: 'MSSQL',
|
||||||
|
features: features_mssql
|
||||||
|
}, {
|
||||||
|
providerId: 'PGSQL',
|
||||||
|
features: commonFeatures
|
||||||
|
}];
|
||||||
|
|
||||||
do {
|
do {
|
||||||
let extensions = vscode.extensions.all.filter(ext => { return expectedExtensions.indexOf(ext.id) !== -1; });
|
let extensions = vscode.extensions.all.filter(ext => { return expectedExtensions.indexOf(ext.id) !== -1; });
|
||||||
let isReady = true;
|
const extensionsNotInReadyState: string[] = [];
|
||||||
for (let i = 0; i < extensions.length; i++) {
|
|
||||||
let extension = extensions[i];
|
extensions.forEach(extension => {
|
||||||
isReady = isReady && extension.isActive;
|
if (!extension.isActive) {
|
||||||
if (!isReady) {
|
extensionsNotInReadyState.push(extension.id);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const providerTypesNotInReadyState: string[] = [];
|
||||||
|
if (extensionsNotInReadyState.length === 0) {
|
||||||
|
providerFeatureMapping.forEach(entry => {
|
||||||
|
entry.features.forEach(feature => {
|
||||||
|
const provider = azdata.dataprotocol.getProvider(entry.providerId, feature);
|
||||||
|
if (!provider) {
|
||||||
|
providerTypesNotInReadyState.push(`${entry.providerId}:${feature}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isReady) {
|
if (extensionsNotInReadyState.length === 0 && providerTypesNotInReadyState.length === 0) {
|
||||||
console.info('All extensions are ready');
|
console.info('All extensions are ready');
|
||||||
showStatusBarItem(statusBarItem, ALL_EXTENSION_LOADED_TEXT);
|
showStatusBarItem(statusBarItem, ALL_EXTENSION_LOADED_TEXT);
|
||||||
break;
|
break;
|
||||||
|
} else if (extensionsNotInReadyState.length !== 0) {
|
||||||
|
console.warn(`the following extensions are not ready: ${extensionsNotInReadyState.join(',')}`);
|
||||||
} else {
|
} else {
|
||||||
console.warn(`At least one extension is not ready, waiting one second before recheck.}`);
|
console.warn(`the following providers are not ready: ${providerTypesNotInReadyState.join(',')}`);
|
||||||
await new Promise(resolve => { setTimeout(resolve, 1000); });
|
|
||||||
}
|
}
|
||||||
|
await new Promise(resolve => { setTimeout(resolve, 2000); });
|
||||||
}
|
}
|
||||||
while (true);
|
while (true);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -25,9 +25,12 @@ assert(getConfigValue(EnvironmentVariable_BDC_SERVER) !== undefined &&
|
|||||||
if (!context.RunTest) {
|
if (!context.RunTest) {
|
||||||
suite('integration test setup', () => {
|
suite('integration test setup', () => {
|
||||||
test('test setup', async function () {
|
test('test setup', async function () {
|
||||||
//Prepare the environment and make it ready for testing
|
this.timeout(5 * 60 * 1000);
|
||||||
|
// Prepare the environment and make it ready for testing
|
||||||
await vscode.commands.executeCommand('test.setupIntegrationTest');
|
await vscode.commands.executeCommand('test.setupIntegrationTest');
|
||||||
//Reload the window, this is required for some changes made by the 'test.setupIntegrationTest' to work
|
// Wait for the extensions to load
|
||||||
|
await vscode.commands.executeCommand('test.waitForExtensionsToLoad');
|
||||||
|
// Reload the window, this is required for some changes made by the 'test.setupIntegrationTest' to work
|
||||||
await vscode.commands.executeCommand('workbench.action.reloadWindow');
|
await vscode.commands.executeCommand('workbench.action.reloadWindow');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,6 +27,6 @@ export class MainThreadExtensionManagement implements MainThreadExtensionManagem
|
|||||||
}
|
}
|
||||||
|
|
||||||
public $install(vsixPath: string): Thenable<string> {
|
public $install(vsixPath: string): Thenable<string> {
|
||||||
return this._extensionService.install(URI.parse(vsixPath)).then((value: IExtensionIdentifier) => { return undefined; }, (reason: any) => { return reason ? reason.toString() : undefined; });
|
return this._extensionService.install(URI.file(vsixPath)).then((value: IExtensionIdentifier) => { return undefined; }, (reason: any) => { return reason ? reason.toString() : undefined; });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user