如何等到 vscode.windows.terminal 操作结束?

How to wait until vscode.windows.terminal operation is over?

当我执行测试时 需要 vscode.windows.terminal 的最终结果,测试给了我一个误报。我需要等到终端操作结束才能执行断言。

我使用一个名为 Stack class 的 有一个 pom 文件。我的测试从使用 vscode.windows.terminal 执行 cd 和 mvn clean install 开始。测试断言的思想是验证目标文件是否存在。

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);
    });

这个测试运行没有问题,但最终没有创建目标目录。

我找到了一个可能的解决方案来替代这个测试:

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');

我不太喜欢使用超时的想法,但我找不到一种方法来判断终端是否忙碌。