Promise改变了jenkins作业的exitCode,如何防止这种情况?

时间:2016-12-29 19:38:31

标签: javascript jenkins promise protractor jasmine-reporters

我在protractor.conf文件中有以下记者:

 var promise1 = new Promise(function (resolve) {
    reporter1.afterLaunch(resolve.bind(this, exitCode));
});

var promise2 = new Promise(function (resolve) {
    reporter2.afterLaunch(resolve.bind(this, exitCode));
});

return Promise.all([promise1, promise2]);

上述每位记者都有自己的发布后,一旦执行ptor.conf文件中的发布后,预计会执行。

这是Jenkins持续集成工作的一部分。所以正在发生的是,promise会解析,因此进程的退出代码变为0,即使测试失败因此也会覆盖作业的退出代码。因此即使它是一个合法的失败,詹金斯也将整个工作视为已经过去了。我需要保留传递给上述报告的exitCode的原始值,以使jenkins作业按预期运行。我们怎样才能阻止这种情况?

1 个答案:

答案 0 :(得分:0)

假设exitCodeNumberresolve.bind(this, exitCode)返回一个函数,其第一个参数在这些变量(promise1和promise2)时被绑定到exitCode的值声明

因此,在创建promise和启动reporter1.afterLaunch回调之间对exitCode所做的任何更改都不会反映在promises解析为的值中,

即。假设在创建promises时exitCode为零,那么无论exitCode被更改为什么,解析后的值都将为零

另一方面

var promise1 = new Promise(function (resolve) {
    reporter1.afterLaunch(() => resolve(exitCode));
});

var promise1 = new Promise(function (resolve) {
    reporter1.afterLaunch(function() {
        resolve(exitCode);
    });
});

将解析为exitCode的当前值