ruby - Serverspec:检查目录是否为空

标签 ruby chef-infra test-kitchen serverspec

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

我尝试了以下方法:

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"。有没有更好的方法来测试文件夹是否为空?

最佳答案

在文件资源中测试 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

关于ruby - Serverspec:检查目录是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569554/

相关文章:

ruby - if/else 语句中的变量将不起作用

chef-infra - 在 docker 容器中安装 chef-server

ansible - 如何通过 Test-Kitchen 运行 ansible 角色的幂等测试?

chef-infra - Chef中的执行顺序

docker - Kitchen-Docker指定Dockerfile的镜像名称

yaml - 向测试厨房添加属性

ruby - 如何使用 Ruby 转义 Unicode 字符串?

ruby - 计算数组中的真实对象

ruby-on-rails - 使用 ruby​​zip 下载并提取远程 zip 文件

chef-infra - Chef 从模板和 Knife 搜索中创建逗号分隔的字符串