2

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

但是,我无法让 Heroku CI 显示这个增强的 UI。我的猜测是我生成的 TAP 输出不太正确,但是我看不出它有什么问题。

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

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

4

1 回答 1

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"
      }
    }
  }
}

这是 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。

于 2018-07-09T10:53:14.987 回答