Heroku CI TAP集成的输出应该是什么样?

时间:2018-07-08 12:35:38

标签: tap heroku-ci

Heroku CI支持TAP(测试任何协议)输出,以在检测到它时提供增强的UI。

但是,我一直无法获得Heroku CI来显示此增强的UI。我的猜测是我正在生成的TAP输出不太正确,但是我看不出它到底出了什么问题。

如果您的TAP输出专门用于Heroku CI,并且肯定显示了增强的UI,请在下面提供示例吗?

此外,您能否确认在TAP输出之前和/或之后是否可以打印出任何其他信息,还是围绕TAP报告的输出是否需要完全为空?

1 个答案:

答案 0 :(得分:0)

在撰写本文时,在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将对其进行处理以显示增强的UI(如果您一直在观看正在进行的构建,则可能需要刷新页面才能看到增强的UI):< / p>

# 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。