Skip to content

Commit

Permalink
Merge pull request #1093 from microsoft/develop
Browse files Browse the repository at this point in the history
1.3.1 merge develop -> master
  • Loading branch information
bobbrow authored Feb 24, 2020
2 parents dc6c6b2 + 7118eb4 commit 1efb87b
Show file tree
Hide file tree
Showing 29 changed files with 96 additions and 34 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# What's New?

## 1.3.1
Improvements:
- Show "Collapse all" command on project outline view. [#839](https://github.com/microsoft/vscode-cmake-tools/issues/839) [@dirondin](https://github.com/dirondin)

Bug Fixes:
- Toolset and platform are swapped when reading from CMake cache. [#1065](https://github.com/microsoft/vscode-cmake-tools/issues/1065)
- Unable to debug targets when path is specified as absolute by the cmake-file-api. [#1067](https://github.com/microsoft/vscode-cmake-tools/issues/1067) [@KoeMai](https://github.com/KoeMai)

## 1.3.0
Improvements:
- Multi-root support. You can now open multiple folders in VS Code and CMake Tools will allow you to configure each of the projects in those folders.
Expand Down
1 change: 1 addition & 0 deletions i18n/chs/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "在文件夹 \"{0}\" 的根中找不到 CMakeLists.txt",
"starting.cmake.driver": "正在启动 CMake 驱动程序",
"bad.cmake.executable": "CMake 可执行文件“{0}”不正确。",
"switch.to.serverapi": "在低于 {0} 的版本中不支持 CMake 文件-API 通信模式。正在切换到 CMake 服务器通信模式。",
"please.upgrade.cmake": "为获得最佳体验,必须具备 CMake 服务器或 file-api 支持。请将 CMake 升级到 {0} 或更高版本。",
"starting.cmake.driver.status": "正在启动 CMake 服务器...",
"ready.status": "就绪",
Expand Down
1 change: 1 addition & 0 deletions i18n/cht/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "在資料夾 '{0}' 的根中,找不到 CMakeLists.txt",
"starting.cmake.driver": "正在啟動 CMake 驅動程式",
"bad.cmake.executable": "錯誤的 CMake 可執行檔 \"{0}\"",
"switch.to.serverapi": "{0} 之前的版本,不支援 CMake 的檔案對 api 通訊模式。正在切換到 CMake 伺服器通訊模式。",
"please.upgrade.cmake": "為達到最佳體驗,需有 CMake 伺服器或檔案 api 支援。請將 CMake 升級為 {0} 或更新版本。",
"starting.cmake.driver.status": "正在啟動 CMake 伺服器...",
"ready.status": "就緒",
Expand Down
1 change: 1 addition & 0 deletions i18n/csy/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "V kořenu složky {0} se nenašel soubor CMakeLists.txt.",
"starting.cmake.driver": "Spouští se ovladač CMake.",
"bad.cmake.executable": "Nesprávný spustitelný soubor nástrojů CMake {0}",
"switch.to.serverapi": "Režim komunikace pomocí rozhraní API souborů CMake se ve verzích starších než {0} nepodporuje. Přepíná se na režim komunikace pomocí serveru CMake.",
"please.upgrade.cmake": "Aby vaše prostředí bylo co nejlepší, vyžaduje se podpora serveru CMake nebo file-api. Upgradujte prosím CMake na verzi {0} nebo novější.",
"starting.cmake.driver.status": "Spouští se server CMake...",
"ready.status": "Připraveno",
Expand Down
1 change: 1 addition & 0 deletions i18n/deu/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "\"CMakeLists.txt\" wurde im Stamm des Ordners \"{0}\" nicht gefunden.",
"starting.cmake.driver": "CMake-Treiber wird gestartet.",
"bad.cmake.executable": "Ungültige ausführbare CMake-Datei \"{0}\".",
"switch.to.serverapi": "Der CMake-Kommunikationsmodus \"file-api\" wird in Versionen vor {0} nicht unterstützt. Es wird zum CMake-Serverkommunikationsmodus gewechselt.",
"please.upgrade.cmake": "Für ein optimales Benutzererlebnis ist die Unterstützung von CMake-Server oder file-api erforderlich. Führen Sie ein Upgrade auf CMake {0} oder höher durch.",
"starting.cmake.driver.status": "Der CMake-Server wird gestartet...",
"ready.status": "Bereit",
Expand Down
3 changes: 2 additions & 1 deletion i18n/esn/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "No se encontró CMakeLists.txt en la raíz de la carpeta \"{0}\".",
"starting.cmake.driver": "Iniciando el controlador de CMake",
"bad.cmake.executable": "El ejecutable de CMake \"{0}\" es incorrecto.",
"switch.to.serverapi": "No se admite el modo de comunicación file-api de CMake en las versiones anteriores a {0}. Cambiando al modo de comunicación del servidor de CMake.",
"please.upgrade.cmake": "Para disfrutar de la mejor experiencia, se requiere compatibilidad con file-api o con el servidor CMake. Actualice CMake a {0} o a una versión más reciente.",
"starting.cmake.driver.status": "Iniciando el servidor de CMake...",
"ready.status": "Listo",
Expand Down Expand Up @@ -61,7 +62,7 @@
"run.build": "Compilando la carpeta: {0}",
"unable.to.configure": "Error de compilación: no se puede configurar el proyecto",
"driver.died.after.successful.configure": "El controlador de CMake finalizó de forma inmediata después de que la configuración se realizara correctamente.",
"building.status": "Edificio",
"building.status": "Compilando",
"building.target": "Compilando: {0}",
"stop.on.cancellation": "Detener al cancelar",
"starting.build": "Iniciando la compilación",
Expand Down
1 change: 1 addition & 0 deletions i18n/fra/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "CMakeLists.txt est introuvable à la racine du dossier '{0}'",
"starting.cmake.driver": "Démarrage du pilote CMake",
"bad.cmake.executable": "Exécutable CMake incorrect \"{0}\".",
"switch.to.serverapi": "Le mode de communication d'API de fichier CMake n'est pas pris en charge dans les versions antérieures à {0}. Passage au mode de communication de serveur CMake.",
"please.upgrade.cmake": "Pour une expérience optimale, la prise en charge du serveur CMake ou de l'API de fichier est nécessaire. Effectuez une mise à niveau de CMake vers la version {0} ou une version plus récente.",
"starting.cmake.driver.status": "Démarrage du serveur CMake...",
"ready.status": "Prêt",
Expand Down
1 change: 1 addition & 0 deletions i18n/ita/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "CMakeLists.txt non è stato trovato nella radice della cartella '{0}'",
"starting.cmake.driver": "Avvio del driver di CMake",
"bad.cmake.executable": "L'eseguibile di CMake \"{0}\" non è valido.",
"switch.to.serverapi": "La modalità di comunicazione file-api di CMake non è supportata in versioni precedenti alla {0}. Verrà effettuato il passaggio alla modalità di comunicazione server di CMake.",
"please.upgrade.cmake": "Per un'esperienza ottimale è richiesto il supporto di file-api o il server CMake. Aggiornare CMake alla versione {0} o a una versione successiva.",
"starting.cmake.driver.status": "Avvio del server CMake...",
"ready.status": "Pronto",
Expand Down
1 change: 1 addition & 0 deletions i18n/jpn/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "フォルダー '{0}' のルートに CMakeLists.txt が見つかりませんでした",
"starting.cmake.driver": "CMake ドライバーを開始しています",
"bad.cmake.executable": "CMake 実行可能ファイル \"{0}\" が正しくありません。",
"switch.to.serverapi": "CMake file-api 通信モードは {0} より前のバージョンではサポートされていません。CMake サーバー通信モードに切り替えています。",
"please.upgrade.cmake": "最適なエクスペリエンスを得るためには、CMake サーバーまたは file-api サポートが必要です。CMake を {0} またはそれ以降にアップグレードしてください。",
"starting.cmake.driver.status": "CMake サーバーを開始しています...",
"ready.status": "準備完了",
Expand Down
1 change: 1 addition & 0 deletions i18n/kor/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "CMakeLists.txt가 '{0}' 폴더의 루트에 없음",
"starting.cmake.driver": "CMake 드라이버를 시작하는 중",
"bad.cmake.executable": "잘못된 CMake 실행 파일 \"{0}\".",
"switch.to.serverapi": "{0} 이전 버전에서는 CMake file-api 통신 모드가 지원되지 않습니다. CMake 서버 통신 모드로 전환하는 중입니다.",
"please.upgrade.cmake": "최상의 환경을 위해 CMake 서버 또는 file-api 지원이 필요합니다. CMake를 {0} 이상으로 업그레이드하세요.",
"starting.cmake.driver.status": "CMake 서버를 시작하는 중...",
"ready.status": "준비",
Expand Down
1 change: 1 addition & 0 deletions i18n/plk/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "Nie znaleziono pliku CMakeLists.txt w katalogu głównym folderu „{0}”",
"starting.cmake.driver": "Uruchamianie sterownika narzędzia CMake",
"bad.cmake.executable": "Nieprawidłowy plik wykonywalny narzędzia CMake „{0}”.",
"switch.to.serverapi": "Tryb komunikacji interfejsu API pliku narzędzia CMake nie jest obsługiwany w wersjach wcześniejszych niż {0}. Przełączanie do trybu komunikacji serwera narzędzia CMake.",
"please.upgrade.cmake": "Aby zapewnić najlepsze środowisko, wymagana jest obsługa interfejsu file-api lub serwera narzędzia CMake. Uaktualnij narzędzie CMake do wersji {0} lub nowszej.",
"starting.cmake.driver.status": "Trwa uruchamianie serwera narzędzia CMake...",
"ready.status": "Gotowe",
Expand Down
1 change: 1 addition & 0 deletions i18n/ptb/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "O CMakeLists.txt não foi encontrado na raiz da pasta '{0}'",
"starting.cmake.driver": "Iniciando o driver do CMake",
"bad.cmake.executable": "Executável CMake \"{0}\" incorreto.",
"switch.to.serverapi": "O modo de comunicação entre arquivo e API do CMake não tem suporte em versões anteriores à {0}. Alternando para o modo de comunicação do servidor do CMake.",
"please.upgrade.cmake": "Para obter a melhor experiência, é necessário o suporte ao servidor CMake ou à file-api. Atualize o CMake para o {0} ou mais recente.",
"starting.cmake.driver.status": "Iniciando o Servidor do CMake...",
"ready.status": "Pronto",
Expand Down
1 change: 1 addition & 0 deletions i18n/rus/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "Файл CMakeLists.txt не найден в корневом каталоге папки \"{0}\"",
"starting.cmake.driver": "Запуск драйвера CMake.",
"bad.cmake.executable": "Неверный исполняемый файл CMake \"{0}\".",
"switch.to.serverapi": "Режим взаимодействия file-api CMake не поддерживается в версиях ниже {0}. Переключение на режим взаимодействия сервера CMake.",
"please.upgrade.cmake": "Для оптимальной работы требуется поддержка сервера CMake или file-api. Обновите CMake до версии {0} или более поздней версии.",
"starting.cmake.driver.status": "Запуск сервера CMake…",
"ready.status": "Готово",
Expand Down
1 change: 1 addition & 0 deletions i18n/trk/src/cmake-tools.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"missing.cmakelists": "CMakeLists.txt, '{0}' klasörünün kökünde bulunamadı",
"starting.cmake.driver": "CMake sürücüsü başlatılıyor",
"bad.cmake.executable": "Hatalı \"{0}\" CMake yürütülebilir dosyası.",
"switch.to.serverapi": "CMake dosya-API iletişim modu, {0} öncesi sürümlerde desteklenmiyor. CMake sunucu iletişimi moduna geçiliyor.",
"please.upgrade.cmake": "En iyi deneyim için CMake sunucusu veya file-api desteği gereklidir. Lütfen CMake'i {0} veya daha yeni bir sürüme yükseltin.",
"starting.cmake.driver.status": "CMake Sunucusu başlatılıyor...",
"ready.status": "Hazır",
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "cmake-tools",
"displayName": "CMake Tools",
"description": "Extended CMake support in Visual Studio Code",
"version": "1.3.0",
"version": "1.3.1",
"publisher": "ms-vscode",
"repository": {
"type": "git",
Expand All @@ -20,7 +20,7 @@
"native"
],
"engines": {
"vscode": "^1.29.1"
"vscode": "^1.30.0"
},
"categories": [
"Other"
Expand Down Expand Up @@ -1277,7 +1277,7 @@
"tslint": "^5.9.1",
"typedoc": "^0.15.3",
"typescript": "^3.7.2",
"vscode": "^1.1.35",
"vscode": "^1.1.36",
"vscode-nls-dev": "^3.2.6",
"webpack": "^4.39.2",
"webpack-cli": "^3.3.7"
Expand Down
27 changes: 16 additions & 11 deletions src/cmake-tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -272,44 +272,49 @@ export class CMakeTools implements vscode.Disposable, api.CMakeToolsAPI {
const preferredGenerators = this.getPreferredGenerators();
const preConditionHandler = async (e: CMakePreconditionProblems) => this.cmakePreConditionProblemHandler(e);
let communicationMode = this.workspaceContext.config.cmakeCommunicationMode.toLowerCase();
const fileApi = 'fileapi';
const serverApi = 'serverapi';
const legacy = 'legacy';

if (communicationMode == 'automatic') {
if (communicationMode !== fileApi && communicationMode !== serverApi && communicationMode !== legacy) {
if (cmake.isFileApiModeSupported) {
communicationMode = 'fileapi';
communicationMode = fileApi;
} else if (cmake.isServerModeSupported) {
communicationMode = 'serverapi';
communicationMode = serverApi;
} else {
communicationMode = 'legacy';
communicationMode = legacy;
}
} else if (communicationMode == 'fileapi') {
} else if (communicationMode === fileApi) {
if (!cmake.isFileApiModeSupported) {
if (cmake.isServerModeSupported) {
communicationMode = 'serverapi';
communicationMode = serverApi;
log.warning(
localize('switch.to.serverapi',
'CMake file-api communication mode is not supported in versions earlier than {0}. Switching to CMake server communication mode.',
versionToString(cmake.minimalFileApiModeVersion)));
} else {
communicationMode = 'legacy';
communicationMode = legacy;
}
}
}

if (communicationMode != 'fileapi' && communicationMode != 'serverapi') {
if (communicationMode !== fileApi && communicationMode !== serverApi) {
log.warning(
localize('please.upgrade.cmake',
'For the best experience, CMake server or file-api support is required. Please upgrade CMake to {0} or newer.',
versionToString(cmake.minimalServerModeVersion)));
}

try {
this._statusMessage.set(localize('starting.cmake.driver.status', 'Starting CMake Server...'));
if (communicationMode === serverApi) {
this._statusMessage.set(localize('starting.cmake.driver.status', 'Starting CMake Server...'));
}
switch (communicationMode) {
case 'fileapi':
case fileApi:
drv = await CMakeFileApiDriver
.create(cmake, this.workspaceContext.config, kit, workspace, preConditionHandler, preferredGenerators);
break;
case 'serverapi':
case serverApi:
drv = await CMakeServerClientDriver
.create(cmake, this.workspaceContext.config, kit, workspace, preConditionHandler, preferredGenerators);
break;
Expand Down
10 changes: 9 additions & 1 deletion src/drivers/cmakefileapi/api_helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,15 @@ async function convertTargetObjectFileToExtensionTarget(build_dir: string, file_
if (targetObject.artifacts) {
executable_path = targetObject.artifacts.find(artifact => artifact.path.endsWith(targetObject.nameOnDisk));
if (executable_path) {
executable_path = path.normalize(path.join(build_dir, executable_path.path));
if (await fs.exists(executable_path.path)) {
executable_path = path.normalize(executable_path.path);
} else {
executable_path = path.normalize(path.join(build_dir, executable_path.path));
if (!fs.exists(executable_path)) {
// Will be empty after cmake configuration
executable_path = "";
}
}
}
}

Expand Down
6 changes: 3 additions & 3 deletions src/drivers/cmfileapi-driver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,13 @@ export class CMakeFileApiDriver extends codemodel.CodeModelDriver {

this._generator = {
name: cache.get('CMAKE_GENERATOR')!.value,
toolset: cache.get('CMAKE_GENERATOR_PLATFORM') ? cache.get('CMAKE_GENERATOR_PLATFORM')!.value : undefined,
platform: cache.get('CMAKE_GENERATOR_TOOLSET') ? cache.get('CMAKE_GENERATOR_TOOLSET')!.value : undefined
platform: cache.get('CMAKE_GENERATOR_PLATFORM') ? cache.get('CMAKE_GENERATOR_PLATFORM')!.value : undefined,
toolset: cache.get('CMAKE_GENERATOR_TOOLSET') ? cache.get('CMAKE_GENERATOR_TOOLSET')!.value : undefined
} as CMakeGenerator;

this._generatorInformation = {
name: cache.get('CMAKE_GENERATOR')!.value,
platform: cache.get('CMAKE_GENERATOR_TOOLSET') ? cache.get('CMAKE_GENERATOR_TOOLSET')!.value : undefined
platform: cache.get('CMAKE_GENERATOR_PLATFORM') ? cache.get('CMAKE_GENERATOR_PLATFORM')!.value : undefined
};
}

Expand Down
9 changes: 6 additions & 3 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,10 @@ class ExtensionManager implements vscode.Disposable {
* The project outline tree data provider
*/
private readonly _projectOutlineProvider = new ProjectOutlineProvider();
private readonly _projectOutlineDisposer
= vscode.window.registerTreeDataProvider('cmake.outline', this._projectOutlineProvider);
private readonly _projectOutlineTreeView = vscode.window.createTreeView('cmake.outline', {
treeDataProvider: this._projectOutlineProvider,
showCollapseAll: true
});

/**
* CppTools project configuration provider. Tells cpptools how to search for
Expand Down Expand Up @@ -292,8 +294,9 @@ class ExtensionManager implements vscode.Disposable {
)
);
this._onDidChangeActiveTextEditorSub.dispose();
// tslint:disable-next-line: no-floating-promises
this._kitsWatcher.close();
this._projectOutlineDisposer.dispose();
this._projectOutlineTreeView.dispose();
if (this._cppToolsAPI) {
this._cppToolsAPI.dispose();
}
Expand Down
1 change: 1 addition & 0 deletions src/kit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export enum SpecialKits {
ScanForKits = '__scanforkits__',
Unspecified = '__unspec__'
}
export const SpecialKitsCount: number = 2;
export type UnspecifiedKit = SpecialKits.Unspecified;

type ProgressReporter = vscode.Progress<{message?: string}>;
Expand Down
8 changes: 5 additions & 3 deletions src/kitsController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ import {
kitsPathForWorkspaceFolder,
OLD_USER_KITS_FILEPATH,
SpecialKits,
UnspecifiedKit
UnspecifiedKit,
SpecialKitsCount
} from '@cmt/kit';
import * as logging from '@cmt/logging';
import paths from '@cmt/paths';
Expand Down Expand Up @@ -62,6 +63,7 @@ export class KitsController {
if (this._pickKitCancellationTokenSource) {
this._pickKitCancellationTokenSource.dispose();
}
// tslint:disable-next-line: no-floating-promises
this._kitsWatcher.close();
}

Expand Down Expand Up @@ -164,11 +166,11 @@ export class KitsController {

private async _checkHaveKits(): Promise<UnspecifiedKit|'ok'|'cancel'> {
const avail = this.availableKits;
if (avail.length > 1) {
if (avail.length > SpecialKitsCount) {
// We have kits. Okay.
return 'ok';
}
if (avail[0].name !== SpecialKits.Unspecified) {
if (!avail.find(kit => kit.name == SpecialKits.Unspecified)) {
// We should _always_ have the 'UnspecifiedKit'.
rollbar.error(localize('invalid.only.kit', 'Invalid only kit. Expected to find `{0}`', SpecialKits.Unspecified));
return 'ok';
Expand Down
1 change: 1 addition & 0 deletions src/variant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ export class VariantManager implements vscode.Disposable {


dispose() {
// tslint:disable-next-line: no-floating-promises
this._variantFileWatcher.close();
this._activeVariantChanged.dispose();
}
Expand Down
2 changes: 1 addition & 1 deletion test/extension-tests/multi-root-UI/test/debugger.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import * as vscode from 'vscode';

// tslint:disable:no-unused-expression

suite('[Debug/Lauch interface]', async () => {
suite('[Debug/Launch interface]', async () => {
let testEnv: DefaultEnvironment;

setup(async function(this: Mocha.IBeforeAndAfterContext) {
Expand Down
2 changes: 1 addition & 1 deletion test/extension-tests/single-root-UI/test/debugger.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import * as vscode from 'vscode';

// tslint:disable:no-unused-expression

suite('[Debug/Lauch interface]', async () => {
suite('[Debug/Launch interface]', async () => {
let testEnv: DefaultEnvironment;

setup(async function(this: Mocha.IBeforeAndAfterContext) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import * as path from 'path';

// tslint:disable:no-unused-expression

suite('[Debug/Lauch interface]', async () => {
suite('[Debug/Launch interface]', async () => {
let cmt: CMakeTools;
let testEnv: DefaultEnvironment;

Expand Down
4 changes: 2 additions & 2 deletions test/unit-tests/driver/driver-codemodel-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,11 @@ export function makeCodeModelDriverTestsuite(
}).timeout(90000);


test('Test first executable target directory', async () => {
test('Test executable target information', async () => {
const codemodel_data = await generateCodeModelForConfiguredDriver();
expect(codemodel_data).to.be.not.null;

const target = codemodel_data!.configurations[0].projects[0].targets.find(t => t.type == 'EXECUTABLE');
const target = codemodel_data!.configurations[0].projects[0].targets.find(t => t.type == 'EXECUTABLE' && t.name == 'TestBuildProcess');
expect(target).to.be.not.undefined;

// Test target name used for node label
Expand Down
Loading

0 comments on commit 1efb87b

Please sign in to comment.