chef-cli 5.1.0 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/chef-cli.gemspec +2 -2
  4. data/lib/chef-cli.rb +1 -1
  5. data/lib/chef-cli/authenticated_http.rb +1 -1
  6. data/lib/chef-cli/builtin_commands.rb +1 -1
  7. data/lib/chef-cli/chef_runner.rb +1 -1
  8. data/lib/chef-cli/chef_server_api_multi.rb +1 -1
  9. data/lib/chef-cli/cli.rb +1 -1
  10. data/lib/chef-cli/command/base.rb +1 -1
  11. data/lib/chef-cli/command/clean_policy_cookbooks.rb +1 -1
  12. data/lib/chef-cli/command/clean_policy_revisions.rb +1 -1
  13. data/lib/chef-cli/command/delete_policy.rb +1 -1
  14. data/lib/chef-cli/command/delete_policy_group.rb +1 -1
  15. data/lib/chef-cli/command/describe_cookbook.rb +17 -0
  16. data/lib/chef-cli/command/diff.rb +1 -1
  17. data/lib/chef-cli/command/env.rb +1 -1
  18. data/lib/chef-cli/command/exec.rb +1 -1
  19. data/lib/chef-cli/command/export.rb +14 -6
  20. data/lib/chef-cli/command/gem.rb +1 -1
  21. data/lib/chef-cli/command/generate.rb +1 -1
  22. data/lib/chef-cli/command/generator_commands.rb +1 -1
  23. data/lib/chef-cli/command/generator_commands/attribute.rb +1 -1
  24. data/lib/chef-cli/command/generator_commands/base.rb +1 -1
  25. data/lib/chef-cli/command/generator_commands/chef_exts/generator_desc_resource.rb +1 -1
  26. data/lib/chef-cli/command/generator_commands/chef_exts/quieter_doc_formatter.rb +1 -1
  27. data/lib/chef-cli/command/generator_commands/chef_exts/recipe_dsl_ext.rb +1 -1
  28. data/lib/chef-cli/command/generator_commands/cookbook.rb +1 -1
  29. data/lib/chef-cli/command/generator_commands/cookbook_code_file.rb +1 -1
  30. data/lib/chef-cli/command/generator_commands/cookbook_file.rb +1 -1
  31. data/lib/chef-cli/command/generator_commands/generator_generator.rb +1 -1
  32. data/lib/chef-cli/command/generator_commands/helpers.rb +1 -1
  33. data/lib/chef-cli/command/generator_commands/policyfile.rb +1 -1
  34. data/lib/chef-cli/command/generator_commands/recipe.rb +1 -1
  35. data/lib/chef-cli/command/generator_commands/repo.rb +1 -1
  36. data/lib/chef-cli/command/generator_commands/resource.rb +1 -1
  37. data/lib/chef-cli/command/generator_commands/template.rb +1 -1
  38. data/lib/chef-cli/command/install.rb +1 -1
  39. data/lib/chef-cli/command/provision.rb +1 -1
  40. data/lib/chef-cli/command/push.rb +1 -1
  41. data/lib/chef-cli/command/push_archive.rb +1 -1
  42. data/lib/chef-cli/command/shell_init.rb +1 -1
  43. data/lib/chef-cli/command/show_policy.rb +1 -1
  44. data/lib/chef-cli/command/undelete.rb +1 -1
  45. data/lib/chef-cli/command/update.rb +1 -1
  46. data/lib/chef-cli/commands_map.rb +1 -1
  47. data/lib/chef-cli/configurable.rb +1 -1
  48. data/lib/chef-cli/cookbook_metadata.rb +1 -1
  49. data/lib/chef-cli/cookbook_omnifetch.rb +1 -1
  50. data/lib/chef-cli/cookbook_profiler/git.rb +1 -1
  51. data/lib/chef-cli/cookbook_profiler/identifiers.rb +1 -1
  52. data/lib/chef-cli/cookbook_profiler/null_scm.rb +1 -1
  53. data/lib/chef-cli/exceptions.rb +13 -1
  54. data/lib/chef-cli/generator.rb +1 -1
  55. data/lib/chef-cli/helpers.rb +1 -1
  56. data/lib/chef-cli/pager.rb +1 -1
  57. data/lib/chef-cli/policyfile/artifactory_cookbook_source.rb +1 -1
  58. data/lib/chef-cli/policyfile/attribute_merge_checker.rb +1 -1
  59. data/lib/chef-cli/policyfile/chef_repo_cookbook_source.rb +1 -1
  60. data/lib/chef-cli/policyfile/chef_server_cookbook_source.rb +1 -1
  61. data/lib/chef-cli/policyfile/chef_server_lock_fetcher.rb +1 -1
  62. data/lib/chef-cli/policyfile/community_cookbook_source.rb +1 -1
  63. data/lib/chef-cli/policyfile/comparison_base.rb +1 -1
  64. data/lib/chef-cli/policyfile/cookbook_location_specification.rb +1 -1
  65. data/lib/chef-cli/policyfile/cookbook_locks.rb +1 -1
  66. data/lib/chef-cli/policyfile/cookbook_sources.rb +1 -1
  67. data/lib/chef-cli/policyfile/delivery_supermarket_source.rb +1 -1
  68. data/lib/chef-cli/policyfile/differ.rb +1 -1
  69. data/lib/chef-cli/policyfile/dsl.rb +16 -1
  70. data/lib/chef-cli/policyfile/git_lock_fetcher.rb +1 -1
  71. data/lib/chef-cli/policyfile/included_policies_cookbook_source.rb +1 -1
  72. data/lib/chef-cli/policyfile/lister.rb +1 -1
  73. data/lib/chef-cli/policyfile/local_lock_fetcher.rb +1 -1
  74. data/lib/chef-cli/policyfile/lock_applier.rb +1 -1
  75. data/lib/chef-cli/policyfile/lock_fetcher_mixin.rb +1 -1
  76. data/lib/chef-cli/policyfile/null_cookbook_source.rb +1 -1
  77. data/lib/chef-cli/policyfile/policyfile_location_specification.rb +1 -1
  78. data/lib/chef-cli/policyfile/read_cookbook_for_compat_mode_upload.rb +1 -1
  79. data/lib/chef-cli/policyfile/remote_lock_fetcher.rb +1 -1
  80. data/lib/chef-cli/policyfile/reports/install.rb +1 -1
  81. data/lib/chef-cli/policyfile/reports/table_printer.rb +1 -1
  82. data/lib/chef-cli/policyfile/reports/upload.rb +1 -1
  83. data/lib/chef-cli/policyfile/solution_dependencies.rb +1 -1
  84. data/lib/chef-cli/policyfile/source_uri.rb +1 -1
  85. data/lib/chef-cli/policyfile/storage_config.rb +1 -1
  86. data/lib/chef-cli/policyfile/undo_record.rb +1 -1
  87. data/lib/chef-cli/policyfile/undo_stack.rb +1 -1
  88. data/lib/chef-cli/policyfile/uploader.rb +1 -1
  89. data/lib/chef-cli/policyfile_compiler.rb +1 -1
  90. data/lib/chef-cli/policyfile_lock.rb +1 -1
  91. data/lib/chef-cli/policyfile_services/clean_policies.rb +1 -1
  92. data/lib/chef-cli/policyfile_services/clean_policy_cookbooks.rb +1 -1
  93. data/lib/chef-cli/policyfile_services/export_repo.rb +9 -13
  94. data/lib/chef-cli/policyfile_services/install.rb +1 -1
  95. data/lib/chef-cli/policyfile_services/push.rb +1 -1
  96. data/lib/chef-cli/policyfile_services/push_archive.rb +1 -1
  97. data/lib/chef-cli/policyfile_services/rm_policy.rb +1 -1
  98. data/lib/chef-cli/policyfile_services/rm_policy_group.rb +1 -1
  99. data/lib/chef-cli/policyfile_services/show_policy.rb +1 -1
  100. data/lib/chef-cli/policyfile_services/undelete.rb +1 -1
  101. data/lib/chef-cli/policyfile_services/update_attributes.rb +1 -1
  102. data/lib/chef-cli/service_exception_inspectors.rb +1 -1
  103. data/lib/chef-cli/service_exception_inspectors/base.rb +1 -1
  104. data/lib/chef-cli/service_exception_inspectors/http.rb +1 -1
  105. data/lib/chef-cli/service_exceptions.rb +1 -1
  106. data/lib/chef-cli/shell_out.rb +1 -1
  107. data/lib/chef-cli/skeletons/code_generator/metadata.rb +1 -1
  108. data/lib/chef-cli/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +1 -1
  109. data/lib/chef-cli/skeletons/code_generator/templates/default/kitchen.yml.erb +1 -1
  110. data/lib/chef-cli/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +1 -1
  111. data/lib/chef-cli/skeletons/code_generator/templates/default/metadata.rb.erb +1 -1
  112. data/lib/chef-cli/ui.rb +1 -1
  113. data/lib/chef-cli/version.rb +2 -2
  114. data/spec/shared/fixture_cookbook_checksums.rb +1 -1
  115. data/spec/shared/setup_git_committer_config.rb +1 -1
  116. data/spec/shared/setup_git_cookbooks.rb +1 -1
  117. data/spec/spec_helper.rb +1 -1
  118. data/spec/unit/chef_runner_spec.rb +1 -1
  119. data/spec/unit/chef_server_api_multi_spec.rb +1 -1
  120. data/spec/unit/cli_spec.rb +1 -1
  121. data/spec/unit/command/base_spec.rb +1 -1
  122. data/spec/unit/command/clean_policy_cookbooks_spec.rb +1 -1
  123. data/spec/unit/command/clean_policy_revisions_spec.rb +1 -1
  124. data/spec/unit/command/delete_policy_group_spec.rb +1 -1
  125. data/spec/unit/command/delete_policy_spec.rb +1 -1
  126. data/spec/unit/command/diff_spec.rb +1 -1
  127. data/spec/unit/command/env_spec.rb +1 -1
  128. data/spec/unit/command/exec_spec.rb +1 -1
  129. data/spec/unit/command/export_spec.rb +18 -1
  130. data/spec/unit/command/generate_spec.rb +1 -1
  131. data/spec/unit/command/generator_commands/attribute_spec.rb +1 -1
  132. data/spec/unit/command/generator_commands/base_spec.rb +1 -1
  133. data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +1 -1
  134. data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +1 -1
  135. data/spec/unit/command/generator_commands/cookbook_file_spec.rb +1 -1
  136. data/spec/unit/command/generator_commands/cookbook_spec.rb +2 -2
  137. data/spec/unit/command/generator_commands/generator_generator_spec.rb +1 -1
  138. data/spec/unit/command/generator_commands/helpers_spec.rb +1 -1
  139. data/spec/unit/command/generator_commands/policyfile_spec.rb +1 -1
  140. data/spec/unit/command/generator_commands/recipe_spec.rb +1 -1
  141. data/spec/unit/command/generator_commands/repo_spec.rb +1 -1
  142. data/spec/unit/command/generator_commands/resource_spec.rb +1 -1
  143. data/spec/unit/command/generator_commands/template_spec.rb +1 -1
  144. data/spec/unit/command/install_spec.rb +1 -1
  145. data/spec/unit/command/push_archive_spec.rb +1 -1
  146. data/spec/unit/command/push_spec.rb +1 -1
  147. data/spec/unit/command/shell_init_spec.rb +1 -1
  148. data/spec/unit/command/show_policy_spec.rb +1 -1
  149. data/spec/unit/command/undelete_spec.rb +1 -1
  150. data/spec/unit/command/update_spec.rb +1 -1
  151. data/spec/unit/commands_map_spec.rb +1 -1
  152. data/spec/unit/configurable_spec.rb +1 -1
  153. data/spec/unit/cookbook_metadata_spec.rb +20 -1
  154. data/spec/unit/cookbook_profiler/git_spec.rb +1 -1
  155. data/spec/unit/cookbook_profiler/identifiers_spec.rb +1 -1
  156. data/spec/unit/fixtures/example_cookbook_both_metadata/.gitignore +17 -0
  157. data/spec/unit/fixtures/example_cookbook_both_metadata/.kitchen.yml +16 -0
  158. data/spec/unit/fixtures/example_cookbook_both_metadata/Berksfile +3 -0
  159. data/spec/unit/fixtures/example_cookbook_both_metadata/README.md +4 -0
  160. data/spec/unit/fixtures/example_cookbook_both_metadata/chefignore +96 -0
  161. data/spec/unit/fixtures/example_cookbook_both_metadata/metadata.json +5 -0
  162. data/spec/unit/fixtures/example_cookbook_both_metadata/metadata.rb +9 -0
  163. data/spec/unit/fixtures/example_cookbook_both_metadata/recipes/default.rb +8 -0
  164. data/spec/unit/generator_spec.rb +1 -1
  165. data/spec/unit/helpers_spec.rb +1 -1
  166. data/spec/unit/pager_spec.rb +1 -1
  167. data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +1 -1
  168. data/spec/unit/policyfile/attribute_merge_checker_spec.rb +1 -1
  169. data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +1 -1
  170. data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +1 -1
  171. data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +1 -1
  172. data/spec/unit/policyfile/community_cookbook_source_spec.rb +1 -1
  173. data/spec/unit/policyfile/comparison_base_spec.rb +1 -1
  174. data/spec/unit/policyfile/cookbook_location_specification_spec.rb +1 -1
  175. data/spec/unit/policyfile/cookbook_locks_spec.rb +1 -1
  176. data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +1 -1
  177. data/spec/unit/policyfile/differ_spec.rb +1 -1
  178. data/spec/unit/policyfile/git_lock_fetcher_spec.rb +1 -1
  179. data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +1 -1
  180. data/spec/unit/policyfile/lister_spec.rb +1 -1
  181. data/spec/unit/policyfile/local_lock_fetcher_spec.rb +1 -1
  182. data/spec/unit/policyfile/lock_applier_spec.rb +1 -1
  183. data/spec/unit/policyfile/lock_fetcher_mixin_spec.rb +1 -1
  184. data/spec/unit/policyfile/null_cookbook_source_spec.rb +1 -1
  185. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +1 -1
  186. data/spec/unit/policyfile/remote_lock_fetcher_spec.rb +1 -1
  187. data/spec/unit/policyfile/reports/install_spec.rb +1 -1
  188. data/spec/unit/policyfile/reports/upload_spec.rb +1 -1
  189. data/spec/unit/policyfile/solution_dependencies_spec.rb +1 -1
  190. data/spec/unit/policyfile/source_uri_spec.rb +1 -1
  191. data/spec/unit/policyfile/storage_config_spec.rb +1 -1
  192. data/spec/unit/policyfile/undo_record_spec.rb +1 -1
  193. data/spec/unit/policyfile/undo_stack_spec.rb +1 -1
  194. data/spec/unit/policyfile/uploader_spec.rb +1 -1
  195. data/spec/unit/policyfile_demands_spec.rb +1 -1
  196. data/spec/unit/policyfile_evaluation_spec.rb +67 -1
  197. data/spec/unit/policyfile_includes_dsl_spec.rb +1 -1
  198. data/spec/unit/policyfile_includes_spec.rb +1 -1
  199. data/spec/unit/policyfile_install_with_includes_spec.rb +1 -1
  200. data/spec/unit/policyfile_lock_build_spec.rb +1 -1
  201. data/spec/unit/policyfile_lock_install_spec.rb +1 -1
  202. data/spec/unit/policyfile_lock_serialization_spec.rb +1 -1
  203. data/spec/unit/policyfile_lock_validation_spec.rb +1 -1
  204. data/spec/unit/policyfile_services/clean_policies_spec.rb +1 -1
  205. data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +1 -1
  206. data/spec/unit/policyfile_services/export_repo_spec.rb +51 -2
  207. data/spec/unit/policyfile_services/install_spec.rb +1 -1
  208. data/spec/unit/policyfile_services/push_archive_spec.rb +1 -1
  209. data/spec/unit/policyfile_services/push_spec.rb +1 -1
  210. data/spec/unit/policyfile_services/rm_policy_group_spec.rb +1 -1
  211. data/spec/unit/policyfile_services/rm_policy_spec.rb +1 -1
  212. data/spec/unit/policyfile_services/show_policy_spec.rb +1 -1
  213. data/spec/unit/policyfile_services/undelete_spec.rb +1 -1
  214. data/spec/unit/policyfile_services/update_attributes_spec.rb +1 -1
  215. data/spec/unit/policyfile_services/update_spec.rb +1 -1
  216. data/spec/unit/service_exception_inspectors/base_spec.rb +1 -1
  217. data/spec/unit/service_exception_inspectors/http_spec.rb +1 -1
  218. data/spec/unit/shell_out_spec.rb +1 -1
  219. metadata +22 -6
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2017 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2017 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2017 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2016 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018, Chef Software Inc.
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -555,6 +555,72 @@ describe ChefCLI::PolicyfileCompiler do
555
555
 
