2016-08-03 10 views
0

Rubyでは、ファイル名を表すのに*が使用されています。シェフのファイル名InSpec

たとえば、/home/user/*.rbは、.rbで終わるすべてのファイルを返します。私はシェフのInSpecで同様のことをしたい。例えば

describe file ('home/user/*') do 
    it {should_not exist } 
end 

それは私/home/userディレクトリ内のすべてのファイルを与え、何のファイルがこのディレクトリ内に存在しないことを確認する必要があります。言い換えれば、シェフでこのディレクトリが空であるかどうかをチェックしたいと思います。

どうすればいいですか?

答えて

0

*は、ほとんどのシェル機能であり、fileリソースはそれらをサポートしていない可能性があります。代わりにcommandリソースを使用してください:

describe command('ls /home/user') do 
    its(:stdout) { is_expected.to eq "\n" } 
end 
+0

ありがとうございます。大きな問題を解決! – saurg

+0

また、この構文 'its(:stdout){is_expected.to eq" \ n "}'について教えてください。シェフのInSpecではなく、 'is_expected 'というリソースは何ですか? – saurg

+0

これは、RSpecの構文と 'rspec-its'の宝石の組み合わせです。 InSpec特有のものでもありません。ちょっと小文字で、文章としては少しだけ読みやすいように、 'it {expect(subject.stdout).to eq" \ n "}'と同じです。 – coderanger

関連する問題