From e3710894a60cb31a15667ad99c3fbf740f2acf6a Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Tue, 4 Feb 2020 14:55:11 -0800 Subject: [PATCH] Add support for ${workspaceFolderBasename} (#1044) --- src/drivers/driver.ts | 1 + src/expand.ts | 1 + src/paths.ts | 1 + .../test/variable-substitution.test.ts | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+) diff --git a/src/drivers/driver.ts b/src/drivers/driver.ts index bc04cc525..f6a0df57f 100644 --- a/src/drivers/driver.ts +++ b/src/drivers/driver.ts @@ -214,6 +214,7 @@ export abstract class CMakeDriver implements vscode.Disposable { workspaceFolder: ws_root, buildType: this.currentBuildType, workspaceRootFolderName: path.basename(ws_root), + workspaceFolderBasename: path.basename(ws_root), generator: this.generatorName || 'null', userHome: paths.userHome, buildKit: this._kit ? this._kit.name : '__unknownkit__', diff --git a/src/expand.ts b/src/expand.ts index 824992c0e..9a5c8e6e4 100644 --- a/src/expand.ts +++ b/src/expand.ts @@ -28,6 +28,7 @@ export interface RequiredExpansionContextVars { buildType: string; buildKit: string; workspaceRootFolderName: string; + workspaceFolderBasename: string; generator: string; userHome: string; } diff --git a/src/paths.ts b/src/paths.ts index 8d5b7e752..1f04d6d5e 100644 --- a/src/paths.ts +++ b/src/paths.ts @@ -140,6 +140,7 @@ class Paths { buildType: '', generator: '', workspaceRootFolderName: path.basename(wsc.folder.uri.fsPath), + workspaceFolderBasename: path.basename(wsc.folder.uri.fsPath) }, }); diff --git a/test/extension-tests/successful-build/test/variable-substitution.test.ts b/test/extension-tests/successful-build/test/variable-substitution.test.ts index 8021c8ab9..7b3efa6d3 100644 --- a/test/extension-tests/successful-build/test/variable-substitution.test.ts +++ b/test/extension-tests/successful-build/test/variable-substitution.test.ts @@ -116,6 +116,24 @@ suite('[Variable Substitution]', async () => { expect(typeof cacheEntry.value).to.eq('string', '[workspaceRootFolderName] unexpected cache entry value type'); }).timeout(100000); + test('Check substitution for "workspaceFolderBasename"', async () => { + // Set fake settings + testEnv.config.updatePartial({configureSettings: {workspaceFolderBasename: '${workspaceFolderBasename}'}}); + + // Configure + expect(await cmt.configure()).to.be.eq(0, '[workspaceFolderBasename] configure failed'); + expect(testEnv.projectFolder.buildDirectory.isCMakeCachePresent).to.eql(true, 'expected cache not present'); + const cache = await CMakeCache.fromPath(await cmt.cachePath); + + const cacheEntry = cache.get('workspaceFolderBasename') as api.CacheEntry; + expect(cacheEntry.type).to.eq(api.CacheEntryType.String, '[workspaceFolderBasename] unexpected cache entry type'); + expect(cacheEntry.key) + .to.eq('workspaceFolderBasename', '[workspaceFolderBasename] unexpected cache entry key name'); + expect(cacheEntry.as()) + .to.eq(path.basename(testEnv.projectFolder.location), '[workspaceFolderBasename] substitution incorrect'); + expect(typeof cacheEntry.value).to.eq('string', '[workspaceFolderBasename] unexpected cache entry value type'); + }).timeout(100000); + test('Check substitution for "generator"', async () => { // Set fake settings testEnv.config.updatePartial({configureSettings: {generator: '${generator}'}});