2016-12-08 5 views
1

私はrspec(3.5)を使ってテストを実行し、CLIを構築しています。現在レーキを検討中。私のCLIでは、スペックフォルダにあるすべてのタグを見つけて、RSPECを実行する前にテストとして実行するオプションとして提供したいと考えています。テストを実行する前にRspecのすべてのタグを見つける

私はspec_helperを試していて、タグ情報を見つけることができませんでした。私の理解では、rspec CLI自体がすべてのタグを入力として受け入れ、すべてのファイルを調べて、それぞれがタグと一致するかどうかを確認します。そうであれば、rspecはそれらを実行します。

私はこのワークフローを逆にしたい -

  1. 私のスペックフォルダ内のすべてのタグを検索します。
  2. 私のレーキcliのオプションとしてそれを提供してください。
  3. ユーザーがタグを選択して実行できるようにします。

今、私はステップ1ですべてのタグを見つけることができません。 テストを実行せずにすべてのspecフォルダをスキャンし、タグをどこかに公開するにはどうすればよいですか?

サンプルコードから抜粋したものです。 ":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 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を含むすべての行を抽出します。のみタグ付けされたテスト
  • awk -F'=>' '{print $1}'へリットルフィルタは、ハッシュロケット前
  • awk '{print $NF}'をすべてを抽出しますちょうどタグ
  • uniqだけあなたが「タグ」とはどういう意味ですか独自のタグ
+0

私はOSの代わりにルビーの方法を探しています。実際、私はこれらのコードを書いている間、Windows上で走っています。 あなたのソリューションは文字列だけで解析する面で面白そうですが。私は質問がエレガントな方法でルビーコードを解析する方法がある場合は、より多くの情報を含めるように更新しました。 –

+0

あなた自身のパーサーを書くのは簡単ではありませんが、私はテキスト検索があなたの最善の選択肢だと考えています。 Cygwin(https://www.cygwin.com/)を使用してWindowsで言及したすべてのツールをインストールできます。 – Brian

関連する問題