rubychef-infrainspec

File names in Chef InSpec


In Ruby, * is used to represent the name of a file.

For example, /home/user/*.rb will return all files ending with .rb. I want to do something similar in Chef InSpec.

For example:

describe file ('home/user/*') do
  it {should_not exist }
end

It should give me all the files inside /home/user directory and check that no file exists inside this directory. In other words, I want to check if this directory is empty or not in Chef.

How can I do that?


Solution

  • * for globs is mostly a shell feature, and as you might expect the file resource doesn't support them. Use a command resource instead:

    describe command('ls /home/user') do
      its(:stdout) { is_expected.to eq "\n" }
    end