TravisCI проходит несмотря на неудачные тесты, настройка Gulp с тестами на Jasmine + Frisby
Я использую gulp-jasmine-node
плагин для запуска моих тестов Jasmine/Frisby.js примерно так:
gulp.task('runJasmine', function() {
return gulp.src(['test/*spec.js'])
.pipe(jasmineNode({
timeout: 10000
}));
});
gulp.task('test', ['runJasmine']);
Бег gulp test
локально я получаю следующее (только фрагмент):
2) Frisby Test: Get API root
[ GET http://localhost:8080/api ]
Message:
Error: Header 'content-type' not present in HTTP response
Stacktrace:
Error: Header 'content-type' not present in HTTP response
at null.<anonymous>
...
Finished in 0.042 seconds
1 test, 2 assertions, 2 failures, 0 skipped
Мой.travis.yml:
language: node_js
node_js:
- "0.12"
- "4.2.4"
- "5.3.0"
before_script:
- npm install -g gulp
script: gulp test
И соответствующий необработанный вывод CI на Travis (только конечный фрагмент):
Finished in 0.054 seconds
[31m1 test, 2 assertions, 2 failures, 0 skipped
[0m travis_time:end:00bb9734:start=1455472901504935117,finish=1455472903105906383,duration=1600971266
[0K [32;1mThe command "gulp test" exited with 0.[0m
Done. Your build exited with 0.
Я не уверен, почему сборка проходит несмотря на сбои - есть ли определенная конфигурация в Travis при использовании gulp, в зависимости от используемого инструмента тестирования? Это происходит из-за процесса, завершающегося с кодом 0, и если да, нужно ли мне изменить мою команду gulp, чтобы выйти из процесса при сбое (не идеально, так как это прерывало бы другие задачи в средстве выполнения).
Кажется, не могу найти эту проблему или идентичную настройку, предварительно решенную. Пожалуйста помоги! Кроме того, это мой первый Stack Overflow Q, так что, надеюсь, я предоставил всю необходимую информацию. Спасибо:)
1 ответ
Этот ответ не имеет отношения к Жасмин / Фрисби. Но все же может помочь другим людям, смотрящим на глоток, выход с 0 при неудачных тестах и прохождение travis ci pass.
Вот мой глоток
gulp.task('test', function () {
mochify('./src/js/__tests__/**/*.js', {
extension: ['.jsx', '.js'],
node: true,
path: ['./src/js/'],
watch: false,
})
.transform(babelify)
.transform(envify({
_: 'purge',
NODE_ENV: 'production',
}))
.on('error', function(){
// Exits gulp with error
process.exit(1);
}).bundle()
});
Часть, которую я выяснил, состояла в том, что вы можете вручную выйти из gulp с кодом выхода не 0 через process.exit(1);
и тогда Трэвис потерпит неудачу.