系统吞噬任务完成后挂起

Testem gulp task hangs after finished

本文关键字:挂起 吞噬 任务 系统      更新时间:2023-09-26

这个gulp任务完成后没有退出,我必须手动按下Ctrl-C退出。

gulp.task('test', function(done) {
    var testem = require('testem');
    var testemOptions = {
        file: 'testem.json'
    };
    var t = new testem();
    t.startCI(testemOptions, done);
});

如何使该任务正常退出?

注意:实际上它会自动退出,但完成后大约需要15秒。

输出:

[15:49:59] Using gulpfile ~/gulpfile.js
[15:49:59] Starting 'test'...
ok 1 PhantomJS 1.9 - Integration Tests: Home Index Page
1..3
# tests 3
# pass  3
# fail  0
# ok
[15:50:00] Finished 'test' after 1.33 s

设法使用Chromium launcher再现您的问题,但它应该与PhantomJS相同。在task的结束和process的实际出口之间确实存在15sec - CPU延迟。

> time gulp testem
Starting 'testem'...
ok 1 Chrome 32.0 - sass: link
ok 2 Chrome 32.0 - Unit - HomeRoute: exists
ok 3 Chrome 32.0 - Unit - HomeRoute: #model
ok 4 Chrome 32.0 - Unit - HomeRoute: redirect
1..4
# tests 4
# pass  4
# fail  0
# ok
Finished 'testem' after 938 ms
gulp testem  1.27s user 0.25s system 9% cpu 16.581 total

通过移除你在任务上设置的done callback并传递给不将此作为参数的startCI

var testem = require('testem');
gulp.task('test', function () {
  var testemOptions = {
    file: 'testem.json'
  };
  var t = new testem();
  return t.startCI(testemOptions);
});

任务按预期运行并在完成时正确退出:

> time gulp testem
Starting 'testem'...
ok 1 Chrome 32.0 - sass: link
ok 2 Chrome 32.0 - Unit - HomeRoute: exists
ok 3 Chrome 32.0 - Unit - HomeRoute: #model
ok 4 Chrome 32.0 - Unit - HomeRoute: redirect
1..4
# tests 4
# pass  4
# fail  0
# ok
gulp testem  1.26s user 0.19s system 91% cpu 1.582 total

顺便说一下,不知道你可以这样做,简单地传递一个具有file属性的对象到startCI,我认为你应该使用fs.readFile读取配置文件,并将其数据解析到JSON中,使用testem.json中提供的配置参数启动testem

还有一件事,有一个gulp插件,gulp-testem,我没有机会尝试,但它可能会有所帮助。