Сделать выполнение шимпанзе неудачным, если выполняется 0 тестов

meteor continuous-integration automated-tests chimp.js

72 просмотра

1 ответ

309 Репутация автора

Короче говоря, у меня есть метеорное приложение, проходящее в конвейере непрерывной интеграции, которое запускает все тесты перед развертыванием. Мои тесты запускались с помощью chimp, и я устанавливал chimp глобально в своей среде CI в каждой сборке с последней версией до запуска тестов.

недавно шимпанзе сделал несколько значительных обновлений, в результате чего мой шимпанзе выполнил тесты 1..0 Узнав, что это произошло из-за версии шимпанзе, я изменил установку шимпанзе на локальную и заблокированную для определенной версии.

Проблема в том, что мой конвейер проходил, потому что эй, 0 тестов пройдено, все еще 0 тестов не пройдены!

Я пытаюсь заставить шимпанзе провалиться, если он вообще не запускает тесты. Как было бы хорошим способом сделать это?

Я попытался получить вывод и сопоставить его с '1..0', что привело к состоянию выхода / b 1, но безуспешно. Лучшее решение будет включать только команду шимпанзе.

Спасибо всем, кто мог бы дать мне подсказку на это.

Автор: Xavier Huppé Источник Размещён: 18.07.2016 07:31

Ответы (1)


0 плюса

15019 Репутация автора

Используйте крюк после теста

Вы можете поместить свой код, который запускается после всех тестов, в afterтестовый хук (пример ниже). Я не уверен, как проверить количество выполненных тестов, но я думаю, что вы можете найти то же самое, что и репортер тестов. Так что я бы посоветовал обратиться к источнику одного из популярных / более простых репортеров. как dot/ specи выяснить это оттуда.

describe('test', function() {
  after(function() { console.log('after'); });
  afterEach(function() { console.log('afterEach'); });

  it('fails sync', function(done) {
    after(function() { console.log('inner after 1'); });
    throw new Error('failed');
  });

  it('fails async', function(done) {
    after(function() { console.log('inner after 2'); });
    process.nextTick(function() {
      throw new Error('failed');
    });
  });
});

который производит следующий вывод с mocha 1.1.12:

  ․afterEach
․afterEach
after
inner after 1
inner after 2


  0 passing (5 ms)
  2 failing

1) test fails sync:
 Error: failed
  at Context.<anonymous> (/private/tmp/so/test/main.js:7:11)
  at Test.Runnable.run (/private/tmp/so/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/private/tmp/so/node_modules/mocha/lib/runner.js:355:10)
  at /private/tmp/so/node_modules/mocha/lib/runner.js:401:12
  at next (/private/tmp/so/node_modules/mocha/lib/runner.js:281:14)
  at /private/tmp/so/node_modules/mocha/lib/runner.js:290:7
  at next (/private/tmp/so/node_modules/mocha/lib/runner.js:234:23)
  at Object._onImmediate (/private/tmp/so/node_modules/mocha/lib/runner.js:258:5)
  at processImmediate [as _immediateCallback] (timers.js:330:15)

2) test fails async:
 Error: failed
  at /private/tmp/so/test/main.js:13:12
  at process._tickCallback (node.js:415:13)

кредиты для примера кода от пользователя SO Мирослав Байтош

Автор: Dheeraj Bhaskar Размещён: 01.01.2017 09:13
Вопросы из категории :
32x32