Ren*_*ert 3 ruby chef-infra test-kitchen serverspec
我想检查一下现有目录是否为空(不包含任何文件或子目录)。
我尝试了以下方法:
describe file('/path/to/file') do
it { should be_empty }
end
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。(当然,因为在文档中没有提到。)
重要提示:我不想测试目录是否存在-它确实存在并且无法更改。
现在,我的解决方案如下所示:
describe command('ls /data/nginx/cache/services | grep -q .') do
its(:exit_status) { should eq 1 }
end
Run Code Online (Sandbox Code Playgroud)
但这不使用Serverspec资源类型“文件”。有没有更好的方法来测试文件夹为空?
一种方法是在遍历不应该包含文件的目录时测试一个空数组。例如:
describe file('/path/to/dir') do
it { should be_a_directory }
it 'should be an empty directory' do
Dir.glob('/path/to/dir/*').should eq []
end
end
Run Code Online (Sandbox Code Playgroud)