fix intermittent sql database project test failure (#13114)

This commit is contained in:
Kim Santiago
2020-10-28 13:15:07 -07:00
committed by GitHub
parent 5c474d8614
commit dccccd0110
2 changed files with 14 additions and 14 deletions

View File

@@ -588,36 +588,36 @@ export class Project {
} }
} }
private addSystemDatabaseReferenceToProjFile(entry: SystemDatabaseReferenceProjectEntry): void { private async addSystemDatabaseReferenceToProjFile(entry: SystemDatabaseReferenceProjectEntry): Promise<void> {
const systemDbReferenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference); const systemDbReferenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference);
// if it's a system database reference, we'll add an additional node with the SSDT location of the dacpac later // if it's a system database reference, we'll add an additional node with the SSDT location of the dacpac later
systemDbReferenceNode.setAttribute(constants.Condition, constants.NetCoreCondition); systemDbReferenceNode.setAttribute(constants.Condition, constants.NetCoreCondition);
systemDbReferenceNode.setAttribute(constants.Include, entry.pathForSqlProj()); systemDbReferenceNode.setAttribute(constants.Include, entry.pathForSqlProj());
this.addDatabaseReferenceChildren(systemDbReferenceNode, entry); await this.addDatabaseReferenceChildren(systemDbReferenceNode, entry);
this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(systemDbReferenceNode); this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(systemDbReferenceNode);
// add a reference to the system dacpac in SSDT if it's a system db // add a reference to the system dacpac in SSDT if it's a system db
const ssdtReferenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference); const ssdtReferenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference);
ssdtReferenceNode.setAttribute(constants.Condition, constants.NotNetCoreCondition); ssdtReferenceNode.setAttribute(constants.Condition, constants.NotNetCoreCondition);
ssdtReferenceNode.setAttribute(constants.Include, entry.ssdtPathForSqlProj()); ssdtReferenceNode.setAttribute(constants.Include, entry.ssdtPathForSqlProj());
this.addDatabaseReferenceChildren(ssdtReferenceNode, entry); await this.addDatabaseReferenceChildren(ssdtReferenceNode, entry);
this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(ssdtReferenceNode); this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(ssdtReferenceNode);
} }
private addDatabaseReferenceToProjFile(entry: IDatabaseReferenceProjectEntry): void { private async addDatabaseReferenceToProjFile(entry: IDatabaseReferenceProjectEntry): Promise<void> {
if (entry instanceof SystemDatabaseReferenceProjectEntry) { if (entry instanceof SystemDatabaseReferenceProjectEntry) {
this.addSystemDatabaseReferenceToProjFile(<SystemDatabaseReferenceProjectEntry>entry); await this.addSystemDatabaseReferenceToProjFile(<SystemDatabaseReferenceProjectEntry>entry);
} else if (entry instanceof SqlProjectReferenceProjectEntry) { } else if (entry instanceof SqlProjectReferenceProjectEntry) {
const referenceNode = this.projFileXmlDoc.createElement(constants.ProjectReference); const referenceNode = this.projFileXmlDoc.createElement(constants.ProjectReference);
referenceNode.setAttribute(constants.Include, entry.pathForSqlProj()); referenceNode.setAttribute(constants.Include, entry.pathForSqlProj());
this.addProjectReferenceChildren(referenceNode, <SqlProjectReferenceProjectEntry>entry); this.addProjectReferenceChildren(referenceNode, <SqlProjectReferenceProjectEntry>entry);
this.addDatabaseReferenceChildren(referenceNode, entry); await this.addDatabaseReferenceChildren(referenceNode, entry);
this.findOrCreateItemGroup(constants.ProjectReference).appendChild(referenceNode); this.findOrCreateItemGroup(constants.ProjectReference).appendChild(referenceNode);
} else { } else {
const referenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference); const referenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference);
referenceNode.setAttribute(constants.Include, entry.pathForSqlProj()); referenceNode.setAttribute(constants.Include, entry.pathForSqlProj());
this.addDatabaseReferenceChildren(referenceNode, entry); await this.addDatabaseReferenceChildren(referenceNode, entry);
this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(referenceNode); this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(referenceNode);
} }
@@ -631,7 +631,7 @@ export class Project {
return found; return found;
} }
private addDatabaseReferenceChildren(referenceNode: any, entry: IDatabaseReferenceProjectEntry): void { private async addDatabaseReferenceChildren(referenceNode: any, entry: IDatabaseReferenceProjectEntry): Promise<void> {
const suppressMissingDependenciesErrorNode = this.projFileXmlDoc.createElement(constants.SuppressMissingDependenciesErrors); const suppressMissingDependenciesErrorNode = this.projFileXmlDoc.createElement(constants.SuppressMissingDependenciesErrors);
const suppressMissingDependenciesErrorTextNode = this.projFileXmlDoc.createTextNode(entry.suppressMissingDependenciesErrors ? constants.True : constants.False); const suppressMissingDependenciesErrorTextNode = this.projFileXmlDoc.createTextNode(entry.suppressMissingDependenciesErrors ? constants.True : constants.False);
suppressMissingDependenciesErrorNode.appendChild(suppressMissingDependenciesErrorTextNode); suppressMissingDependenciesErrorNode.appendChild(suppressMissingDependenciesErrorTextNode);
@@ -644,7 +644,7 @@ export class Project {
referenceNode.appendChild(databaseSqlCmdVariableElement); referenceNode.appendChild(databaseSqlCmdVariableElement);
// add SQLCMD variable // add SQLCMD variable
this.addSqlCmdVariable((<DacpacReferenceProjectEntry>entry).databaseSqlCmdVariable!, (<DacpacReferenceProjectEntry>entry).databaseVariableLiteralValue!); await this.addSqlCmdVariable((<DacpacReferenceProjectEntry>entry).databaseSqlCmdVariable!, (<DacpacReferenceProjectEntry>entry).databaseVariableLiteralValue!);
} else if (entry.databaseVariableLiteralValue) { } else if (entry.databaseVariableLiteralValue) {
const databaseVariableLiteralValueElement = this.projFileXmlDoc.createElement(constants.DatabaseVariableLiteralValue); const databaseVariableLiteralValueElement = this.projFileXmlDoc.createElement(constants.DatabaseVariableLiteralValue);
const databaseTextNode = this.projFileXmlDoc.createTextNode(entry.databaseVariableLiteralValue); const databaseTextNode = this.projFileXmlDoc.createTextNode(entry.databaseVariableLiteralValue);
@@ -659,7 +659,7 @@ export class Project {
referenceNode.appendChild(serverSqlCmdVariableElement); referenceNode.appendChild(serverSqlCmdVariableElement);
// add SQLCMD variable // add SQLCMD variable
this.addSqlCmdVariable((<DacpacReferenceProjectEntry>entry).serverSqlCmdVariable!, (<DacpacReferenceProjectEntry>entry).serverName!); await this.addSqlCmdVariable((<DacpacReferenceProjectEntry>entry).serverSqlCmdVariable!, (<DacpacReferenceProjectEntry>entry).serverName!);
} }
} }
@@ -809,7 +809,7 @@ export class Project {
} }
} }
private async addToProjFile(entry: ProjectEntry, xmlTag?: string) { private async addToProjFile(entry: ProjectEntry, xmlTag?: string): Promise<void> {
switch (entry.type) { switch (entry.type) {
case EntryType.File: case EntryType.File:
this.addFileToProjFile((<FileProjectEntry>entry).relativePath, xmlTag ? xmlTag : constants.Build); this.addFileToProjFile((<FileProjectEntry>entry).relativePath, xmlTag ? xmlTag : constants.Build);
@@ -818,7 +818,7 @@ export class Project {
this.addFolderToProjFile((<FileProjectEntry>entry).relativePath); this.addFolderToProjFile((<FileProjectEntry>entry).relativePath);
break; break;
case EntryType.DatabaseReference: case EntryType.DatabaseReference:
this.addDatabaseReferenceToProjFile(<IDatabaseReferenceProjectEntry>entry); await this.addDatabaseReferenceToProjFile(<IDatabaseReferenceProjectEntry>entry);
break; break;
case EntryType.SqlCmdVariable: case EntryType.SqlCmdVariable:
this.addSqlCmdVariableToProjFile(<SqlCmdVariableProjectEntry>entry); this.addSqlCmdVariableToProjFile(<SqlCmdVariableProjectEntry>entry);

View File

@@ -243,14 +243,14 @@ describe('ProjectsController', function (): void {
sinon.stub(vscode.window, 'showWarningMessage').returns(<any>Promise.resolve(constants.yesString)); sinon.stub(vscode.window, 'showWarningMessage').returns(<any>Promise.resolve(constants.yesString));
// add dacpac reference // add dacpac reference
proj.addDatabaseReference({ await proj.addDatabaseReference({
dacpacFileLocation: vscode.Uri.file('test2.dacpac'), dacpacFileLocation: vscode.Uri.file('test2.dacpac'),
databaseName: 'test2DbName', databaseName: 'test2DbName',
databaseVariable: 'test2Db', databaseVariable: 'test2Db',
suppressMissingDependenciesErrors: false suppressMissingDependenciesErrors: false
}); });
// add project reference // add project reference
proj.addProjectReference({ await proj.addProjectReference({
projectName: 'project1', projectName: 'project1',
projectGuid: '', projectGuid: '',
projectRelativePath: vscode.Uri.file(path.join('..', 'project1', 'project1.sqlproj')), projectRelativePath: vscode.Uri.file(path.join('..', 'project1', 'project1.sqlproj')),