chef-dk 1.6.11 → 2.0.26

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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +25 -38
  3. data/Gemfile.lock +199 -199
  4. data/README.md +4 -2
  5. data/Rakefile +1 -2
  6. data/acceptance/Gemfile +1 -1
  7. data/acceptance/Gemfile.lock +23 -21
  8. data/chef-dk.gemspec +4 -6
  9. data/lib/chef-dk/builtin_commands.rb +1 -1
  10. data/lib/chef-dk/chef_runner.rb +1 -1
  11. data/lib/chef-dk/cli.rb +1 -0
  12. data/lib/chef-dk/command/generate.rb +5 -2
  13. data/lib/chef-dk/command/generator_commands/helpers.rb +36 -0
  14. data/lib/chef-dk/command/generator_commands/{lwrp.rb → resource.rb} +4 -4
  15. data/lib/chef-dk/command/update.rb +11 -18
  16. data/lib/chef-dk/command/verify.rb +1 -16
  17. data/lib/chef-dk/commands_map.rb +3 -3
  18. data/lib/chef-dk/policyfile/artifactory_cookbook_source.rb +102 -0
  19. data/lib/chef-dk/policyfile/cookbook_location_specification.rb +2 -2
  20. data/lib/chef-dk/policyfile/cookbook_sources.rb +1 -0
  21. data/lib/chef-dk/policyfile/dsl.rb +10 -0
  22. data/lib/chef-dk/policyfile/solution_dependencies.rb +15 -1
  23. data/lib/chef-dk/policyfile_lock.rb +1 -1
  24. data/lib/chef-dk/policyfile_services/install.rb +30 -2
  25. data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +1 -0
  26. data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/test-fixture-recipe.rb +1 -0
  27. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +2 -2
  28. data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +3 -0
  29. data/lib/chef-dk/skeletons/code_generator/files/default/delivery-project.toml +1 -1
  30. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +1 -0
  31. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +2 -1
  32. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +1 -0
  33. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +1 -0
  34. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +1 -0
  35. data/lib/chef-dk/skeletons/code_generator/metadata.rb +3 -2
  36. data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +1 -1
  37. data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +1 -0
  38. data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +7 -12
  39. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +1 -0
  40. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +1 -0
  41. data/lib/chef-dk/skeletons/code_generator/recipes/helpers.rb +21 -0
  42. data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +1 -0
  43. data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +1 -0
  44. data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +1 -0
  45. data/lib/chef-dk/skeletons/code_generator/recipes/{lwrp.rb → resource.rb} +1 -11
  46. data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +3 -3
  47. data/lib/chef-dk/skeletons/code_generator/templates/default/helpers.rb.erb +39 -0
  48. data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +1 -1
  49. data/lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb +1 -0
  50. data/lib/chef-dk/version.rb +2 -2
  51. data/omnibus_overrides.rb +14 -12
  52. data/spec/unit/command/generator_commands/cookbook_spec.rb +7 -1
  53. data/spec/unit/command/generator_commands/helpers_spec.rb +31 -0
  54. data/spec/unit/command/generator_commands/{lwrp_spec.rb → resource_spec.rb} +5 -5
  55. data/spec/unit/command/install_spec.rb +2 -2
  56. data/spec/unit/command/update_spec.rb +11 -3
  57. data/spec/unit/command/verify_spec.rb +2 -1
  58. data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +59 -0
  59. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +1 -1
  60. data/spec/unit/policyfile/solution_dependencies_spec.rb +25 -0
  61. data/spec/unit/policyfile_demands_spec.rb +2 -1
  62. data/spec/unit/policyfile_lock_build_spec.rb +23 -21
  63. data/spec/unit/policyfile_lock_install_spec.rb +2 -2
  64. data/spec/unit/policyfile_lock_validation_spec.rb +3 -3
  65. data/spec/unit/policyfile_services/export_repo_spec.rb +6 -6
  66. data/spec/unit/policyfile_services/install_spec.rb +1 -1
  67. data/spec/unit/policyfile_services/update_spec.rb +143 -0
  68. data/tasks/announce.rb +3 -2
  69. data/tasks/dependencies.rb +35 -111
  70. data/tasks/github_changelog_generator.rb +0 -3
  71. data/tasks/templates/prerelease.md.erb +1 -1
  72. data/tasks/templates/release.md.erb +1 -1
  73. metadata +20 -38
  74. data/lib/chef-dk/skeletons/code_generator/templates/default/provider.rb.erb +0 -0
  75. data/spec/unit/gemfile_util_spec.rb +0 -41
  76. data/spec/unit/helpers_spec.rb +0 -120
  77. data/spec/unit/tasks/helpers_spec.rb +0 -75
  78. data/tasks/bin/bundle-platform +0 -19
  79. data/tasks/bin/create-override-gemfile +0 -110
  80. data/tasks/bundle.rb +0 -96
  81. data/tasks/bundle_util.rb +0 -110
  82. data/tasks/gemfile_util.rb +0 -435
  83. data/tasks/helpers.rb +0 -47
  84. data/version_policy.rb +0 -142
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  context = ChefDK::Generator.context
2
3
  repo_dir = File.join(context.repo_root, context.repo_name)
