執筆時点では、Heroku では、先頭に空白がある TAP 出力行は有効ではありません。ruby-buildpack の Heroku CI のデフォルト テスト コマンドは、すべてのテスト出力を自動インデントするため、これらの自動インデントが原因で 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"
}
}
}
}
Heroku CI が拡張 UI を表示するために処理する有効な TAP (バージョン 12) 出力の例を次に示します (進行中のビルドを監視している場合は、ページを更新して拡張 UI を表示する必要がある場合があります)。
# 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 もサポートしていることは理解しています。