556
556
  end
557
557
 
558
+ describe "the metadata DSL keyword used in a cookbook with metadata" do
559
+ let(:policyfile_rb) do
560
+ <<-EOH
561
+ run_list "foo"
562
+ metadata
563
+ EOH
564
+ end
565
+ it "reads the metadata from the current cookbook" do
566
+ expect(File).to receive(:exist?).with("./metadata.rb").and_return(true)
567
+ expect(ChefCLI::CookbookMetadata).to receive(:from_path).and_return(double(cookbook_name: "foo"))
568
+ expect(policyfile.errors.size).to eq(0)
569
+ expect(policyfile.errors.first).to eq(nil)
570
+ end
571
+ end
572
+
573
+ describe "the metadata DSL keyword used in a cookbook without metadata" do
574
+ let(:policyfile_rb) do
575
+ <<-EOH
576
+ run_list "foo"
577
+ metadata
578
+ EOH
579
+ end
580
+ it "throws a missing cookbook metadata error" do
581
+ expected = <<~EOH
582
+ Evaluation of policyfile 'TestPolicyfile.rb' raised an exception
583
+ Exception: ChefCLI::PolicyfileMissingCookbookMetadata "Policyfile specified to use cookbook metadata, but neither ./metadata.rb or ./metadata.json was found."
584
+
585
+ Relevant Code:
586
+ 2: metadata
587
+
588
+ Backtrace:
589
+ TestPolicyfile.rb:2:in `eval_policyfile'
590
+ EOH
591
+ expect(File).to receive(:exist?).with("./metadata.rb").and_return(false)
592
+ expect(File).to receive(:exist?).with("./metadata.json").and_return(false)
593
+ expect(policyfile.errors.size).to eq(1)
594
+ expect(policyfile.errors.first).to eq(expected)
595
+ end
596
+ end
597
+
598
+ describe "the metadata DSL keyword used in a cookbook with bad metadata" do
599
+ let(:policyfile_rb) do
600
+ <<-EOH
601
+ run_list "foo"
602
+ metadata
603
+ EOH
604
+ end
605
+ it "throws a bad cookbook metadata error" do
606
+ expected = <<~EOH
607
+ Evaluation of policyfile 'TestPolicyfile.rb' raised an exception
608
+ Exception: ChefCLI::PolicyfileBadCookbookMetadata "Cookbook metadata for cookbook at . could not be parsed:
609
+ Original Exception: No such file or directory @ rb_sysopen - ./metadata.json"
610
+
611
+ Relevant Code:
612
+ 2: metadata
613
+
614
+ Backtrace:
615
+ TestPolicyfile.rb:2:in `eval_policyfile'
616
+ EOH
617
+ expect(File).to receive(:exist?).with("./metadata.rb").and_return(true)
618
+ expect(File).to receive(:exist?).with("./metadata.json").and_return(true)
619
+ expect(policyfile.errors.size).to eq(1)
620
+ expect(policyfile.errors.first).to eq(expected)
621
+ end
622
+ end
623
+
558
624
  describe "defining attributes" do