3
4
 
@@ -1,23 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  context = ChefDK::Generator.context
3
3
  cookbook_dir = File.join(context.cookbook_root, context.cookbook_name)
4
4
 
5
5
  resource_dir = File.join(cookbook_dir, 'resources')
6
6
  resource_path = File.join(resource_dir, "#{context.new_file_basename}.rb")
7
7
 
8
- provider_dir = File.join(cookbook_dir, 'providers')
9
- provider_path = File.join(provider_dir, "#{context.new_file_basename}.rb")
10
-
11
8
  directory resource_dir
12
9
 
13
10
  template resource_path do
14
11
  source 'resource.rb.erb'
15
12
  helpers(ChefDK::Generator::TemplateHelper)
16
13
  end
17
-
18
- directory provider_dir
19
-
20
- template provider_path do
21
- source 'provider.rb.erb'
22
- helpers(ChefDK::Generator::TemplateHelper)
23
- end
@@ -1,7 +1,7 @@
1
-
1
+ # frozen_string_literal: true
2
2
  context = ChefDK::Generator.context
3
3
  cookbook_dir = File.join(context.cookbook_root, context.cookbook_name)
4
- template_dir = File.join(cookbook_dir, 'templates', 'default')
4
+ template_dir = File.join(cookbook_dir, 'templates')
5
5
  template_filename = context.new_file_basename
6
6
 
7
7
  unless File.extname(template_filename) == '.erb'
@@ -19,7 +19,7 @@ end
19
19
  if context.content_source
20
20
 
21
21
  file template_path do
22
- content(IO.read(context.context_source))
22
+ content(IO.read(context.content_source))
23
23
  end
24
24
 
25
25
  else
@@ -0,0 +1,39 @@
1
+ #
2
+ # Chef Documentation
3
+ # https://docs.chef.io/libraries.html
4
+ #
5
+
6
+ #
7
+ # This module name was auto-generated from the cookbook name. This name is a
8
+ # single word that starts with a capital letter and then continues to use
9
+ # camel-casing throughout the remainder of the name.
10
+ #
11
+ module <%= @cookbook_class_name %>
12
+ module <%= @helper_class_name %>
13
+ #
14
+ # Define the methods that you would like to assist the work you do in recipes,
15
+ # resources, or templates.
16
+ #
17
+ # def my_helper_method
18
+ # # help method implementation
19
+ # end
20
+ end
21
+ end
22
+
23
+ #
24
+ # The module you have defined may be extended within the recipe to grant the
25
+ # recipe the helper methods you define.
26
+ #
27
+ # Within your recipe you would write:
28
+ #
29
+ # extend <%= @cookbook_class_name %>::<%= @helper_class_name %>
30
+ #
31
+ # my_helper_method
32
+ #
33
+ # You may also add this to a single resource within a recipe:
34
+ #
35
+ # template '/etc/app.conf' do
36
+ # extend <%= @cookbook_class_name %>::<%= @helper_class_name %>
37
+ # variables specific_key: my_helper_method
38
+ # end
39
+ #
@@ -13,7 +13,7 @@ chef_version '>= 12.1' if respond_to?(:chef_version)
13
13
  #
