Как должен выглядеть выход для интеграции Heroku CI TAP?
Heroku CI поддерживает вывод протокола TAP (Test Anything Protocol), предоставляя расширенный интерфейс при его обнаружении.
Однако я не смог заставить Heroku CI показать этот улучшенный пользовательский интерфейс. Я предполагаю, что вывод TAP, который я создаю, не совсем правильный, однако я не вижу, что с ним не так.
Если у вас есть выход TAP, работающий с Heroku CI, и он определенно показывает улучшенный интерфейс, пожалуйста, не могли бы вы привести пример ниже?
Кроме того, можете ли вы подтвердить, нормально ли распечатывать какую-либо дополнительную информацию до и / или после вывода TAP, или вывод, окружающий отчет TAP, должен быть полностью пустым?
1 ответ
На момент написания в Heroku строки вывода TAP с начальным пробелом недопустимы. Тестовая команда Heroku CI по умолчанию на ruby-buildpack автоматически выполняет отступ для всех выходных данных теста, поэтому вывод TAP был недействительным из-за этих автоматических отступов.
Чтобы обойти авто-отступ и создать корректный вывод TAP, укажите пользовательский сценарий тестирования в app.json
, Использование собственного тестового скрипта позволяет обойти авто-отступ ruby-buildpack.
Вот пример app.json
с пользовательским тестовым скриптом bin/rspec
:
{
"environments": {
"test": {
"addons": ["heroku-postgresql:in-dyno"],
"buildpacks": [
{ "url": "heroku/ruby" },
{ "url": "https://github.com/heroku/heroku-buildpack-google-chrome" }
],
"env": {
"DISABLE_SPRING": "true"
},
"scripts": {
"test": "bin/rspec"
}
}
}
}
Вот пример правильного вывода TAP (версия 12), который Heroku CI будет обрабатывать для отображения расширенного пользовательского интерфейса (вам может потребоваться обновить страницу, чтобы увидеть расширенный пользовательский интерфейс, если вы наблюдали за процессом сборки):
# Randomized with seed 12345
1..2
ok 1 - PayHelper#js_host returns production host as default
not ok 2 - PayHelper#js_url returns production v9 URL as default
#
# PayHelper#js_url returns production v9 URL as default
# Failure/Error: expect(helper.js_url).to eq 'https://example.com/v9/'
#
# expected: value != "https://example.com/v9/"
# got: "https://example.com/v9.0/"
#
# (compared using ==)
# # ./spec/helpers/pay_helper_spec.rb:15:in `block (3 levels) in <top (required)>'
# # -e:1:in `<main>'
1..2
# Randomized with seed 12345
Обратите внимание, что приведенный выше вывод - версия спецификации TAP 12, хотя я понимаю, что Heroku также поддерживает версию спецификации TAP 13.