3

我想检查现有目录是否为空(不包含任何文件或子目录)。

我尝试了以下方法:

describe file('/path/to/file') do
    it { should be_empty }
end

但这不起作用。(当然,因为文档中没有提到它。)

重要提示:如果目录存在,我不想测试 - 它确实存在并且我无法更改它。

我的解决方案现在如下所示:

describe command('ls /data/nginx/cache/services | grep -q .') do
    its(:exit_status) { should eq 1 }
end

但这不是使用 Serverspec 资源类型“文件”。有没有更好的方法来测试文件夹是否为空?

4

1 回答 1

6

在文件资源中测试 Glob

一种方法是在对不应包含文件的目录进行通配时测试一个空数组。例如:

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
于 2015-10-03T11:05:28.687 回答