14
14
  # issues_url 'https://github.com/<insert_org_here>/<%= cookbook_name %>/issues'
15
15
 
16
- # The `source_url` points to the development reposiory for this cookbook. A
16
+ # The `source_url` points to the development repository for this cookbook. A
17
17
  # `View Source` link will be displayed on this cookbook's page when uploaded to
18
18
  # a Supermarket.
19
19
  #
@@ -0,0 +1 @@
1
+ # To learn more about Custom Resources, see https://docs.chef.io/custom_resources.html
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) 2014-2017, Chef Software Inc.
2
+ # Copyright:: Copyright (c) 2014 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");
@@ -16,5 +16,5 @@
16
16
  #
17
17
 
18
18
  module ChefDK
19
- VERSION = "1.6.11"
19
+ VERSION = "2.0.26"
20
20
  end
@@ -1,20 +1,22 @@
1
- # DO NOT EDIT. Generated by "rake dependencies". Edit version_policy.rb instead.
2
- override :bundler, version: "1.16.0"
3
- override :rubygems, version: "2.6.14"
1
+ # THIS IS NOW HAND MANAGED, JUST EDIT THE THING
2
+ # .travis.yml and appveyor.yml consume this,
3
+ # try to keep it machine-parsable.
4
+ override :rubygems, version: "2.6.11"
5
+ override :bundler, version: "1.15.1"
4
6
  override "libffi", version: "3.2.1"
5
- override "libiconv", version: "1.15"
7
+ override "libiconv", version: "1.14"
6
8
  override "liblzma", version: "5.2.3"
7
- override "libxml2", version: "2.9.5"
8
- override "libxslt", version: "1.1.30"
9
- override "libyaml", version: "0.1.7"
9
+ override "libtool", version: "2.4.2"
10
+ override "libxml2", version: "2.9.4"
11
+ override "libxslt", version: "1.1.29"
12
+ override "libyaml", version: "0.1.6"
10
13
  override "makedepend", version: "1.0.5"
11
14
  override "ncurses", version: "5.9"
12
- override "openssl", version: "1.0.2m"
13
15
  override "pkg-config-lite", version: "0.28-1"
14
- override "ruby", version: "2.3.5"
16
+ override "ruby", version: "2.4.1"
17
+ override "ruby-windows-devkit-bash", version: "3.1.23-4-msys-1.0.18"
15
18
  override "util-macros", version: "1.19.0"
16
19
  override "xproto", version: "7.0.28"
17
20
  override "zlib", version: "1.2.11"
18
- override "libtool", version: "2.4.2"
19
- override "ruby-windows-devkit-bash", version: "3.1.23-4-msys-1.0.18"
20
- override "libzmq", version: "4.0.7"
21
+ override "libzmq", version: "4.0.5"
22
+ override "openssl", version: "1.0.2l"
@@ -198,7 +198,7 @@ lint = "chef exec cookstyle"
198
198
  # uploaded to Supermarket. We turn off any rules tagged "supermarket"
199
199
  # by default. If you plan to share this cookbook you should remove
200
200
  # '-t ~supermarket' below to enable supermarket rules.
201
- syntax = "chef exec foodcritic . --exclude spec -f any -t ~supermarket"
201
+ syntax = "chef exec foodcritic . -t ~supermarket"
202
202
  provision = "chef exec kitchen create"
203
203
  deploy = "chef exec kitchen converge"
204
204
  smoke = "chef exec kitchen verify"
@@ -235,6 +235,9 @@ PROJECT_DOT_TOML
235
235
  "name": "build_cookbook",
236
236
  "path": ".delivery/build_cookbook"
237
237
  },
238
+ "delivery-truck": {
239
+ "enable_cookstyle": true
240
+ },
238
241
  "skip_phases": [],
