Вывести консольный вывод gulp-qunit в файл

1

Я запускаю модульные тесты с использованием QUnit и пытаюсь интегрировать QUnit в нашу автоматизацию построения и непрерывную интеграцию. Чтобы Atlassian Bamboo проанализировал тестовый результат, он должен иметь тестовый выход в XML файле. Я могу создать консольный журнал, который находится в требуемом формате xml, используя плагин qunit-reporter-junit. Когда Gulp-QUnit запускает наш файл test-runner.html, он выводит console.log на экран. Моя проблема в том, что я не могу найти способ передать этот вывод console.log в файл.

Я пробовал следующие подходы:

Использование плагина gulp-log-capture (ничего не делает):

  gulp.task('qunit', function() {

  return gulp.src('./qunit/test-runner.html')
      .pipe(logCapture.start(console,'log'))
      .pipe(qunit())
      .pipe(logCapture.stop('build.xml'));
});

Вывод потока в поток записи (который вызывает ошибку):

gulp.task('qunit', function() {

  return gulp.src('./qunit/test-runner.html')
      .pipe(qunit())
      .pipe(fs.createWriteStream('build.xml));
});

Использование gulp-out plugin (который просто передает входной html в новый файл):

gulp.task('qunit', function() {

  return gulp.src('./qunit/test-runner.html')
      .pipe(qunit())
      .pipe(out('build.xml');
});

XML находится прямо на экране, мне просто нужно как-то его вставить в файл.

Теги:
unit-testing
gulp
bamboo
qunit

1 ответ

1
Лучший ответ

Оказывается, фантом js принимает узловые сценарии, которые будут выполняться при выполнении. Я в основном взял сценарий run-qunit из каталога примеров phantom-js и скорректировал его для вывода консольного вывода в файл build.xml. Пример скрипта можно найти здесь: https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.js

Я просто настроил прослушиватель onConsoleMessage (ln48) следующим образом:

page.onConsoleMessage = function(msg) {        
    if( msg.search(/xml/) > -1 ) {
        fs.write('build.xml',msg);
    }
    console.log(msg);
};

Чтобы этот запуск выполнялся как часть процесса автоматической сборки, в Gulp я запускаю следующую задачу с помощью плагина exec.

exec = require('child_process').exec;
.
.
.
gulp.task('phantom',function() {
    exec('phantomjs ./qunit/run-qunit.js ./qunit/test-runner.html');
});

Обе эти корректировки успешно создают файл build.xml, который Atlassian Bamboo может читать как часть своего процесса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню