2016-12-08 55 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

相關問題