diff --git a/extensions/sql-database-projects/src/models/project.ts b/extensions/sql-database-projects/src/models/project.ts index 4f2d4fb518..1a92e59405 100644 --- a/extensions/sql-database-projects/src/models/project.ts +++ b/extensions/sql-database-projects/src/models/project.ts @@ -588,36 +588,36 @@ export class Project { } } - private addSystemDatabaseReferenceToProjFile(entry: SystemDatabaseReferenceProjectEntry): void { + private async addSystemDatabaseReferenceToProjFile(entry: SystemDatabaseReferenceProjectEntry): Promise { 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 systemDbReferenceNode.setAttribute(constants.Condition, constants.NetCoreCondition); systemDbReferenceNode.setAttribute(constants.Include, entry.pathForSqlProj()); - this.addDatabaseReferenceChildren(systemDbReferenceNode, entry); + await this.addDatabaseReferenceChildren(systemDbReferenceNode, entry); this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(systemDbReferenceNode); // add a reference to the system dacpac in SSDT if it's a system db const ssdtReferenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference); ssdtReferenceNode.setAttribute(constants.Condition, constants.NotNetCoreCondition); ssdtReferenceNode.setAttribute(constants.Include, entry.ssdtPathForSqlProj()); - this.addDatabaseReferenceChildren(ssdtReferenceNode, entry); + await this.addDatabaseReferenceChildren(ssdtReferenceNode, entry); this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(ssdtReferenceNode); } - private addDatabaseReferenceToProjFile(entry: IDatabaseReferenceProjectEntry): void { + private async addDatabaseReferenceToProjFile(entry: IDatabaseReferenceProjectEntry): Promise { if (entry instanceof SystemDatabaseReferenceProjectEntry) { - this.addSystemDatabaseReferenceToProjFile(entry); + await this.addSystemDatabaseReferenceToProjFile(entry); } else if (entry instanceof SqlProjectReferenceProjectEntry) { const referenceNode = this.projFileXmlDoc.createElement(constants.ProjectReference); referenceNode.setAttribute(constants.Include, entry.pathForSqlProj()); this.addProjectReferenceChildren(referenceNode, entry); - this.addDatabaseReferenceChildren(referenceNode, entry); + await this.addDatabaseReferenceChildren(referenceNode, entry); this.findOrCreateItemGroup(constants.ProjectReference).appendChild(referenceNode); } else { const referenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference); referenceNode.setAttribute(constants.Include, entry.pathForSqlProj()); - this.addDatabaseReferenceChildren(referenceNode, entry); + await this.addDatabaseReferenceChildren(referenceNode, entry); this.findOrCreateItemGroup(constants.ArtifactReference).appendChild(referenceNode); } @@ -631,7 +631,7 @@ export class Project { return found; } - private addDatabaseReferenceChildren(referenceNode: any, entry: IDatabaseReferenceProjectEntry): void { + private async addDatabaseReferenceChildren(referenceNode: any, entry: IDatabaseReferenceProjectEntry): Promise { const suppressMissingDependenciesErrorNode = this.projFileXmlDoc.createElement(constants.SuppressMissingDependenciesErrors); const suppressMissingDependenciesErrorTextNode = this.projFileXmlDoc.createTextNode(entry.suppressMissingDependenciesErrors ? constants.True : constants.False); suppressMissingDependenciesErrorNode.appendChild(suppressMissingDependenciesErrorTextNode); @@ -644,7 +644,7 @@ export class Project { referenceNode.appendChild(databaseSqlCmdVariableElement); // add SQLCMD variable - this.addSqlCmdVariable((entry).databaseSqlCmdVariable!, (entry).databaseVariableLiteralValue!); + await this.addSqlCmdVariable((entry).databaseSqlCmdVariable!, (entry).databaseVariableLiteralValue!); } else if (entry.databaseVariableLiteralValue) { const databaseVariableLiteralValueElement = this.projFileXmlDoc.createElement(constants.DatabaseVariableLiteralValue); const databaseTextNode = this.projFileXmlDoc.createTextNode(entry.databaseVariableLiteralValue); @@ -659,7 +659,7 @@ export class Project { referenceNode.appendChild(serverSqlCmdVariableElement); // add SQLCMD variable - this.addSqlCmdVariable((entry).serverSqlCmdVariable!, (entry).serverName!); + await this.addSqlCmdVariable((entry).serverSqlCmdVariable!, (entry).serverName!); } } @@ -809,7 +809,7 @@ export class Project { } } - private async addToProjFile(entry: ProjectEntry, xmlTag?: string) { + private async addToProjFile(entry: ProjectEntry, xmlTag?: string): Promise { switch (entry.type) { case EntryType.File: this.addFileToProjFile((entry).relativePath, xmlTag ? xmlTag : constants.Build); @@ -818,7 +818,7 @@ export class Project { this.addFolderToProjFile((entry).relativePath); break; case EntryType.DatabaseReference: - this.addDatabaseReferenceToProjFile(entry); + await this.addDatabaseReferenceToProjFile(entry); break; case EntryType.SqlCmdVariable: this.addSqlCmdVariableToProjFile(entry); diff --git a/extensions/sql-database-projects/src/test/projectController.test.ts b/extensions/sql-database-projects/src/test/projectController.test.ts index abd47a297c..bc08dc3bfb 100644 --- a/extensions/sql-database-projects/src/test/projectController.test.ts +++ b/extensions/sql-database-projects/src/test/projectController.test.ts @@ -243,14 +243,14 @@ describe('ProjectsController', function (): void { sinon.stub(vscode.window, 'showWarningMessage').returns(Promise.resolve(constants.yesString)); // add dacpac reference - proj.addDatabaseReference({ + await proj.addDatabaseReference({ dacpacFileLocation: vscode.Uri.file('test2.dacpac'), databaseName: 'test2DbName', databaseVariable: 'test2Db', suppressMissingDependenciesErrors: false }); // add project reference - proj.addProjectReference({ + await proj.addProjectReference({ projectName: 'project1', projectGuid: '', projectRelativePath: vscode.Uri.file(path.join('..', 'project1', 'project1.sqlproj')),