Спецификация сервера: проверьте, пуст ли каталог

Я хочу проверить, пуст ли существующий каталог (не содержит файлов или подкаталогов).

Я пробовал следующее:

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 «файл». Есть ли лучший способ проверить, пуста ли папка?


person René Schubert    schedule 14.09.2015    source источник
comment
Разве вы не можете сделать что-то вроде Dir[/path/to/file/*].empty?   -  person Zahid    schedule 14.09.2015
comment
Просто догадываюсь, но может что-то в этом роде: decribe file('/path/to/dir/*') do it{ should_not exist } end   -  person Tensibai    schedule 15.09.2015


Ответы (1)


Тестовый глобус внутри файлового ресурса

Один из способов сделать это — проверить пустой массив при подстановке каталога, в котором не должно быть файлов. Например:

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
person Todd A. Jacobs    schedule 03.10.2015
comment
Привет, Тодд, в настоящее время я борюсь с аналогичной проблемой при проверке пустых каталогов, тестировании с помощью Serverspec и бэкэнда Docker. См. stackoverflow.com/questions/48644823/. Может, вы поможете с этим? Спасибо. - person pklndnst; 13.02.2018