2016-08-03 24 views
0

In Ruby wird * verwendet, um den Namen einer Datei darzustellen.Dateinamen in Chef InSpec

Zum Beispiel gibt /home/user/*.rb alle Dateien mit der Endung .rb zurück. Ich möchte etwas ähnliches in Chef InSpec tun.

Zum Beispiel:

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

Es sollte mir geben alle Dateien innerhalb /home/user Verzeichnis und prüfen Sie, dass keine Datei in diesem Verzeichnis vorhanden ist. Mit anderen Worten, ich möchte prüfen, ob dieses Verzeichnis in Chef leer ist oder nicht.

Wie kann ich das tun?

Antwort

0

* Für Globs ist meist eine Shell-Funktion, und wie Sie die file Ressource erwarten können, unterstützt sie nicht. Verwenden Sie stattdessen eine command Ressource:

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

Dank @coderanger. Ein großes Problem gelöst! – saurg

+0

Kannst du mir auch über diese Syntax 'its (: stdout) {is_expected.to eq" \ n "}' sagen. Es ist nicht Chef InSpec und was ist Ressource 'is_expected'? – saurg

+0

Das ist eine Mischung aus Syntax von RSpec selbst und dem 'rspec-its' Juwel. Weder sind spezifisch für InSpec. Äquivalent zu 'it {expect (substance.stdout) .to eq" \ n "}' nur mit ein wenig weniger Schreibarbeit und etwas lesbarer als ein Satz. – coderanger