chef-cli 3.0.33 → 3.1.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.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/chef-cli.gemspec +1 -1
- data/lib/chef-cli/cli.rb +1 -5
- data/lib/chef-cli/command/generator_commands/generator_generator.rb +2 -2
- data/lib/chef-cli/command/shell_init.rb +1 -1
- data/lib/chef-cli/command/update.rb +1 -1
- data/lib/chef-cli/configurable.rb +1 -1
- data/lib/chef-cli/cookbook_profiler/git.rb +4 -8
- data/lib/chef-cli/policyfile/artifactory_cookbook_source.rb +5 -1
- data/lib/chef-cli/policyfile/comparison_base.rb +1 -0
- data/lib/chef-cli/policyfile/differ.rb +1 -1
- data/lib/chef-cli/policyfile/remote_lock_fetcher.rb +1 -1
- data/lib/chef-cli/policyfile_services/install.rb +1 -1
- data/lib/chef-cli/service_exception_inspectors/http.rb +0 -26
- data/lib/chef-cli/service_exceptions.rb +1 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/gitignore +3 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/cookbook_file.rb +5 -3
- data/lib/chef-cli/skeletons/code_generator/templates/default/kitchen.yml.erb +1 -1
- data/lib/chef-cli/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +1 -1
- data/lib/chef-cli/version.rb +1 -1
- data/spec/test_helpers.rb +1 -1
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +9 -0
- data/spec/unit/command/generator_commands/cookbook_spec.rb +2 -2
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +2 -2
- data/spec/unit/command/update_spec.rb +0 -8
- data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +27 -1
- data/spec/unit/policyfile/undo_stack_spec.rb +2 -2
- data/spec/unit/policyfile_install_with_includes_spec.rb +1 -1
- data/spec/unit/policyfile_lock_build_spec.rb +1 -1
- data/spec/unit/policyfile_lock_install_spec.rb +1 -1
- data/spec/unit/policyfile_lock_validation_spec.rb +1 -1
- data/spec/unit/policyfile_services/install_spec.rb +88 -0
- data/spec/unit/service_exception_inspectors/http_spec.rb +3 -17
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71469e5a3e7edd6f70574fb215c1c4e24ec88cff76b3a99cf409ed8f5cd34e47
|
4
|
+
data.tar.gz: f32c5f9cadb21975ac1f4c23bbaf7d1f3fb06c07bdaf19a69d77e6d77c8a523e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82a94f09af819de04585aa17ccf9de461d02c168816d901ad549a40a019883763e1637083aacf04e5ca3607b5cd7f599e3a638e79b2cebff59d759b8310c4380
|
7
|
+
data.tar.gz: e473aa54f019c415a9d09674a1a41339b45fdd05ca04f63239d6e29846042ae613db75e1b861a4ef05f285e1a18d23fc18ff29a5905e1b7e7547cac69c414eb1
|
data/Gemfile
CHANGED
@@ -13,8 +13,8 @@ group :test do
|
|
13
13
|
gem "rspec", "~> 3.8"
|
14
14
|
gem "rspec-expectations", "~> 3.8"
|
15
15
|
gem "rspec-mocks", "~> 3.8"
|
16
|
-
gem "cookstyle", "
|
17
|
-
gem "chefstyle", "1.2
|
16
|
+
gem "cookstyle", "=7.7.2" # this forces dependabot PRs to open which triggers cookstyle CI on the chef generate command
|
17
|
+
gem "chefstyle", "=1.6.2"
|
18
18
|
gem "test-kitchen", "> 2.5"
|
19
19
|
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.6")
|
20
20
|
gem "chef-zero", "~> 14"
|
data/chef-cli.gemspec
CHANGED
data/lib/chef-cli/cli.rb
CHANGED
@@ -86,7 +86,7 @@ module ChefCLI
|
|
86
86
|
# chefcli.generator_cookbook would make this command copy the custom
|
87
87
|
# generator, but that doesn't make sense because the user can easily
|
88
88
|
# do that anyway.
|
89
|
-
File.expand_path("
|
89
|
+
File.expand_path("../../skeletons/code_generator", __dir__)
|
90
90
|
end
|
91
91
|
|
92
92
|
private
|
@@ -109,7 +109,7 @@ module ChefCLI
|
|
109
109
|
# @api private
|
110
110
|
def metadata_rb
|
111
111
|
<<~METADATA
|
112
|
-
name
|
112
|
+
name File.basename(File.dirname(__FILE__))
|
113
113
|
description 'Custom code generator cookbook for use with #{ChefCLI::Dist::PRODUCT}'
|
114
114
|
version '0.1.0'
|
115
115
|
|
@@ -142,7 +142,7 @@ module ChefCLI
|
|
142
142
|
end
|
143
143
|
|
144
144
|
def expand_completion_template_path(basename)
|
145
|
-
File.join(File.expand_path("
|
145
|
+
File.join(File.expand_path("../completions", __dir__), basename)
|
146
146
|
end
|
147
147
|
|
148
148
|
def shell_completion_template_context
|
@@ -91,7 +91,7 @@ module ChefCLI
|
|
91
91
|
def run(params = [])
|
92
92
|
return 1 unless apply_params!(params)
|
93
93
|
|
94
|
-
attributes_updater.run
|
94
|
+
attributes_updater.run if update_attributes_only?
|
95
95
|
installer.run(@cookbooks_to_update, config[:exclude_deps]) unless update_attributes_only?
|
96
96
|
0
|
97
97
|
rescue PolicyfileServiceError => e
|
@@ -33,7 +33,7 @@ class Chef::Config
|
|
33
33
|
# instead of `chefcli.generator_cookbook`).
|
34
34
|
config_strict_mode(true)
|
35
35
|
|
36
|
-
default(:generator_cookbook, File.expand_path("
|
36
|
+
default(:generator_cookbook, File.expand_path("skeletons/code_generator", __dir__))
|
37
37
|
|
38
38
|
config_context(:generator) do
|
39
39
|
config_strict_mode(true)
|
@@ -120,14 +120,10 @@ module ChefCLI
|
|
120
120
|
@unborn_branch = false
|
121
121
|
branch
|
122
122
|
rescue Mixlib::ShellOut::ShellCommandFailed => e
|
123
|
-
#
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
# if we got here, but verify_ref_cmd didn't error, we don't know why
|
128
|
-
# the original git command failed, so re-raise.
|
129
|
-
raise e
|
130
|
-
end
|
123
|
+
# "unborn" branch, i.e. one with no commits or
|
124
|
+
# verify_ref_cmd didn't error, we don't know why
|
125
|
+
# the original git command failed, so re-raise.
|
126
|
+
unborn_branch_ref || raise(e)
|
131
127
|
end
|
132
128
|
|
133
129
|
def unborn_branch_ref
|
@@ -82,10 +82,14 @@ module ChefCLI
|
|
82
82
|
"artifactory(#{uri})"
|
83
83
|
end
|
84
84
|
|
85
|
+
def artifactory_api_key
|
86
|
+
chef_config&.artifactory_api_key || ENV["ARTIFACTORY_API_KEY"]
|
87
|
+
end
|
88
|
+
|
85
89
|
private
|
86
90
|
|
87
91
|
def http_connection_for(base_url)
|
88
|
-
headers = { "X-Jfrog-Art-API" =>
|
92
|
+
headers = { "X-Jfrog-Art-API" => artifactory_api_key }
|
89
93
|
@http_connections[base_url] ||= Chef::HTTP::Simple.new(base_url, headers: headers)
|
90
94
|
end
|
91
95
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
require_relative "../policyfile_lock"
|
19
19
|
require_relative "lock_fetcher_mixin"
|
20
20
|
require_relative "../exceptions"
|
21
|
-
require "
|
21
|
+
require "net/protocol" unless defined?(Net::ProtocolError)
|
22
22
|
require "tempfile" unless defined?(Tempfile)
|
23
23
|
|
24
24
|
module ChefCLI
|
@@ -61,7 +61,7 @@ module ChefCLI
|
|
61
61
|
|
62
62
|
if installing_from_lock?
|
63
63
|
install_from_lock
|
64
|
-
elsif cookbooks_to_update.empty? # means update everything
|
64
|
+
elsif cookbooks_to_update.empty? || policyfile_lock.nil? # means update everything
|
65
65
|
generate_lock_and_install
|
66
66
|
else
|
67
67
|
update_lock_and_install(cookbooks_to_update, exclude_deps)
|
@@ -33,17 +33,11 @@ module ChefCLI
|
|
33
33
|
|
34
34
|
def extended_error_info
|
35
35
|
<<~END
|
36
|
-
--- REQUEST DATA ----
|
37
|
-
#{http_method} #{uri}
|
38
|
-
#{request_headers}
|
39
|
-
#{req_body}
|
40
|
-
|
41
36
|
--- RESPONSE DATA ---
|
42
37
|
#{code} #{response_message}
|
43
38
|
#{response_headers}
|
44
39
|
|
45
40
|
#{response_body}
|
46
|
-
|
47
41
|
END
|
48
42
|
end
|
49
43
|
|
@@ -90,30 +84,10 @@ module ChefCLI
|
|
90
84
|
headers_s
|
91
85
|
end
|
92
86
|
|
93
|
-
def request
|
94
|
-
exception.chef_rest_request
|
95
|
-
end
|
96
|
-
|
97
87
|
def uri
|
98
88
|
request.uri.to_s + request.path.to_s
|
99
89
|
end
|
100
90
|
|
101
|
-
def http_method
|
102
|
-
request.method
|
103
|
-
end
|
104
|
-
|
105
|
-
def request_headers
|
106
|
-
headers_s = ""
|
107
|
-
request.each_header do |key, value|
|
108
|
-
headers_s << key << ": " << value << "\n"
|
109
|
-
end
|
110
|
-
headers_s
|
111
|
-
end
|
112
|
-
|
113
|
-
def req_body
|
114
|
-
request.body
|
115
|
-
end
|
116
|
-
|
117
91
|
end
|
118
92
|
end
|
119
93
|
end
|
@@ -1,7 +1,10 @@
|
|
1
1
|
context = ChefCLI::Generator.context
|
2
2
|
cookbook_dir = File.join(context.cookbook_root, context.cookbook_name)
|
3
|
-
|
4
|
-
|
3
|
+
new_file_basename = File.basename(context.new_file_basename)
|
4
|
+
relative_path = File.dirname(context.new_file_basename)
|
5
|
+
relative_path.slice! "."
|
6
|
+
files_dir = File.join(cookbook_dir, 'files', relative_path)
|
7
|
+
cookbook_file_path = File.join(files_dir, new_file_basename)
|
5
8
|
|
6
9
|
directory files_dir do
|
7
10
|
recursive true
|
@@ -19,5 +22,4 @@ else
|
|
19
22
|
source 'cookbook_file.erb'
|
20
23
|
helpers(ChefCLI::Generator::TemplateHelper)
|
21
24
|
end
|
22
|
-
|
23
25
|
end
|
@@ -4,7 +4,7 @@ driver:
|
|
4
4
|
|
5
5
|
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
6
6
|
## localhost on the host.
|
7
|
-
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
7
|
+
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
8
8
|
|
9
9
|
# network:
|
10
10
|
# - ["forwarded_port", {guest: 80, host: 8080}]
|
@@ -4,7 +4,7 @@ driver:
|
|
4
4
|
|
5
5
|
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
6
6
|
## localhost on the host.
|
7
|
-
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
7
|
+
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
8
8
|
|
9
9
|
# network:
|
10
10
|
# - ["forwarded_port", {guest: 80, host: 8080}]
|
data/lib/chef-cli/version.rb
CHANGED
data/spec/test_helpers.rb
CHANGED
@@ -28,4 +28,13 @@ describe ChefCLI::Command::GeneratorCommands::CookbookFile do
|
|
28
28
|
let(:new_file_name) { "new_file.txt" }
|
29
29
|
|
30
30
|
end
|
31
|
+
|
32
|
+
include_examples "a file generator" do
|
33
|
+
|
34
|
+
let(:generator_name) { "file" }
|
35
|
+
let(:generated_files) { [ "files/file/new_file.txt" ] }
|
36
|
+
let(:new_file_name) { "file/new_file.txt" }
|
37
|
+
|
38
|
+
end
|
39
|
+
|
31
40
|
end
|
@@ -562,7 +562,7 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
|
|
562
562
|
|
563
563
|
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
564
564
|
## localhost on the host.
|
565
|
-
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
565
|
+
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
566
566
|
|
567
567
|
# network:
|
568
568
|
# - ["forwarded_port", {guest: 80, host: 8080}]
|
@@ -645,7 +645,7 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
|
|
645
645
|
|
646
646
|
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
647
647
|
## localhost on the host.
|
648
|
-
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
648
|
+
## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
|
649
649
|
|
650
650
|
# network:
|
651
651
|
# - ["forwarded_port", {guest: 80, host: 8080}]
|
@@ -26,7 +26,7 @@ describe ChefCLI::Command::GeneratorCommands::GeneratorGenerator do
|
|
26
26
|
let(:stdout_io) { StringIO.new }
|
27
27
|
let(:stderr_io) { StringIO.new }
|
28
28
|
|
29
|
-
let(:repo_root) { File.expand_path("
|
29
|
+
let(:repo_root) { File.expand_path("../../../..", __dir__) }
|
30
30
|
|
31
31
|
let(:builtin_generator_path) { File.join(repo_root, "lib/chef-cli/skeletons/code_generator") }
|
32
32
|
|
@@ -181,7 +181,7 @@ describe ChefCLI::Command::GeneratorCommands::GeneratorGenerator do
|
|
181
181
|
metadata_path = File.join(target_dir, "metadata.rb")
|
182
182
|
metadata_content = IO.read(metadata_path)
|
183
183
|
expected_metadata = <<~METADATA
|
184
|
-
name
|
184
|
+
name File.basename(File.dirname(__FILE__))
|
185
185
|
description 'Custom code generator cookbook for use with #{ChefCLI::Dist::PRODUCT}'
|
186
186
|
version '0.1.0'
|
187
187
|
|
@@ -132,10 +132,6 @@ describe ChefCLI::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(ChefCLI::PolicyfileServices::UpdateAttributes).to receive(:new)
|
136
|
-
.with(policyfile: nil, ui: command.ui, root_dir: Dir.pwd, chef_config: anything)
|
137
|
-
.and_return(update_attrs_service)
|
138
|
-
expect(update_attrs_service).to receive(:run)
|
139
135
|
end
|
140
136
|
|
141
137
|
it "returns 0" do
|
@@ -159,10 +155,6 @@ describe ChefCLI::Command::Update do
|
|
159
155
|
|
160
156
|
before do
|
161
157
|
expect(install_service).to receive(:run).and_raise(exception)
|
162
|
-
expect(ChefCLI::PolicyfileServices::UpdateAttributes).to receive(:new)
|
163
|
-
.with(policyfile: nil, ui: command.ui, root_dir: Dir.pwd, chef_config: anything)
|
164
|
-
.and_return(update_attrs_service)
|
165
|
-
expect(update_attrs_service).to receive(:run)
|
166
158
|
end
|
167
159
|
|
168
160
|
it "returns 1" do
|
@@ -20,8 +20,9 @@ require "chef-cli/policyfile/source_uri"
|
|
20
20
|
require "chef-cli/policyfile/artifactory_cookbook_source"
|
21
21
|
|
22
22
|
describe ChefCLI::Policyfile::ArtifactoryCookbookSource do
|
23
|
-
subject { described_class.new(cookbook_source) }
|
23
|
+
subject { described_class.new(cookbook_source, chef_config: config) }
|
24
24
|
|
25
|
+
let(:config) { nil }
|
25
26
|
let(:cookbook_source) { "https://supermarket.chef.io/api/v1" }
|
26
27
|
|
27
28
|
let(:http_connection) { double("Chef::HTTP::Simple") }
|
@@ -56,4 +57,29 @@ describe ChefCLI::Policyfile::ArtifactoryCookbookSource do
|
|
56
57
|
expect(subject.source_options_for("apache2", "1.10.4")).to eq(expected_opts)
|
57
58
|
end
|
58
59
|
end
|
60
|
+
|
61
|
+
describe "#artifactory_api_key" do
|
62
|
+
before do
|
63
|
+
ENV["ARTIFACTORY_API_KEY"] = "test"
|
64
|
+
end
|
65
|
+
|
66
|
+
context "when config is not present" do
|
67
|
+
let(:config) { nil }
|
68
|
+
it "should get artifactory key from the env" do
|
69
|
+
expect(subject.artifactory_api_key).to eq("test")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context "when config is present" do
|
74
|
+
let(:config) { double("Chef::Config") }
|
75
|
+
it "should get artifactory key from config when key is present" do
|
76
|
+
expect(config).to receive(:artifactory_api_key).and_return "test1"
|
77
|
+
expect(subject.artifactory_api_key).to eq("test1")
|
78
|
+
end
|
79
|
+
it "should get artifactory key from env when config is present but has a nil key" do
|
80
|
+
expect(config).to receive(:artifactory_api_key).and_return nil
|
81
|
+
expect(subject.artifactory_api_key).to eq("test")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
59
85
|
end
|
@@ -223,7 +223,7 @@ describe ChefCLI::Policyfile::UndoStack do
|
|
223
223
|
end
|
224
224
|
|
225
225
|
it "removes the oldest record" do
|
226
|
-
oldest_record_file = undo_stack_files.
|
226
|
+
oldest_record_file = undo_stack_files.min
|
227
227
|
|
228
228
|
undo_stack.push(incremented_undo_record(11))
|
229
229
|
|
@@ -251,7 +251,7 @@ describe ChefCLI::Policyfile::UndoStack do
|
|
251
251
|
end
|
252
252
|
|
253
253
|
it "removes the oldest record" do
|
254
|
-
oldest_record_file = undo_stack_files.
|
254
|
+
oldest_record_file = undo_stack_files.min
|
255
255
|
|
256
256
|
undo_stack.push(incremented_undo_record(11))
|
257
257
|
|
@@ -19,7 +19,7 @@ require "spec_helper"
|
|
19
19
|
require "shared/setup_git_cookbooks"
|
20
20
|
require "shared/fixture_cookbook_checksums"
|
21
21
|
require "chef-cli/policyfile/storage_config"
|
22
|
-
require "chef-cli/policyfile_lock
|
22
|
+
require "chef-cli/policyfile_lock"
|
23
23
|
|
24
24
|
describe ChefCLI::PolicyfileLock, "building a lockfile", :skip_on_windows do
|
25
25
|
|
@@ -54,6 +54,10 @@ describe ChefCLI::PolicyfileServices::Install do
|
|
54
54
|
|
55
55
|
let(:overwrite) { false }
|
56
56
|
|
57
|
+
let(:cookbooks_to_update) { [] || [ "my_cookbook" ] }
|
58
|
+
|
59
|
+
let(:cookbooks_to_update_empty) { false }
|
60
|
+
|
57
61
|
let(:ui) { TestHelpers::TestUI.new }
|
58
62
|
|
59
63
|
let(:install_service) { described_class.new(policyfile: policyfile_rb_name, ui: ui, root_dir: working_dir, overwrite: overwrite) }
|
@@ -153,6 +157,90 @@ describe ChefCLI::PolicyfileServices::Install do
|
|
153
157
|
|
154
158
|
end
|
155
159
|
|
160
|
+
context "when cookbook to update is empty and no policy lock exist" do
|
161
|
+
|
162
|
+
let(:cookbooks_to_update_empty) { true }
|
163
|
+
|
164
|
+
it "create the policy lock" do
|
165
|
+
install_service.run(:cookbooks_to_update)
|
166
|
+
generated_lock = result_policyfile_lock
|
167
|
+
expect(generated_lock.name).to eq("install-example")
|
168
|
+
expect(generated_lock.cookbook_locks).to have_key("local-cookbook")
|
169
|
+
end
|
170
|
+
|
171
|
+
it "checks for policy lock" do
|
172
|
+
lock = install_service.policyfile_lock
|
173
|
+
expect(lock).to eq(nil)
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
177
|
+
|
178
|
+
context "when cookbook to update is empty and policy lock exist" do
|
179
|
+
|
180
|
+
before do
|
181
|
+
install_service.dup.run
|
182
|
+
end
|
183
|
+
|
184
|
+
let(:cookbooks_to_update_empty) { true }
|
185
|
+
|
186
|
+
it "create the policy lock" do
|
187
|
+
install_service.run(:cookbooks_to_update)
|
188
|
+
generated_lock = result_policyfile_lock
|
189
|
+
expect(generated_lock.name).to eq("install-example")
|
190
|
+
expect(generated_lock.cookbook_locks).to have_key("local-cookbook")
|
191
|
+
end
|
192
|
+
|
193
|
+
it "checks for policy lock" do
|
194
|
+
lock = install_service.policyfile_lock
|
195
|
+
expect(lock).to be_an_instance_of(ChefCLI::PolicyfileLock)
|
196
|
+
expect(lock.name).to eq("install-example")
|
197
|
+
expect(lock.cookbook_locks).to have_key("local-cookbook")
|
198
|
+
end
|
199
|
+
|
200
|
+
end
|
201
|
+
|
202
|
+
context "when cookbook to update is not empty and no policy lock exist" do
|
203
|
+
|
204
|
+
let(:cookbooks_to_update) { [ "my_cookbook" ] }
|
205
|
+
|
206
|
+
it "create the policy lock" do
|
207
|
+
install_service.run(:cookbooks_to_update)
|
208
|
+
generated_lock = result_policyfile_lock
|
209
|
+
expect(generated_lock.name).to eq("install-example")
|
210
|
+
expect(generated_lock.cookbook_locks).to have_key("local-cookbook")
|
211
|
+
end
|
212
|
+
|
213
|
+
it "checks for policy lock" do
|
214
|
+
lock = install_service.policyfile_lock
|
215
|
+
expect(lock).to eq(nil)
|
216
|
+
end
|
217
|
+
|
218
|
+
end
|
219
|
+
|
220
|
+
context "when cookbook to update is not empty and policy lock exist" do
|
221
|
+
|
222
|
+
before do
|
223
|
+
install_service.dup.run
|
224
|
+
end
|
225
|
+
|
226
|
+
let(:cookbooks_to_update) { [ "my_cookbook" ] }
|
227
|
+
|
228
|
+
it "create the policy lock" do
|
229
|
+
install_service.run(:cookbooks_to_update)
|
230
|
+
generated_lock = result_policyfile_lock
|
231
|
+
expect(generated_lock.name).to eq("install-example")
|
232
|
+
expect(generated_lock.cookbook_locks).to have_key("local-cookbook")
|
233
|
+
end
|
234
|
+
|
235
|
+
it "create the policy lock" do
|
236
|
+
lock = install_service.policyfile_lock
|
237
|
+
expect(lock).to be_an_instance_of(ChefCLI::PolicyfileLock)
|
238
|
+
expect(lock.name).to eq("install-example")
|
239
|
+
expect(lock.cookbook_locks).to have_key("local-cookbook")
|
240
|
+
end
|
241
|
+
|
242
|
+
end
|
243
|
+
|
156
244
|
context "and a lockfile exists and `overwrite` is specified" do
|
157
245
|
|
158
246
|
let(:overwrite) { true }
|
@@ -16,8 +16,7 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require "spec_helper"
|
19
|
-
require "net/http"
|
20
|
-
require "chef/monkey_patches/net_http"
|
19
|
+
require "net/http"
|
21
20
|
require "chef-cli/service_exception_inspectors/http"
|
22
21
|
|
23
22
|
describe ChefCLI::ServiceExceptionInspectors::HTTP do
|
@@ -64,7 +63,7 @@ describe ChefCLI::ServiceExceptionInspectors::HTTP do
|
|
64
63
|
end
|
65
64
|
|
66
65
|
let(:exception) do
|
67
|
-
Net::HTTPClientException.new(message, response)
|
66
|
+
Net::HTTPClientException.new(message, response)
|
68
67
|
end
|
69
68
|
|
70
69
|
subject(:inspector) { described_class.new(exception) }
|
@@ -103,23 +102,10 @@ describe ChefCLI::ServiceExceptionInspectors::HTTP do
|
|
103
102
|
|
104
103
|
end
|
105
104
|
|
106
|
-
describe "showing the
|
105
|
+
describe "showing the response in extended error info" do
|
107
106
|
|
108
107
|
let(:response_body) { "this is the response" }
|
109
108
|
|
110
|
-
it "shows the request in a format similar to HTTP messages" do
|
111
|
-
expected_request_string = <<~E
|
112
|
-
--- REQUEST DATA ----
|
113
|
-
POST /organizations/chef-oss-dev/cookbooks
|
114
|
-
content-type: application/json
|
115
|
-
accept: application/json
|
116
|
-
|
117
|
-
this is the request
|
118
|
-
|
119
|
-
E
|
120
|
-
expect(inspector.extended_error_info).to include(expected_request_string)
|
121
|
-
end
|
122
|
-
|
123
109
|
it "shows the response in a format similar to HTTP messages" do
|
124
110
|
expected_response_string = <<~E
|
125
111
|
--- RESPONSE DATA ---
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-cli
|
@@ -102,22 +102,22 @@ dependencies:
|
|
102
102
|
name: solve
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- - ">"
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: '2.0'
|
108
105
|
- - "<"
|
109
106
|
- !ruby/object:Gem::Version
|
110
107
|
version: '5.0'
|
108
|
+
- - ">"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.0'
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - ">"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '2.0'
|
118
115
|
- - "<"
|
119
116
|
- !ruby/object:Gem::Version
|
120
117
|
version: '5.0'
|
118
|
+
- - ">"
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '2.0'
|
121
121
|
- !ruby/object:Gem::Dependency
|
122
122
|
name: addressable
|
123
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -601,7 +601,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
601
601
|
- !ruby/object:Gem::Version
|
602
602
|
version: '0'
|
603
603
|
requirements: []
|
604
|
-
rubygems_version: 3.
|
604
|
+
rubygems_version: 3.1.4
|
605
605
|
signing_key:
|
606
606
|
specification_version: 4
|
607
607
|
summary: A streamlined development and deployment workflow for Chef platform.
|