Serverspec:检查目录是否为空

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资源类型“file”。有没有更好的方法来测试文件夹是否为空?


3
你可以尝试类似这样的方式:Dir ["/path/to/file/*"].empty? - Zahid
只是猜测,但可能是这样的:描述文件('/path/to/dir/*') 做它{ 不应存在 } 结束 - Tensibai
1个回答

6

测试文件资源内的全局属性

一种方法是在对应该没有文件的目录进行全局属性筛选时,测试空数组。例如:

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

嗨,托德, 我目前在使用Serverspec和Docker后端进行空目录检查时遇到了类似的问题。请参见https://stackoverflow.com/questions/48644823/checking-on-empty-gems-cache-fails-using-serverspec-for-docker-image-build-testi。也许你可以帮忙解决这个问题?谢谢。 - pklndnst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接