diff --git a/extensions/integration-tests/src/test/dacpac.test.ts b/extensions/integration-tests/src/test/dacpac.test.ts index b508909845..3df1f506cd 100644 --- a/extensions/integration-tests/src/test/dacpac.test.ts +++ b/extensions/integration-tests/src/test/dacpac.test.ts @@ -64,7 +64,7 @@ suite('Dacpac integration test suite', () => { assert(extractResult.success === true && extractResult.errorMessage === '', `Extract dacpac should succeed. Expected: there should be no error. Actual Error message: "${extractResult.errorMessage}"`); } finally { - await utils.deleteDB(server, databaseName, ownerUri); + await utils.tryDeleteDB(server, databaseName, ownerUri); } }); @@ -109,7 +109,7 @@ suite('Dacpac integration test suite', () => { await utils.assertFileGenerationResult(packageFilePath, retryCount); assert(exportResult.success === true && exportResult.errorMessage === '', `Expected: Export bacpac should succeed and there should be no error. Actual Error message: "${exportResult.errorMessage}"`); } finally { - await utils.deleteDB(server, databaseName, ownerUri); + await utils.tryDeleteDB(server, databaseName, ownerUri); } }); }); diff --git a/extensions/integration-tests/src/test/objectExplorer.test.ts b/extensions/integration-tests/src/test/objectExplorer.test.ts index 3615970e5f..8966d09991 100644 --- a/extensions/integration-tests/src/test/objectExplorer.test.ts +++ b/extensions/integration-tests/src/test/objectExplorer.test.ts @@ -6,7 +6,7 @@ import 'mocha'; import * as azdata from 'azdata'; import { getBdcServer, TestServerProfile, getAzureServer, getStandaloneServer } from './testConfig'; -import { connectToServer, createDB, deleteDB, DefaultConnectTimeoutInMs, asyncTimeout } from './utils'; +import { connectToServer, createDB, DefaultConnectTimeoutInMs, asyncTimeout, tryDeleteDB } from './utils'; import * as assert from 'assert'; suite('Object Explorer integration suite', () => { @@ -129,7 +129,7 @@ async function verifyDBContextMenu(server: TestServerProfile, timeoutinMS: numbe return assert(expectedActions.length === actions.length && expectedString === actualString, `Expected actions: "${expectedString}", Actual actions: "${actualString}"`); } finally { - await deleteDB(server, dbName, ownerUri); + await tryDeleteDB(server, dbName, ownerUri); } } diff --git a/extensions/integration-tests/src/test/schemaCompare.test.ts b/extensions/integration-tests/src/test/schemaCompare.test.ts index 56f80bad77..c560c541bd 100644 --- a/extensions/integration-tests/src/test/schemaCompare.test.ts +++ b/extensions/integration-tests/src/test/schemaCompare.test.ts @@ -156,8 +156,8 @@ suite('Schema compare integration test suite', () => { await fs.promises.unlink(filepath); } finally { - await utils.deleteDB(server, sourceDB, ownerUri); - await utils.deleteDB(server, targetDB, ownerUri); + await utils.tryDeleteDB(server, sourceDB, ownerUri); + await utils.tryDeleteDB(server, targetDB, ownerUri); } }); test('Schema compare dacpac to database comparison, script generation, and scmp', async function () { @@ -224,7 +224,7 @@ suite('Schema compare integration test suite', () => { assert(openScmpResult.targetEndpointInfo.databaseName === target.databaseName, `Expected: target database to be ${target.databaseName}, Actual: ${openScmpResult.targetEndpointInfo.databaseName}`); } finally { - await utils.deleteDB(server, targetDB, ownerUri); + await utils.tryDeleteDB(server, targetDB, ownerUri); } }); test('Schema compare dacpac to dacpac comparison with include exclude', async function () { diff --git a/extensions/integration-tests/src/test/utils.ts b/extensions/integration-tests/src/test/utils.ts index d2e0a910dd..920af801c1 100644 --- a/extensions/integration-tests/src/test/utils.ts +++ b/extensions/integration-tests/src/test/utils.ts @@ -109,6 +109,12 @@ export async function createDB(dbName: string, ownerUri: string): Promise assert(dbCreatedResult.columnInfo[0].columnName !== 'ErrorMessage', 'DB creation threw error'); } +/** + * Attempts to delete a database, throwing an exception if it fails. + * @param server The server information + * @param dbName The name of the DB to delete + * @param ownerUri The ownerUri of the connection used to run the query + */ export async function deleteDB(server: TestServerProfile, dbName: string, ownerUri: string): Promise { let query = `BEGIN TRY ALTER DATABASE ${dbName} @@ -123,7 +129,23 @@ export async function deleteDB(server: TestServerProfile, dbName: string, ownerU ownerUri = await ensureServerConnected(server, ownerUri); let dbDeleteResult = await runQuery(query, ownerUri); - assert(dbDeleteResult.columnInfo[0].columnName !== 'ErrorMessage', 'DB deletion threw error'); + assert(dbDeleteResult.columnInfo[0].columnName !== 'ErrorMessage', `Error deleting db ${dbName} : ${dbDeleteResult.rows[0][0]}`); +} + +/** + * Attempts to delete a database, returning true if successful and false if not. + * @param server The server information + * @param dbName The name of the DB to delete + * @param ownerUri The ownerUri of the connection used to run the query + */ +export async function tryDeleteDB(server: TestServerProfile, dbName: string, ownerUri: string): Promise { + try { + deleteDB(server, dbName, ownerUri); + return true; + } catch (err) { + console.warn(err); + return false; + } } async function ensureServerConnected(server: TestServerProfile, ownerUri: string): Promise {