Как дождаться окончания операции vscode.windows.terminal? - PullRequest
1 голос
/ 02 мая 2019

Когда я выполняю тестирование, в котором нужен конечный результат vscode.windows.terminal, тестирование дало мне ложное срабатывание.Мне нужно дождаться окончания операции терминала, чтобы выполнить утверждения.

Я использую класс с именем Stack, у которого есть файл pom.Мой тест начался с выполнения чистой установки cd и mvn с использованием vscode.windows.terminal.Идея тестового утверждения заключается в проверке существования целевого файла.

const buildProgram = () => {
    const terminal = vscode.window.createTerminal();
    terminal.show();
    terminal.sendText('cd ' + stackDirectory);
    terminal.sendText('mvn clean install');
}

    it("Stack Project build taget directory exists", function() {
        const promise = Promise.all([buildProgram()])
        .then(() => {
            return fs.existsSync(stackDirectory + "/target");
        });

        expect(promise).to.eventually.equal(false);
    });

Этот тест выполняется без проблем, но в конце целевой каталог не создается.

1 Ответ

0 голосов
/ 02 мая 2019

Я нашел возможное решение, заменяющее тест для этого:

it("Stack Project build taget directory exists", function() {
    buildProgram();
    return new Promise((resolve, reject) => setTimeout(function(){
        // Assert here.
        if(fs.existsSync(stackDirectory + "/target")){
            resolve();  
        }
        reject();
      }, 5000));
}).timeout('7s');

Мне не очень нравится идея использования тайм-аута, но я не могу найти способ сказать, занят ли терминал.

...