239
242
  "job_dispatch": {
240
243
  "version": "v2"
@@ -589,6 +592,7 @@ KITCHEN_YML
589
592
 
590
593
  let(:expected_chefspec_spec_helper_content) do
591
594
  <<-SPEC_HELPER
595
+ # frozen_string_literal: true
592
596
  require 'chefspec'
593
597
  require 'chefspec/policyfile'
594
598
  SPEC_HELPER
@@ -608,6 +612,7 @@ SPEC_HELPER
608
612
 
609
613
  let(:expected_content) do
610
614
  <<-POLICYFILE_RB
615
+ # frozen_string_literal: true
611
616
  source 'https://supermarket.chef.io'
612
617
 
613
618
  metadata
@@ -666,6 +671,7 @@ KITCHEN_YML
666
671
 
667
672
  let(:expected_chefspec_spec_helper_content) do
668
673
  <<-SPEC_HELPER
674
+ # frozen_string_literal: true
669
675
  require 'chefspec'
670
676
  require 'chefspec/berkshelf'
671
677
  SPEC_HELPER
@@ -0,0 +1,31 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2014 Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'spec_helper'
19
+ require 'shared/a_file_generator'
20
+ require 'chef-dk/command/generator_commands/helpers'
21
+
22
+ describe ChefDK::Command::GeneratorCommands::Helpers do
23
+
24
+ include_examples "a file generator" do
25
+
26
+ let(:generator_name) { "helpers" }
27
+ let(:generated_files) { [ "libraries/new_helpers.rb" ] }
28
+ let(:new_file_name) { "new_helpers" }
29
+
30
+ end
31
+ end
@@ -17,15 +17,15 @@
17
17
 
18
18
  require "spec_helper"
19
19
  require "shared/a_file_generator"
20
- require "chef-dk/command/generator_commands/lwrp"
20
+ require "chef-dk/command/generator_commands/resource"
21
21
 
22
- describe ChefDK::Command::GeneratorCommands::LWRP do
22
+ describe ChefDK::Command::GeneratorCommands::Resource do
23
23
 
24
24
  include_examples "a file generator" do
25
25
 
26
- let(:generator_name) { "lwrp" }
27
- let(:generated_files) { [ "resources/new_lwrp.rb", "providers/new_lwrp.rb" ] }
28
- let(:new_file_name) { "new_lwrp" }
26
+ let(:generator_name) { "resource" }
27
+ let(:generated_files) { [ "resources/new_resource.rb" ] }
28
+ let(:new_file_name) { "new_resource" }
29
29
 
30
30
  end
31
31
  end
@@ -78,7 +78,7 @@ describe ChefDK::Command::Install do
78
78
 
79
79
  it "creates the installer service with a `nil` policyfile path" do
80
80
  expect(ChefDK::PolicyfileServices::Install).to receive(:new).
81
- with(hash_including(policyfile: nil, ui: command.ui, root_dir: Dir.pwd)).
81
+ with(hash_including(policyfile: nil, ui: command.ui, root_dir: Dir.pwd, config: Chef::Config)).
82
82
  and_return(install_service)
83
83
  expect(command.installer).to eq(install_service)
84
84
  end
@@ -95,7 +95,7 @@ describe ChefDK::Command::Install do
95
95
 
96
96
  it "creates the installer service with the specified policyfile path" do
97
97
  expect(ChefDK::PolicyfileServices::Install).to receive(:new).
98
- with(hash_including(policyfile: "MyPolicy.rb", ui: command.ui, root_dir: Dir.pwd)).
98
+ with(hash_including(policyfile: "MyPolicy.rb", ui: command.ui, root_dir: Dir.pwd, config: Chef::Config)).
99
99
  and_return(install_service)
100
100
  expect(command.installer).to eq(install_service)
101
101
  end
@@ -77,7 +77,7 @@ describe ChefDK::Command::Update do
77
77
  let(:params) { ["-a"] }
78
78
 
79
79
  it "enables attributes update mode" do
80
- expect(command.update_attributes?).to be(true)
80
+ expect(command.update_attributes_only?).to be(true)
81
81
  end
82
82
 
83
83
  it "creates an attributes update service object" do
@@ -96,7 +96,7 @@ describe ChefDK::Command::Update do
96
96
 
97
97
  it "creates the installer service with a `nil` policyfile path" do
98
98
  expect(ChefDK::PolicyfileServices::Install).to receive(:new).
99
- with(policyfile: nil, ui: command.ui, root_dir: Dir.pwd, overwrite: true).
99
+ with(policyfile: nil, ui: command.ui, root_dir: Dir.pwd, config: Chef::Config, overwrite: true).
100
100
  and_return(install_service)
101
101
  expect(command.installer).to eq(install_service)
102
102
  end
@@ -113,7 +113,7 @@ describe ChefDK::Command::Update do
113
113
 
114
114
  it "creates the installer service with the specified policyfile path" do
115
115
  expect(ChefDK::PolicyfileServices::Install).to receive(:new).
116
- with(policyfile: "MyPolicy.rb", ui: command.ui, root_dir: Dir.pwd, overwrite: true).
116
+ with(policyfile: "MyPolicy.rb", ui: command.ui, root_dir: Dir.pwd, config: Chef::Config, overwrite: true).
117
117
  and_return(install_service)
118
118
  expect(command.installer).to eq(install_service)
119
119
  end
@@ -132,6 +132,10 @@ describe ChefDK::Command::Update do
132
132
  context "when the command is successful" do
133
133
  before do
134
134
  expect(install_service).to receive(:run)
135
+ expect(ChefDK::PolicyfileServices::UpdateAttributes).to receive(:new).
136
+ with(policyfile: nil, ui: command.ui, root_dir: Dir.pwd).
137
+ and_return(update_attrs_service)
138
+ expect(update_attrs_service).to receive(:run)
135
139
  end
136
140
 
137
141
  it "returns 0" do
@@ -155,6 +159,10 @@ describe ChefDK::Command::Update do
155
159
 
156
160
  before do
157
161
  expect(install_service).to receive(:run).and_raise(exception)
162
+ expect(ChefDK::PolicyfileServices::UpdateAttributes).to receive(:new).
163
+ with(policyfile: nil, ui: command.ui, root_dir: Dir.pwd).
164
+ and_return(update_attrs_service)
165
+ expect(update_attrs_service).to receive(:run)
158
166
  end
159
167
 
160
168
  it "returns 1" do
@@ -45,7 +45,6 @@ describe ChefDK::Command::Verify do
45
45
  "chef-provisioning",
46
46
  "chefspec",
47
47
  "generated-cookbooks-pass-chefspec",
48
- "rubocop",
49
48
  "fauxhai",
50
49
  "knife-spork",
51
50
  "kitchen-vagrant",
@@ -106,6 +105,7 @@ describe ChefDK::Command::Verify do
106
105
 
107
106
  describe "when running verify command" do
108
107
  let(:stdout_io) { StringIO.new }
108
+ let(:stderr_io) { StringIO.new }
109
109
  let(:ruby_path) { File.join(fixtures_path, "eg_omnibus_dir/valid/embedded/bin/ruby") }
110
110
 
111
111
  def run_unit_test
@@ -170,6 +170,7 @@ describe ChefDK::Command::Verify do
170
170
  before do
171
171
  allow(Gem).to receive(:ruby).and_return(ruby_path)
172
172
  allow(command_instance).to receive(:stdout).and_return(stdout_io)
173
+ allow(command_instance).to receive(:stderr).and_return(stderr_io)
173
174
  allow(command_instance).to receive(:components).and_return(components)
174
175
  end
175
176
 
@@ -0,0 +1,59 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2014 Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "spec_helper"
19
+ require "chef-dk/policyfile/source_uri"
20
+ require "chef-dk/policyfile/artifactory_cookbook_source"
21
+
22
+ describe ChefDK::Policyfile::ArtifactoryCookbookSource do
23
+ subject { described_class.new(cookbook_source) }
24
+
25
+ let(:cookbook_source) { "https://supermarket.chef.io/api/v1" }
26
+
27
+ let(:http_connection) { double("Chef::HTTP::Simple") }
28
+
29
+ let(:universe_response_encoded) { IO.read(File.join(fixtures_path, "cookbooks_api/small_universe.json")) }
30
+
31
+ let(:pruned_universe) { JSON.parse(IO.read(File.join(fixtures_path, "cookbooks_api/pruned_small_universe.json"))) }
32
+
33
+ describe "fetching the Universe graph" do
34
+
35
+ before do
36
+ expect(subject).to receive(:http_connection_for).with(cookbook_source).and_return(http_connection)
37
+ allow(http_connection).to receive(:get).with("/universe").and_return(universe_response_encoded)
38
+ end
39
+
40
+ it "fetches the universe graph" do
41
+ expect(http_connection).to receive(:get).with("/universe").and_return(universe_response_encoded)
42
+ actual_universe = subject.universe_graph
43
+ expect(actual_universe).to have_key("apt")
44
+ expect(actual_universe["apt"]).to eq(pruned_universe["apt"])
45
+ expect(subject.universe_graph).to eq(pruned_universe)
46
+ end
47
+
48
+ it "generates location options for a cookbook from the given graph" do
49
+ cookbook_url = "https://supermarket.chef.io/api/v1/cookbooks/apache2/versions/1.10.4/download"
50
+ expect(subject).to receive(:http_connection_for).with(cookbook_url).and_return(http_connection)
51
+ expected_opts = {
52
+ artifactory: cookbook_url,
53
+ http_client: http_connection,
54
+ version: "1.10.4",
55
+ }
56
+ expect(subject.source_options_for("apache2", "1.10.4")).to eq(expected_opts)
57
+ end
58
+ end
59
+ end
@@ -85,7 +85,7 @@ describe ChefDK::Policyfile::ReadCookbookForCompatModeUpload do
85
85
  end
86
86
 
87
87
  it "excludes ignored files from the list of cookbook files" do
88
- expect(reader_with_ignored_files.cookbook_version.root_filenames).to_not include(chefignored_file)
88
+ expect(reader_with_ignored_files.cookbook_version.files_for("root_files")).to_not include(chefignored_file)
89
89
  end
90
90
 
91
91
  end
@@ -69,6 +69,31 @@ describe ChefDK::Policyfile::SolutionDependencies do
69
69
 
70
70
  end
71
71
 
72
+ context 'when populated with dependency data from a complex lockfile' do
73
+ let(:dependency_data) do
74
+ {
75
+ "Policyfile" => [
76
+ [ "a", ">= 0.0.0"], ["b", ">= 0.0.0" ]
77
+ ],
78
+ "dependencies" => {
79
+ "a (0.1.0)" => [ ["c", "~> 1.0.0"], ["d", "~> 0.0.0"] ],
80
+ "b (1.0.0)" => [ ["f", ">= 0.0.1"] ],
81
+ "c (1.0.1)" => [ ["e", ">= 0.0.1"] ],
82
+ "d (0.0.1)" => [],
83
+ "e (0.0.1)" => [],
84
+ "f (0.0.1)" => [],
85
+ },
86
+ }
87
+ end
88
+ it "can compute list of transitive dependencies" do
89
+
90
+ expect(solution_dependencies.transitive_deps(["e"])).to eq(["e"])
91
+ expect(solution_dependencies.transitive_deps(["c"])).to eq(["c", "e"])
92
+ expect(solution_dependencies.transitive_deps(["c", "d"])).to eq(["c", "d", "e"])
93
+ expect(solution_dependencies.transitive_deps(["a"])).to eq(["a", "c", "d", "e"])
94
+ end
95
+ end
96
+
72
97
  context "when populated with dependency data" do
73
98
 
74
99
  let(:expected_deps_for_lock) do
@@ -861,12 +861,13 @@ MESSAGE
861
861
 
862
862
  it "includes the policyfile constraint in the solution dependencies" do
863
863
  expected_solution_deps = {
864
- "Policyfile" => [ [ "remote-cb", "~> 0.1" ], [ "local-cookbook", ">= 0.0.0"] ],
864
+ "Policyfile" => [ [ "local-cookbook", ">= 0.0.0" ], [ "remote-cb", "~> 0.1" ] ],
865
865
  "dependencies" => {
866
866
  "local-cookbook (2.3.4)" => [],
867
867
  "remote-cb (0.1.0)" => [],
868
868
  },
869
869
 
870
+
870
871
  }
871
872
  expect(policyfile.solution_dependencies.to_lock).to eq(expected_solution_deps)
872
873
  end