Тестирование расширения VSCode, которое включает в себя открытие папки / рабочего пространства - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю над расширением VSCode, которое учитывает путь к файлу, открытому в данный момент в рабочей области.

Итак, чтобы получить воспроизводимый тест, я пытаюсь открыть саму тестовую папку в VSCode, а затем открыть тестовый файл в ней, например:

import * as vscode from "vscode";

test("whatever", async function() {
    let workspaceUri = vscode.Uri.file(__dirname);
    // the tests stop here...
    await vscode.commands.executeCommand("vscode.openFolder", workspaceUri);
    await vscode.workspace.openTextDocument(__filename);
})

Проблема в том, что когда я это делаю, как, вероятно, упоминается здесь , тесты просто останавливаются, прежде чем я действительно проверю свой код.

Есть ли способ, которым я могу безопасно открыть рабочее пространство и использовать его во время тестов?

1 Ответ

1 голос
/ 02 апреля 2019

Посмотрите документы для тестирования расширений: Тестирование-расширения-документы

В файле .vscode / launch.json вашего расширения, находящегося в разработке, вы можете передавать аргументы следующим образом (из документов):

"args": ["file or folder name", "--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ]

Таким образом, вы можете создать тестовую структуру каталогов со всеми файлами, которые вам нужны, в той папке, которую вы указали в конфигурации, и добавить эти каталоги / файлы в ваш .vscodeignore (тестовый каталог по умолчанию уже там).

альтернатива , которую я использовал до сих пор, использует сценарий bash со следующим содержимым:

#!/bin/bash

# $0 = command itself
# $1 = extension-directory(relative path)
# $2 = process-id of code to kill

[ -z "$1" ] && { echo "path-argument not supplied"; exit 1; }
[ -z "$2" ] || { xkill -id $2; }

cd $1
vsce package
file=$(find . -name "*.vsix")
code --install-extension $file
code &
echo $!

Осталось только открыть папку в запущенном экземпляре кода и выполнить любые рассматриваемые команды. Настройка подходящей среды тестирования кажется мне более выгодной в долгосрочной перспективе, по крайней мере, когда можно предсказать, что нужно будет провести много тестов.

...