require 'support/integration_helper' require 'chef/knife/list_essentials' require 'chef/knife/show_essentials' describe 'chefignore tests' do extend IntegrationSupport include KnifeSupport when_the_repository "has lots of stuff in it" do file 'roles/x.json', {} file 'environments/x.json', {} file 'data_bags/bag1/x.json', {} file 'cookbooks/cookbook1/x.json', {} context "and has a chefignore everywhere except cookbooks" do chefignore = "x.json\nroles/x.json\nenvironments/x.json\ndata_bags/bag1/x.json\nbag1/x.json\ncookbooks/cookbook1/x.json\ncookbook1/x.json\n" file 'chefignore', chefignore file 'roles/chefignore', chefignore file 'environments/chefignore', chefignore file 'data_bags/chefignore', chefignore file 'data_bags/bag1/chefignore', chefignore file 'cookbooks/cookbook1/chefignore', chefignore it 'nothing is ignored' do # NOTE: many of the "chefignore" files should probably not show up # themselves, but we have other tests that talk about that knife('list --local -Rfp /').should_succeed < "WARN: Cookbook 'cookbook1' is empty or entirely chefignored at #{Chef::Config.chef_repo_path}/cookbooks/cookbook1\n") /cookbooks/ EOM end end when_the_repository "has multiple cookbooks" do file 'cookbooks/cookbook1/x.json', {} file 'cookbooks/cookbook1/y.json', {} file 'cookbooks/cookbook2/x.json', {} file 'cookbooks/cookbook2/y.json', {} context 'and has a chefignore with filenames' do file 'cookbooks/chefignore', "x.json\n" it 'matching files and directories get ignored in all cookbooks' do knife('list --local -Rfp /').should_succeed < "WARN: Child with name 'yourcookbook' found in multiple directories: #{Chef::Config.chef_repo_path}/cookbooks1/yourcookbook and #{Chef::Config.chef_repo_path}/cookbooks2/yourcookbook\n") /cookbooks/ /cookbooks/mycookbook/ /cookbooks/mycookbook/x.json /cookbooks/yourcookbook/ /cookbooks/yourcookbook/onlyincookbooks1.rb /cookbooks/yourcookbook/x.json EOM end end end end when_the_repository 'has a cookbook named chefignore' do file 'cookbooks/chefignore/metadata.rb', {} it 'knife list -Rfp /cookbooks shows it' do knife('list --local -Rfp /cookbooks').should_succeed <