559
625
 
560
626
  let(:policyfile_rb) do
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2017 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018, Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2017 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,12 +42,15 @@ describe ChefCLI::PolicyfileServices::ExportRepo do
42
42
 
43
43
  let(:archive) { false }
44
44
 
45
+ let(:policy_group) { nil }
46
+
45
47
  subject(:export_service) do
46
48
  described_class.new(policyfile: policyfile_rb_explicit_name,
47
49
  root_dir: working_dir,
48
50
  export_dir: export_dir,
49
51
  archive: archive,
50
- force: force_export)
52
+ force: force_export,
53
+ policy_group: policy_group)
51
54
  end
52
55
 
53
56
  it "uses Policyfile.rb as the default Policyfile name" do
@@ -306,6 +309,52 @@ describe ChefCLI::PolicyfileServices::ExportRepo do
306
309
  expect(File).to exist(readme_path)
307
310
  end
308
311
 
312
+ context "when the policy_group is changed" do
313
+ let(:policy_group) { "production" }
314
+ it "creates a policy_group file for a specified policy group with the revision id of the exported policy" do
315
+ exported_policy_group_path = File.join(export_dir, "policy_groups", "production.json")
316
+ exported_policy_group_data = FFI_Yajl::Parser.parse(IO.read(exported_policy_group_path))
317
+
318
+ expected_data = { "policies" => { "install-example" => { "revision_id" => revision_id } } }
319
+
320
+ expect(exported_policy_group_data).to eq(expected_data)
321
+ end
322
+
323
+ it "creates a working local mode configuration file with the changed policy_group" do
324
+ expected_config_text = <<~CONFIG
325
+ ### Chef Infra Client Configuration ###
326
+ # The settings in this file will configure chef to apply the exported policy in
327
+ # this directory. To use it, run:
328
+ #
329
+ # chef-client -z
330
+ #
331
+
332
+ policy_name 'install-example'
333
+ policy_group 'production'
334
+
335
+ use_policyfile true
336
+ policy_document_native_api true
337
+
338
+ # In order to use this repo, you need a version of Chef Infra Client and Chef Zero
339
+ # that supports policyfile "native mode" APIs:
340
+ current_version = Gem::Version.new(Chef::VERSION)
341
+ unless Gem::Requirement.new(">= 12.7").satisfied_by?(current_version)
342
+ puts("!" * 80)
343
+ puts(<<-MESSAGE)
344
+ This Chef Repo requires features introduced in Chef Infra Client 12.7, but you are using
345
+ Chef \#{Chef::VERSION}. Please upgrade to Chef Infra Client 12.7 or later.
346
+ MESSAGE
347
+ puts("!" * 80)
348
+ exit!(1)
349
+ end
350
+
351
+ CONFIG
352
+ config_path = File.join(export_dir, ".chef", "config.rb")
353
+ expect(File).to exist(config_path)
354
+ expect(IO.read(config_path)).to eq(expected_config_text)
355
+ end
356
+ end
357
+
309
358
  end
310
359
 
311
360
  context "when the export dir is empty" do
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018, Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
2
+ # Copyright:: Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");