在Ruby中,*
用于表示文件的名称。
例如,/home/user/*.rb
将返回以.rb
结尾的所有文件。我想在Chef InSpec中做类似的事情。
例如:
describe file ('home/user/*') do
it {should_not exist }
end
它应该给我/home/user
目录中的所有文件,并检查该目录中是否存在文件。换句话说,我想在Chef中检查此目录是否为空。
我该怎么做?
答案 0 :(得分:1)
这是测试目录是否存在的另一种方法,如果存在,则使用Ruby来测试其中的文件。它还使用expect
语法,该语法允许自定义错误消息。
control 'Test for an empty dir' do
describe directory('/hey') do
it 'This directory should exist and be a directory.' do
expect(subject).to(exist)
expect(subject).to(be_directory)
end
end
if (File.exist?('/hey'))
Array(Dir["/hey/*"]).each do |bad_file|
describe bad_file do
it 'This file should not be here.' do
expect(bad_file).to(be_nil)
end
end
end
end
end
如果存在文件,则产生的错误消息将提供参考:
× Test for an empty dir: Directory /hey (2 failed)
✔ Directory /hey This directory should exist and be a directory.
× /hey/test2.png This file should not be here.
expected: nil
got: "/hey/test2.png"
× /hey/test.png This file should not be here.
expected: nil
got: "/hey/test.png"
答案 1 :(得分:0)
await
主要是一个shell功能,正如您所料,*
资源不支持它们。请改用file
资源:
command