【问题标题】:How do I fail the CI when there is an `@tag` in a test?当测试中有“@tag”时,我如何使 CI 失败?
【发布时间】:2019-03-21 09:08:59
【问题描述】:

我们的代码审查中经常有 cmets,它告诉人们从他们标记的测试中删除他们的 @tag 以具有更紧密的迭代循环。但是,我认为依靠人类制造这些 cmets 是一种浪费。

mix testcredo 或其他存在的用于在测试中检测 @tag 的工具是否有一些选项?

【问题讨论】:

  • 我将首先通过客观证据(即分析器)识别标签确实导致性能问题来开始这项探索。我怀疑它们根本没有影响。
  • 我关心的不是性能,而是噪音。让测试到处都是标签就像让你的代码到处都是一行无用的 cmets。这显然是主观的,但这绝对是我的感受。
  • 您必须决定哪个成本更高:@tags 引入的噪音或删除它们所涉及的人工。

标签: continuous-integration elixir ex-unit


【解决方案1】:

你可以试试这个 bash 咒语:

! grep -R --include="*.exs" "@tag" test

它基本上在test 目录中查找模式@tag 的所有实例(因为-R)。 ! 否定退出代码,因此当grep 什么都没有找到时它成功,如果它找到东西则失败。当脚本中的任何命令失败时,大多数 CI 都会失败,因此这可能适合您的需求。

【讨论】:

  • 太棒了。我最终做了一些非常相似的事情。 ` function check_for_tags { tags=`rg "@tag" -g apps/**/*.exs |厕所 | awk '{print $1}'` if [ $tags -ne "0" ];然后回显“您的测试包含标签”返回 1; f 返回 0; } `
  • @CallMeNorm 然后请将此答案标记为解决问题。
猜你喜欢
  • 2015-11-15
  • 2017-11-14
  • 2019-10-10
  • 2018-06-05
  • 2015-04-25
  • 2015-02-10
  • 2013-05-23
  • 1970-01-01
  • 2013-05-24
相关资源
最近更新 更多