Don't throw if cleanup drop fails (#11405)

This commit is contained in:
Charles Gagnon
2020-07-17 10:59:13 -07:00
committed by GitHub
parent 42fa5c3275
commit 4594943b53
4 changed files with 30 additions and 8 deletions

View File

@@ -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);
}
});
});

View File

@@ -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);
}
}

View File

@@ -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 () {

View File

@@ -109,6 +109,12 @@ export async function createDB(dbName: string, ownerUri: string): Promise<void>
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<void> {
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<boolean> {
try {
deleteDB(server, dbName, ownerUri);
return true;
} catch (err) {
console.warn(err);
return false;
}
}
async function ensureServerConnected(server: TestServerProfile, ownerUri: string): Promise<string> {