Chef InSpec 中的文件名
File names in Chef InSpec
在Ruby中,*
用来表示文件名。
例如,/home/user/*.rb
将 return 所有以 .rb
结尾的文件。我想在 Chef InSpec 中做类似的事情。
例如:
describe file ('home/user/*') do
it {should_not exist }
end
它应该给我 /home/user
目录中的所有文件,并检查该目录中是否不存在任何文件。换句话说,我想检查这个目录在 Chef 中是否为空。
我该怎么做?
*
for globs 主要是 shell 特性,正如您所料,file
资源不支持它们。请改用 command
资源:
describe command('ls /home/user') do
its(:stdout) { is_expected.to eq "\n" }
end
这是测试目录是否存在的替代方法,如果存在,它使用 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"
在Ruby中,*
用来表示文件名。
例如,/home/user/*.rb
将 return 所有以 .rb
结尾的文件。我想在 Chef InSpec 中做类似的事情。
例如:
describe file ('home/user/*') do
it {should_not exist }
end
它应该给我 /home/user
目录中的所有文件,并检查该目录中是否不存在任何文件。换句话说,我想检查这个目录在 Chef 中是否为空。
我该怎么做?
*
for globs 主要是 shell 特性,正如您所料,file
资源不支持它们。请改用 command
资源:
describe command('ls /home/user') do
its(:stdout) { is_expected.to eq "\n" }
end
这是测试目录是否存在的替代方法,如果存在,它使用 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"