2016-12-08 54 views
1

我正在使用rspec(3.5)运行我的测试并使用它构建CLI。目前正在考虑耙。在我的CLI中,我希望它能够找到我的spec文件夹中可用的所有标签,并提供它作为在运行RSPEC之前作为测试运行的选项。在运行测试之前查找Rspec中的所有标签

我一直在窥探spec_helper,一直未能找到标签信息。我的理解是,rspec CLI本身接受所有的标签作为输入,然后遍历所有的文件,看它们是否与标签匹配,如果是,rspec将运行它们。

我想扭转这种工作流程 -

  1. 查找我的规格文件夹中的所有标签。
  2. 把它作为我的耙气候选项提供。
  3. 允许用户选择标签并运行它。

现在我卡在第1步,找到所有的标签。 假设,如何在不运行测试的情况下扫描所有规格文件夹,并将标签暴露在某个地方?

示例摘自我的代码。 “:api”是我指的标签。

describe 'Oh Title: Oh after title', :api, :data_key => "Oh my meta_data", :feature => "Oh my feature" do 
    it 'oh my explanation' :data_key=> 'oh my meta_data' do |e| 
    #blah blah# 
    end 
end 
+0

你说的“标签”的意思? – Brian

+0

标签用于分组您的规范示例或it语句,以便您可以从rspec CLI调用它来运行或不运行。 如果您标记您的规格,您可以像这样运行'rspec file_path --tag:suite1,:suite2' 请参阅文档以获取更多信息。 https://www.relishapp.com/rspec/rspec-core/v/2-4/docs/command-line/tag-option –

+0

谢谢!我从来没有使用过rspec的那个特性。我会采取一种方式来提取以下所有标签。 – Brian

回答

0

如果你按照RSpec的文档中列出的哈希火箭语法,这样的事情可能工作:

grep -ri "it \"" * | grep "=>" | awk -F'=>' '{print $1}' | awk '{print $NF}' | uniq

其分解:

  • grep -ri "it \"" *会提取所有含it "的线
  • grep "=>" wil L个滤波器只带标签的测试
  • awk -F'=>' '{print $1}'将提取的哈希火箭
  • awk '{print $NF}'之前,一切都将只提取标签
  • uniq将只打印独特标签
+0

我正在寻找更多的红宝石方式,而不是操作系统有限的替代方案。事实上,我在编写这些代码时在Windows上运行。 虽然您的解决方案看起来很简单,但通过字符串进行解析很有趣。我更新了我的问题,以包含更多信息,如果有一种方法可以以优雅的方式解析Ruby代码。 –

+0

编写自己的解析器不足,我认为文本搜索将是您的最佳选择。您可以使用Cygwin(https://www.cygwin.com/)安装我在Windows上提到的所有工具。 – Brian

相关问题