chef-dk 3.3.23 → 3.4.38
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +7 -7
- data/Gemfile.lock +91 -82
- data/lib/chef-dk/cli.rb +13 -13
- data/lib/chef-dk/command/base.rb +8 -8
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +10 -10
- data/lib/chef-dk/command/clean_policy_revisions.rb +9 -9
- data/lib/chef-dk/command/delete_policy.rb +9 -9
- data/lib/chef-dk/command/delete_policy_group.rb +9 -9
- data/lib/chef-dk/command/diff.rb +35 -35
- data/lib/chef-dk/command/export.rb +11 -11
- data/lib/chef-dk/command/generate.rb +3 -3
- data/lib/chef-dk/command/generator_commands.rb +24 -24
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +3 -3
- data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +1 -1
- data/lib/chef-dk/command/generator_commands/cookbook.rb +3 -3
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +3 -3
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +5 -5
- data/lib/chef-dk/command/generator_commands/template.rb +3 -3
- data/lib/chef-dk/command/install.rb +11 -11
- data/lib/chef-dk/command/provision.rb +32 -32
- data/lib/chef-dk/command/push.rb +9 -9
- data/lib/chef-dk/command/push_archive.rb +9 -9
- data/lib/chef-dk/command/shell_init.rb +21 -21
- data/lib/chef-dk/command/show_policy.rb +11 -11
- data/lib/chef-dk/command/undelete.rb +17 -17
- data/lib/chef-dk/command/update.rb +12 -12
- data/lib/chef-dk/command/verify.rb +63 -63
- data/lib/chef-dk/component_test.rb +3 -3
- data/lib/chef-dk/exceptions.rb +5 -5
- data/lib/chef-dk/generator.rb +61 -61
- data/lib/chef-dk/helpers.rb +1 -1
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +1 -1
- data/lib/chef-dk/policyfile/cookbook_locks.rb +1 -1
- data/lib/chef-dk/policyfile/git_lock_fetcher.rb +7 -7
- data/lib/chef-dk/policyfile/policyfile_location_specification.rb +1 -1
- data/lib/chef-dk/policyfile/uploader.rb +4 -4
- data/lib/chef-dk/policyfile_compiler.rb +1 -1
- data/lib/chef-dk/policyfile_services/export_repo.rb +49 -49
- data/lib/chef-dk/policyfile_services/install.rb +3 -3
- data/lib/chef-dk/policyfile_services/push_archive.rb +5 -5
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +1 -1
- data/lib/chef-dk/policyfile_services/update_attributes.rb +2 -2
- data/lib/chef-dk/service_exception_inspectors/http.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +6 -6
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +9 -9
- data/omnibus_overrides.rb +1 -1
- data/spec/spec_helper.rb +3 -3
- data/spec/unit/cli_spec.rb +9 -9
- data/spec/unit/command/base_spec.rb +25 -25
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +6 -6
- data/spec/unit/command/clean_policy_revisions_spec.rb +6 -6
- data/spec/unit/command/delete_policy_group_spec.rb +6 -6
- data/spec/unit/command/delete_policy_spec.rb +6 -6
- data/spec/unit/command/export_spec.rb +10 -10
- data/spec/unit/command/generate_spec.rb +5 -5
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +15 -15
- data/spec/unit/command/generator_commands/cookbook_spec.rb +174 -174
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +5 -5
- data/spec/unit/command/generator_commands/policyfile_spec.rb +15 -15
- data/spec/unit/command/generator_commands/repo_spec.rb +16 -16
- data/spec/unit/command/install_spec.rb +15 -15
- data/spec/unit/command/provision_spec.rb +25 -25
- data/spec/unit/command/push_spec.rb +12 -12
- data/spec/unit/command/shell_init_spec.rb +59 -59
- data/spec/unit/command/show_policy_spec.rb +6 -6
- data/spec/unit/command/undelete_spec.rb +6 -6
- data/spec/unit/command/update_spec.rb +30 -30
- data/spec/unit/fixtures/command/cli_test_command.rb +1 -1
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +41 -41
- data/spec/unit/policyfile/comparison_base_spec.rb +38 -38
- data/spec/unit/policyfile/cookbook_locks_spec.rb +3 -3
- data/spec/unit/policyfile/differ_spec.rb +361 -361
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +34 -34
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +6 -6
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +35 -35
- data/spec/unit/policyfile/lock_applier_spec.rb +6 -6
- data/spec/unit/policyfile/reports/upload_spec.rb +5 -5
- data/spec/unit/policyfile/uploader_spec.rb +27 -27
- data/spec/unit/policyfile_demands_spec.rb +84 -84
- data/spec/unit/policyfile_evaluation_spec.rb +14 -14
- data/spec/unit/policyfile_includes_spec.rb +1 -1
- data/spec/unit/policyfile_install_with_includes_spec.rb +3 -3
- data/spec/unit/policyfile_lock_build_spec.rb +58 -58
- data/spec/unit/policyfile_lock_validation_spec.rb +108 -108
- data/spec/unit/policyfile_services/clean_policies_spec.rb +12 -12
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +9 -9
- data/spec/unit/policyfile_services/export_repo_spec.rb +64 -64
- data/spec/unit/policyfile_services/install_spec.rb +4 -4
- data/spec/unit/policyfile_services/push_archive_spec.rb +41 -41
- data/spec/unit/policyfile_services/push_spec.rb +38 -38
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +12 -12
- data/spec/unit/policyfile_services/rm_policy_spec.rb +6 -6
- data/spec/unit/policyfile_services/show_policy_spec.rb +161 -161
- data/spec/unit/policyfile_services/undelete_spec.rb +13 -13
- data/spec/unit/policyfile_services/update_attributes_spec.rb +6 -6
- data/spec/unit/policyfile_services/update_spec.rb +7 -7
- data/spec/unit/service_exception_inspectors/http_spec.rb +12 -12
- metadata +2 -2
@@ -10,12 +10,12 @@ inspec_dir = File.join(cookbook_dir, 'test', 'integration', 'default')
|
|
10
10
|
inspec_path = File.join(inspec_dir, "#{context.new_file_basename}_test.rb")
|
11
11
|
|
12
12
|
if File.directory?(File.join(cookbook_dir, 'test', 'recipes'))
|
13
|
-
Chef::Log.deprecation
|
14
|
-
It appears that you have Inspec tests located at "test/recipes". This location can
|
15
|
-
cause issues with Foodcritic and has been deprecated in favor of "test/integration/default".
|
16
|
-
Please move your existing Inspec tests to the newly created "test/integration/default"
|
17
|
-
directory, and update the 'inspec_tests' value in your .kitchen.yml file(s) to
|
18
|
-
point to "test/integration/default".
|
13
|
+
Chef::Log.deprecation <<~EOH
|
14
|
+
It appears that you have Inspec tests located at "test/recipes". This location can
|
15
|
+
cause issues with Foodcritic and has been deprecated in favor of "test/integration/default".
|
16
|
+
Please move your existing Inspec tests to the newly created "test/integration/default"
|
17
|
+
directory, and update the 'inspec_tests' value in your .kitchen.yml file(s) to
|
18
|
+
point to "test/integration/default".
|
19
19
|
EOH
|
20
20
|
end
|
21
21
|
|
data/lib/chef-dk/version.rb
CHANGED
@@ -68,14 +68,14 @@ module Kitchen
|
|
68
68
|
default_config :policyfile, "Policyfile.rb"
|
69
69
|
|
70
70
|
default_config :chef_client_path do |provisioner|
|
71
|
-
provisioner
|
72
|
-
remote_path_join(%W{#{provisioner[:chef_omnibus_root]} bin chef-client})
|
73
|
-
tap { |path| path.concat(".bat") if provisioner.windows_os? }
|
71
|
+
provisioner
|
72
|
+
.remote_path_join(%W{#{provisioner[:chef_omnibus_root]} bin chef-client})
|
73
|
+
.tap { |path| path.concat(".bat") if provisioner.windows_os? }
|
74
74
|
end
|
75
75
|
|
76
76
|
default_config :ruby_bindir do |provisioner|
|
77
|
-
provisioner
|
78
|
-
remote_path_join(%W{#{provisioner[:chef_omnibus_root]} embedded bin})
|
77
|
+
provisioner
|
78
|
+
.remote_path_join(%W{#{provisioner[:chef_omnibus_root]} embedded bin})
|
79
79
|
end
|
80
80
|
|
81
81
|
# (see Base#finalize_config!)
|
@@ -97,8 +97,8 @@ module Kitchen
|
|
97
97
|
def run_command
|
98
98
|
level = config[:log_level] == :info ? :auto : config[:log_level]
|
99
99
|
|
100
|
-
cmd = "#{sudo(config[:chef_client_path])} --local-mode"
|
101
|
-
tap { |str| str.insert(0, "& ") if powershell_shell? }
|
100
|
+
cmd = "#{sudo(config[:chef_client_path])} --local-mode"
|
101
|
+
.tap { |str| str.insert(0, "& ") if powershell_shell? }
|
102
102
|
|
103
103
|
args = [
|
104
104
|
"--config #{config[:root_path]}/client.rb",
|
@@ -118,8 +118,8 @@ module Kitchen
|
|
118
118
|
end
|
119
119
|
|
120
120
|
wrap_shell_code(
|
121
|
-
[cmd, *args].join(" ")
|
122
|
-
tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
121
|
+
[cmd, *args].join(" ")
|
122
|
+
.tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
|
123
123
|
)
|
124
124
|
end
|
125
125
|
|
data/omnibus_overrides.rb
CHANGED
@@ -16,7 +16,7 @@ override "libyaml", version: "0.1.7"
|
|
16
16
|
override "makedepend", version: "1.0.5"
|
17
17
|
override "ncurses", version: "5.9"
|
18
18
|
override "pkg-config-lite", version: "0.28-1"
|
19
|
-
override "ruby", version: "2.5.
|
19
|
+
override "ruby", version: "2.5.3"
|
20
20
|
override "ruby-windows-devkit-bash", version: "3.1.23-4-msys-1.0.18"
|
21
21
|
override "util-macros", version: "1.19.0"
|
22
22
|
override "xproto", version: "7.0.28"
|
data/spec/spec_helper.rb
CHANGED
@@ -38,11 +38,11 @@ RSpec.configure do |c|
|
|
38
38
|
|
39
39
|
c.after(:all) { clear_tempdir }
|
40
40
|
|
41
|
-
c.filter_run :
|
41
|
+
c.filter_run focus: true
|
42
42
|
c.run_all_when_everything_filtered = true
|
43
43
|
# Tests that randomly fail, but may have value.
|
44
|
-
c.filter_run_excluding :
|
45
|
-
c.filter_run_excluding :
|
44
|
+
c.filter_run_excluding volatile: true
|
45
|
+
c.filter_run_excluding skip_on_windows: true if running_on_windows
|
46
46
|
|
47
47
|
c.mock_with(:rspec) do |mocks|
|
48
48
|
mocks.verify_partial_doubles = true
|
data/spec/unit/cli_spec.rb
CHANGED
@@ -40,17 +40,17 @@ describe ChefDK::CLI do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
let(:base_help_message) do
|
43
|
-
|
44
|
-
Usage:
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
<<~E
|
44
|
+
Usage:
|
45
|
+
chef -h/--help
|
46
|
+
chef -v/--version
|
47
|
+
chef command [arguments...] [options...]
|
48
48
|
|
49
49
|
|
50
|
-
Available Commands:
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
Available Commands:
|
51
|
+
verify Test the embedded ChefDK applications
|
52
|
+
gem Runs the `gem` command in context of the embedded ruby
|
53
|
+
example Example subcommand for testing
|
54
54
|
E
|
55
55
|
end
|
56
56
|
|
@@ -28,10 +28,10 @@ describe ChefDK::Command::Base do
|
|
28
28
|
description: "An option with a required argument"
|
29
29
|
|
30
30
|
option :user,
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
31
|
+
short: "-u",
|
32
|
+
long: "--user",
|
33
|
+
description: "If the user exists",
|
34
|
+
boolean: true
|
35
35
|
|
36
36
|
def run(params)
|
37
37
|
parse_options(params)
|
@@ -102,12 +102,12 @@ describe ChefDK::Command::Base do
|
|
102
102
|
|
103
103
|
expect(stderr).to eq("ERROR: invalid option: -foo\n\n")
|
104
104
|
|
105
|
-
expected =
|
106
|
-
use me please
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
105
|
+
expected = <<~E
|
106
|
+
use me please
|
107
|
+
-a, --arg ARG An option with a required argument
|
108
|
+
-h, --help Show this message
|
109
|
+
-u, --user If the user exists
|
110
|
+
-v, --version Show chef version
|
111
111
|
|
112
112
|
E
|
113
113
|
expect(stdout).to eq(expected)
|
@@ -122,12 +122,12 @@ E
|
|
122
122
|
|
123
123
|
expect(stderr).to eq("ERROR: missing argument: -a\n\n")
|
124
124
|
|
125
|
-
expected =
|
126
|
-
use me please
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
125
|
+
expected = <<~E
|
126
|
+
use me please
|
127
|
+
-a, --arg ARG An option with a required argument
|
128
|
+
-h, --help Show this message
|
129
|
+
-u, --user If the user exists
|
130
|
+
-v, --version Show chef version
|
131
131
|
|
132
132
|
E
|
133
133
|
expect(stdout).to eq(expected)
|
@@ -139,15 +139,15 @@ E
|
|
139
139
|
describe "when parsing Chef's configuration fails" do
|
140
140
|
|
141
141
|
let(:exception_message) do
|
142
|
-
|
143
|
-
You have an error in your config file /Users/ddeleo/.chef/config.rb (Chef::Exceptions::ConfigurationError)
|
144
|
-
|
145
|
-
Mixlib::Config::UnknownConfigOptionError: Cannot set unsupported config value foo.
|
146
|
-
|
147
|
-
Relevant file content:
|
148
|
-
|
149
|
-
|
150
|
-
|
142
|
+
<<~MESSAGE
|
143
|
+
You have an error in your config file /Users/ddeleo/.chef/config.rb (Chef::Exceptions::ConfigurationError)
|
144
|
+
|
145
|
+
Mixlib::Config::UnknownConfigOptionError: Cannot set unsupported config value foo.
|
146
|
+
/Users/person/.chef/config.rb:50:in `from_string'
|
147
|
+
Relevant file content:
|
148
|
+
49: chefdk.generator_cookbook "~/.chef/code_generator"
|
149
|
+
50: chefdk.foo "bar"
|
150
|
+
51:
|
151
151
|
|
152
152
|
MESSAGE
|
153
153
|
end
|
@@ -134,9 +134,9 @@ describe ChefDK::Command::CleanPolicyCookbooks do
|
|
134
134
|
it "prints a debugging message and exits non-zero" do
|
135
135
|
expect(command.run([])).to eq(1)
|
136
136
|
|
137
|
-
expected_output =
|
138
|
-
Error: Failed to delete some policy revisions.
|
139
|
-
Reason: (StandardError) some operation failed
|
137
|
+
expected_output = <<~E
|
138
|
+
Error: Failed to delete some policy revisions.
|
139
|
+
Reason: (StandardError) some operation failed
|
140
140
|
|
141
141
|
E
|
142
142
|
|
@@ -149,9 +149,9 @@ E
|
|
149
149
|
|
150
150
|
command.run(%w{ -D })
|
151
151
|
|
152
|
-
expected_output =
|
153
|
-
Error: Failed to delete some policy revisions.
|
154
|
-
Reason: (StandardError) some operation failed
|
152
|
+
expected_output = <<~E
|
153
|
+
Error: Failed to delete some policy revisions.
|
154
|
+
Reason: (StandardError) some operation failed
|
155
155
|
|
156
156
|
|
157
157
|
E
|
@@ -134,9 +134,9 @@ describe ChefDK::Command::CleanPolicyRevisions do
|
|
134
134
|
it "prints a debugging message and exits non-zero" do
|
135
135
|
expect(command.run([])).to eq(1)
|
136
136
|
|
137
|
-
expected_output =
|
138
|
-
Error: Failed to delete some policy revisions.
|
139
|
-
Reason: (StandardError) some operation failed
|
137
|
+
expected_output = <<~E
|
138
|
+
Error: Failed to delete some policy revisions.
|
139
|
+
Reason: (StandardError) some operation failed
|
140
140
|
|
141
141
|
E
|
142
142
|
|
@@ -149,9 +149,9 @@ E
|
|
149
149
|
|
150
150
|
command.run(%w{ -D })
|
151
151
|
|
152
|
-
expected_output =
|
153
|
-
Error: Failed to delete some policy revisions.
|
154
|
-
Reason: (StandardError) some operation failed
|
152
|
+
expected_output = <<~E
|
153
|
+
Error: Failed to delete some policy revisions.
|
154
|
+
Reason: (StandardError) some operation failed
|
155
155
|
|
156
156
|
|
157
157
|
E
|
@@ -161,9 +161,9 @@ describe ChefDK::Command::DeletePolicyGroup do
|
|
161
161
|
it "prints a debugging message and exits non-zero" do
|
162
162
|
expect(command.run(%w{example-policy-group})).to eq(1)
|
163
163
|
|
164
|
-
expected_output =
|
165
|
-
Error: Failed to delete policy group
|
166
|
-
Reason: (StandardError) some operation failed
|
164
|
+
expected_output = <<~E
|
165
|
+
Error: Failed to delete policy group
|
166
|
+
Reason: (StandardError) some operation failed
|
167
167
|
|
168
168
|
E
|
169
169
|
|
@@ -175,9 +175,9 @@ E
|
|
175
175
|
it "includes the backtrace in the error" do
|
176
176
|
command.run(%w{ example-policy-group -D })
|
177
177
|
|
178
|
-
expected_output =
|
179
|
-
Error: Failed to delete policy group
|
180
|
-
Reason: (StandardError) some operation failed
|
178
|
+
expected_output = <<~E
|
179
|
+
Error: Failed to delete policy group
|
180
|
+
Reason: (StandardError) some operation failed
|
181
181
|
|
182
182
|
|
183
183
|
E
|
@@ -161,9 +161,9 @@ describe ChefDK::Command::DeletePolicy do
|
|
161
161
|
it "prints a debugging message and exits non-zero" do
|
162
162
|
expect(command.run(%w{example-policy})).to eq(1)
|
163
163
|
|
164
|
-
expected_output =
|
165
|
-
Error: Failed to delete policy.
|
166
|
-
Reason: (StandardError) some operation failed
|
164
|
+
expected_output = <<~E
|
165
|
+
Error: Failed to delete policy.
|
166
|
+
Reason: (StandardError) some operation failed
|
167
167
|
|
168
168
|
E
|
169
169
|
|
@@ -175,9 +175,9 @@ E
|
|
175
175
|
it "includes the backtrace in the error" do
|
176
176
|
command.run(%w{ example-policy -D })
|
177
177
|
|
178
|
-
expected_output =
|
179
|
-
Error: Failed to delete policy.
|
180
|
-
Reason: (StandardError) some operation failed
|
178
|
+
expected_output = <<~E
|
179
|
+
Error: Failed to delete policy.
|
180
|
+
Reason: (StandardError) some operation failed
|
181
181
|
|
182
182
|
|
183
183
|
E
|
@@ -132,10 +132,10 @@ describe ChefDK::Command::Export do
|
|
132
132
|
it "prints instructions for running chef-client in the repo" do
|
133
133
|
command.run(params)
|
134
134
|
|
135
|
-
expected_message =
|
136
|
-
To converge this system with the exported policy, run:
|
137
|
-
|
138
|
-
|
135
|
+
expected_message = <<~MESSAGE
|
136
|
+
To converge this system with the exported policy, run:
|
137
|
+
cd /path/to/export
|
138
|
+
chef-client -z
|
139
139
|
MESSAGE
|
140
140
|
expect(ui.output).to include(expected_message)
|
141
141
|
end
|
@@ -164,9 +164,9 @@ MESSAGE
|
|
164
164
|
end
|
165
165
|
|
166
166
|
it "displays the exception and cause" do
|
167
|
-
expected_error_text =
|
168
|
-
Error: export failed
|
169
|
-
Reason: (StandardError) some operation failed
|
167
|
+
expected_error_text = <<~E
|
168
|
+
Error: export failed
|
169
|
+
Reason: (StandardError) some operation failed
|
170
170
|
|
171
171
|
E
|
172
172
|
|
@@ -179,9 +179,9 @@ E
|
|
179
179
|
let(:params) { [ "path/to/export", "-D"] }
|
180
180
|
|
181
181
|
it "displays the exception and cause with backtrace" do
|
182
|
-
expected_error_text =
|
183
|
-
Error: export failed
|
184
|
-
Reason: (StandardError) some operation failed
|
182
|
+
expected_error_text = <<~E
|
183
|
+
Error: export failed
|
184
|
+
Reason: (StandardError) some operation failed
|
185
185
|
|
186
186
|
|
187
187
|
E
|
@@ -41,7 +41,7 @@ class ChefDK::Command::GeneratorCommands::Example < ChefDK::Command::GeneratorCo
|
|
41
41
|
|
42
42
|
def run
|
43
43
|
parse_options(@argv)
|
44
|
-
{ :
|
44
|
+
{ argv: @argv, ran_cmd: "example" }
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -74,11 +74,11 @@ describe ChefDK::Command::Generate do
|
|
74
74
|
|
75
75
|
context "with a generator defined" do
|
76
76
|
let(:expected_help_message) do
|
77
|
-
|
78
|
-
Usage: chef generate GENERATOR [options]
|
77
|
+
<<~E
|
78
|
+
Usage: chef generate GENERATOR [options]
|
79
79
|
|
80
|
-
Available generators:
|
81
|
-
|
80
|
+
Available generators:
|
81
|
+
example this is a test
|
82
82
|
E
|
83
83
|
end
|
84
84
|
|
@@ -192,15 +192,15 @@ describe ChefDK::Command::GeneratorCommands::BuildCookbook do
|
|
192
192
|
|
193
193
|
include_examples "a generated file", :cookbook_name do
|
194
194
|
let(:line) do
|
195
|
-
|
196
|
-
name 'build_cookbook'
|
197
|
-
maintainer 'The Authors'
|
198
|
-
maintainer_email 'you@example.com'
|
199
|
-
license 'all_rights'
|
200
|
-
version '0.1.0'
|
201
|
-
chef_version '>= 13.0'
|
202
|
-
|
203
|
-
depends 'delivery-truck'
|
195
|
+
<<~METADATA
|
196
|
+
name 'build_cookbook'
|
197
|
+
maintainer 'The Authors'
|
198
|
+
maintainer_email 'you@example.com'
|
199
|
+
license 'all_rights'
|
200
|
+
version '0.1.0'
|
201
|
+
chef_version '>= 13.0'
|
202
|
+
|
203
|
+
depends 'delivery-truck'
|
204
204
|
METADATA
|
205
205
|
end
|
206
206
|
end
|
@@ -252,12 +252,12 @@ METADATA
|
|
252
252
|
|
253
253
|
include_examples "a generated file", :cookbook_name do
|
254
254
|
let(:line) do
|
255
|
-
|
256
|
-
name 'build_cookbook'
|
257
|
-
maintainer 'The Authors'
|
258
|
-
maintainer_email 'you@example.com'
|
259
|
-
license 'all_rights'
|
260
|
-
version '0.1.0'
|
255
|
+
<<~METADATA
|
256
|
+
name 'build_cookbook'
|
257
|
+
maintainer 'The Authors'
|
258
|
+
maintainer_email 'you@example.com'
|
259
|
+
license 'all_rights'
|
260
|
+
version '0.1.0'
|
261
261
|
METADATA
|
262
262
|
end
|
263
263
|
end
|
@@ -59,19 +59,19 @@ describe ChefDK::Command::GeneratorCommands::Cookbook do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
let(:non_delivery_breadcrumb) do
|
62
|
-
|
63
|
-
Your cookbook is ready. Type `cd new_cookbook` to enter it.
|
62
|
+
<<~EOF
|
63
|
+
Your cookbook is ready. Type `cd new_cookbook` to enter it.
|
64
64
|
|
65
|
-
There are several commands you can run to get started locally developing and testing your cookbook.
|
66
|
-
Type `delivery local --help` to see a full list.
|
65
|
+
There are several commands you can run to get started locally developing and testing your cookbook.
|
66
|
+
Type `delivery local --help` to see a full list.
|
67
67
|
|
68
|
-
Why not start by writing a test? Tests for the default recipe are stored at:
|
68
|
+
Why not start by writing a test? Tests for the default recipe are stored at:
|
69
69
|
|
70
|
-
test/integration/default/default_test.rb
|
70
|
+
test/integration/default/default_test.rb
|
71
71
|
|
72
|
-
If you'd prefer to dive right in, the default recipe can be found at:
|
72
|
+
If you'd prefer to dive right in, the default recipe can be found at:
|
73
73
|
|
74
|
-
recipes/default.rb
|
74
|
+
recipes/default.rb
|
75
75
|
EOF
|
76
76
|
end
|
77
77
|
|
@@ -179,43 +179,43 @@ EOF
|
|
179
179
|
let(:file) { File.join(tempdir, "new_cookbook", ".delivery", "project.toml") }
|
180
180
|
|
181
181
|
let(:expected_content) do
|
182
|
-
|
183
|
-
# Delivery Prototype for Local Phases Execution
|
184
|
-
#
|
185
|
-
# The purpose of this file is to prototype a new way to execute
|
186
|
-
# phases locally on your workstation. The delivery-cli will read
|
187
|
-
# this file and execute the command(s) that are configured for
|
188
|
-
# each phase. You can customize them by just modifying the phase
|
189
|
-
# key on this file.
|
190
|
-
#
|
191
|
-
# By default these phases are configured for Cookbook Workflow only
|
192
|
-
#
|
193
|
-
# As this is still a prototype we are not modifying the current
|
194
|
-
# config.json file and it will continue working as usual.
|
195
|
-
|
196
|
-
[local_phases]
|
197
|
-
unit = "chef exec rspec spec/"
|
198
|
-
lint = "chef exec cookstyle"
|
199
|
-
# Foodcritic includes rules only appropriate for community cookbooks
|
200
|
-
# uploaded to Supermarket. We turn off any rules tagged "supermarket"
|
201
|
-
# by default. If you plan to share this cookbook you should remove
|
202
|
-
# '-t ~supermarket' below to enable supermarket rules.
|
203
|
-
syntax = "chef exec foodcritic . -t ~supermarket"
|
204
|
-
provision = "chef exec kitchen create"
|
205
|
-
deploy = "chef exec kitchen converge"
|
206
|
-
smoke = "chef exec kitchen verify"
|
207
|
-
# The functional phase is optional, you can define it by uncommenting
|
208
|
-
# the line below and running the command: `delivery local functional`
|
209
|
-
# functional = ""
|
210
|
-
cleanup = "chef exec kitchen destroy"
|
211
|
-
|
212
|
-
# Remote project.toml file
|
213
|
-
#
|
214
|
-
# Specify a remote URI location for the `project.toml` file.
|
215
|
-
# This is useful for teams that wish to centrally manage the behavior
|
216
|
-
# of the `delivery local` command across many different projects.
|
217
|
-
#
|
218
|
-
# remote_file = "https://url/project.toml"
|
182
|
+
<<~PROJECT_DOT_TOML
|
183
|
+
# Delivery Prototype for Local Phases Execution
|
184
|
+
#
|
185
|
+
# The purpose of this file is to prototype a new way to execute
|
186
|
+
# phases locally on your workstation. The delivery-cli will read
|
187
|
+
# this file and execute the command(s) that are configured for
|
188
|
+
# each phase. You can customize them by just modifying the phase
|
189
|
+
# key on this file.
|
190
|
+
#
|
191
|
+
# By default these phases are configured for Cookbook Workflow only
|
192
|
+
#
|
193
|
+
# As this is still a prototype we are not modifying the current
|
194
|
+
# config.json file and it will continue working as usual.
|
195
|
+
|
196
|
+
[local_phases]
|
197
|
+
unit = "chef exec rspec spec/"
|
198
|
+
lint = "chef exec cookstyle"
|
199
|
+
# Foodcritic includes rules only appropriate for community cookbooks
|
200
|
+
# uploaded to Supermarket. We turn off any rules tagged "supermarket"
|
201
|
+
# by default. If you plan to share this cookbook you should remove
|
202
|
+
# '-t ~supermarket' below to enable supermarket rules.
|
203
|
+
syntax = "chef exec foodcritic . -t ~supermarket"
|
204
|
+
provision = "chef exec kitchen create"
|
205
|
+
deploy = "chef exec kitchen converge"
|
206
|
+
smoke = "chef exec kitchen verify"
|
207
|
+
# The functional phase is optional, you can define it by uncommenting
|
208
|
+
# the line below and running the command: `delivery local functional`
|
209
|
+
# functional = ""
|
210
|
+
cleanup = "chef exec kitchen destroy"
|
211
|
+
|
212
|
+
# Remote project.toml file
|
213
|
+
#
|
214
|
+
# Specify a remote URI location for the `project.toml` file.
|
215
|
+
# This is useful for teams that wish to centrally manage the behavior
|
216
|
+
# of the `delivery local` command across many different projects.
|
217
|
+
#
|
218
|
+
# remote_file = "https://url/project.toml"
|
219
219
|
PROJECT_DOT_TOML
|
220
220
|
end
|
221
221
|
|
@@ -230,24 +230,24 @@ PROJECT_DOT_TOML
|
|
230
230
|
let(:file) { File.join(tempdir, "new_cookbook", ".delivery", "config.json") }
|
231
231
|
|
232
232
|
let(:expected_content) do
|
233
|
-
|
234
|
-
{
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
}
|
233
|
+
<<~CONFIG_DOT_JSON
|
234
|
+
{
|
235
|
+
"version": "2",
|
236
|
+
"build_cookbook": {
|
237
|
+
"name": "build_cookbook",
|
238
|
+
"path": ".delivery/build_cookbook"
|
239
|
+
},
|
240
|
+
"delivery-truck": {
|
241
|
+
"lint": {
|
242
|
+
"enable_cookstyle": true
|
243
|
+
}
|
244
|
+
},
|
245
|
+
"skip_phases": [],
|
246
|
+
"job_dispatch": {
|
247
|
+
"version": "v2"
|
248
|
+
},
|
249
|
+
"dependencies": []
|
250
|
+
}
|
251
251
|
CONFIG_DOT_JSON
|
252
252
|
end
|
253
253
|
|
@@ -264,13 +264,13 @@ PROJECT_DOT_TOML
|
|
264
264
|
end
|
265
265
|
|
266
266
|
let(:expected_content) do
|
267
|
-
|
268
|
-
#
|
269
|
-
# Cookbook:: build_cookbook
|
270
|
-
# Recipe:: publish
|
271
|
-
#
|
272
|
-
# Copyright:: 2018, The Authors, All Rights Reserved.
|
273
|
-
include_recipe 'delivery-truck::publish'
|
267
|
+
<<~CONFIG_DOT_JSON
|
268
|
+
#
|
269
|
+
# Cookbook:: build_cookbook
|
270
|
+
# Recipe:: publish
|
271
|
+
#
|
272
|
+
# Copyright:: 2018, The Authors, All Rights Reserved.
|
273
|
+
include_recipe 'delivery-truck::publish'
|
274
274
|
CONFIG_DOT_JSON
|
275
275
|
end
|
276
276
|
|
@@ -287,14 +287,14 @@ include_recipe 'delivery-truck::publish'
|
|
287
287
|
end
|
288
288
|
|
289
289
|
let(:expected_content) do
|
290
|
-
|
291
|
-
source 'https://supermarket.chef.io'
|
290
|
+
<<~CONFIG_DOT_JSON
|
291
|
+
source 'https://supermarket.chef.io'
|
292
292
|
|
293
|
-
metadata
|
293
|
+
metadata
|
294
294
|
|
295
|
-
group :delivery do
|
296
|
-
|
297
|
-
end
|
295
|
+
group :delivery do
|
296
|
+
cookbook 'test', path: './test/fixtures/cookbooks/test'
|
297
|
+
end
|
298
298
|
CONFIG_DOT_JSON
|
299
299
|
end
|
300
300
|
|
@@ -358,17 +358,17 @@ end
|
|
358
358
|
expect(cookbook_generator.run).to eq(0)
|
359
359
|
end
|
360
360
|
|
361
|
-
expected =
|
362
|
-
Generating cookbook new_cookbook
|
363
|
-
- Ensuring correct cookbook file content
|
364
|
-
- Committing cookbook files to git
|
365
|
-
- Ensuring delivery configuration
|
366
|
-
- Ensuring correct delivery build cookbook content
|
367
|
-
- Adding delivery configuration to feature branch
|
368
|
-
- Adding build cookbook to feature branch
|
369
|
-
- Merging delivery content feature branch to master
|
361
|
+
expected = <<~OUTPUT
|
362
|
+
Generating cookbook new_cookbook
|
363
|
+
- Ensuring correct cookbook file content
|
364
|
+
- Committing cookbook files to git
|
365
|
+
- Ensuring delivery configuration
|
366
|
+
- Ensuring correct delivery build cookbook content
|
367
|
+
- Adding delivery configuration to feature branch
|
368
|
+
- Adding build cookbook to feature branch
|
369
|
+
- Merging delivery content feature branch to master
|
370
370
|
|
371
|
-
#{non_delivery_breadcrumb}
|
371
|
+
#{non_delivery_breadcrumb}
|
372
372
|
OUTPUT
|
373
373
|
|
374
374
|
actual = stdout_io.string
|
@@ -410,17 +410,17 @@ OUTPUT
|
|
410
410
|
expect(cookbook_generator.run).to eq(0)
|
411
411
|
end
|
412
412
|
|
413
|
-
expected =
|
414
|
-
Generating cookbook new_cookbook
|
415
|
-
- Ensuring correct cookbook file content
|
416
|
-
- Committing cookbook files to git
|
417
|
-
- Ensuring delivery configuration
|
418
|
-
- Ensuring correct delivery build cookbook content
|
419
|
-
- Adding delivery configuration to feature branch
|
420
|
-
- Adding build cookbook to feature branch
|
421
|
-
- Merging delivery content feature branch to master
|
413
|
+
expected = <<~OUTPUT
|
414
|
+
Generating cookbook new_cookbook
|
415
|
+
- Ensuring correct cookbook file content
|
416
|
+
- Committing cookbook files to git
|
417
|
+
- Ensuring delivery configuration
|
418
|
+
- Ensuring correct delivery build cookbook content
|
419
|
+
- Adding delivery configuration to feature branch
|
420
|
+
- Adding build cookbook to feature branch
|
421
|
+
- Merging delivery content feature branch to master
|
422
422
|
|
423
|
-
Your cookbook is ready. To setup the pipeline, type `cd new_cookbook`, then run `delivery init`
|
423
|
+
Your cookbook is ready. To setup the pipeline, type `cd new_cookbook`, then run `delivery init`
|
424
424
|
OUTPUT
|
425
425
|
|
426
426
|
actual = stdout_io.string
|
@@ -525,23 +525,23 @@ OUTPUT
|
|
525
525
|
let(:file) { File.join(tempdir, "new_cookbook", "Policyfile.rb") }
|
526
526
|
|
527
527
|
let(:expected_content) do
|
528
|
-
|
529
|
-
# Policyfile.rb - Describe how you want Chef to build your system.
|
530
|
-
#
|
531
|
-
# For more information on the Policyfile feature, visit
|
532
|
-
# https://docs.chef.io/policyfile.html
|
528
|
+
<<~POLICYFILE_RB
|
529
|
+
# Policyfile.rb - Describe how you want Chef to build your system.
|
530
|
+
#
|
531
|
+
# For more information on the Policyfile feature, visit
|
532
|
+
# https://docs.chef.io/policyfile.html
|
533
533
|
|
534
|
-
# A name that describes what the system you're building with Chef does.
|
535
|
-
name 'new_cookbook'
|
534
|
+
# A name that describes what the system you're building with Chef does.
|
535
|
+
name 'new_cookbook'
|
536
536
|
|
537
|
-
# Where to find external cookbooks:
|
538
|
-
default_source :supermarket
|
537
|
+
# Where to find external cookbooks:
|
538
|
+
default_source :supermarket
|
539
539
|
|
540
|
-
# run_list: chef-client will run these recipes in the order specified.
|
541
|
-
run_list 'new_cookbook::default'
|
540
|
+
# run_list: chef-client will run these recipes in the order specified.
|
541
|
+
run_list 'new_cookbook::default'
|
542
542
|
|
543
|
-
# Specify a custom source for a single cookbook:
|
544
|
-
cookbook 'new_cookbook', path: '.'
|
543
|
+
# Specify a custom source for a single cookbook:
|
544
|
+
cookbook 'new_cookbook', path: '.'
|
545
545
|
POLICYFILE_RB
|
546
546
|
end
|
547
547
|
|
@@ -561,40 +561,40 @@ POLICYFILE_RB
|
|
561
561
|
include_examples "kitchen_yml_and_integration_tests" do
|
562
562
|
|
563
563
|
let(:expected_kitchen_yml_content) do
|
564
|
-
|
565
|
-
---
|
566
|
-
driver:
|
567
|
-
|
564
|
+
<<~KITCHEN_YML
|
565
|
+
---
|
566
|
+
driver:
|
567
|
+
name: vagrant
|
568
568
|
|
569
|
-
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
570
|
-
## localhost on the host.
|
571
|
-
## see also: https://docs.vagrantup.com/v2/networking/forwarded_ports.html
|
569
|
+
## The forwarded_port port feature lets you connect to ports on the VM guest via
|
570
|
+
## localhost on the host.
|
571
|
+
## see also: https://docs.vagrantup.com/v2/networking/forwarded_ports.html
|
572
572
|
|
573
|
-
# network:
|
574
|
-
# - ["forwarded_port", {guest: 80, host: 8080}]
|
573
|
+
# network:
|
574
|
+
# - ["forwarded_port", {guest: 80, host: 8080}]
|
575
575
|
|
576
|
-
provisioner:
|
577
|
-
|
576
|
+
provisioner:
|
577
|
+
name: chef_zero
|
578
578
|
|
579
|
-
## require_chef_omnibus specifies a specific chef version to install. You can
|
580
|
-
## also set this to `true` to always use the latest version.
|
581
|
-
## see also: https://docs.chef.io/config_yml_kitchen.html
|
579
|
+
## require_chef_omnibus specifies a specific chef version to install. You can
|
580
|
+
## also set this to `true` to always use the latest version.
|
581
|
+
## see also: https://docs.chef.io/config_yml_kitchen.html
|
582
582
|
|
583
|
-
# require_chef_omnibus: 12.8.1
|
583
|
+
# require_chef_omnibus: 12.8.1
|
584
584
|
|
585
|
-
verifier:
|
586
|
-
|
585
|
+
verifier:
|
586
|
+
name: inspec
|
587
587
|
|
588
|
-
platforms:
|
589
|
-
|
590
|
-
|
588
|
+
platforms:
|
589
|
+
- name: ubuntu-16.04
|
590
|
+
- name: centos-7
|
591
591
|
|
592
|
-
suites:
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
592
|
+
suites:
|
593
|
+
- name: default
|
594
|
+
verifier:
|
595
|
+
inspec_tests:
|
596
|
+
- test/integration/default
|
597
|
+
attributes:
|
598
598
|
KITCHEN_YML
|
599
599
|
end
|
600
600
|
|
@@ -603,10 +603,10 @@ KITCHEN_YML
|
|
603
603
|
include_examples "chefspec_spec_helper_file" do
|
604
604
|
|
605
605
|
let(:expected_chefspec_spec_helper_content) do
|
606
|
-
|
607
|
-
# frozen_string_literal: true
|
608
|
-
require 'chefspec'
|
609
|
-
require 'chefspec/policyfile'
|
606
|
+
<<~SPEC_HELPER
|
607
|
+
# frozen_string_literal: true
|
608
|
+
require 'chefspec'
|
609
|
+
require 'chefspec/policyfile'
|
610
610
|
SPEC_HELPER
|
611
611
|
end
|
612
612
|
|
@@ -623,11 +623,11 @@ SPEC_HELPER
|
|
623
623
|
let(:file) { File.join(tempdir, "new_cookbook", "Berksfile") }
|
624
624
|
|
625
625
|
let(:expected_content) do
|
626
|
-
|
627
|
-
# frozen_string_literal: true
|
628
|
-
source 'https://supermarket.chef.io'
|
626
|
+
<<~POLICYFILE_RB
|
627
|
+
# frozen_string_literal: true
|
628
|
+
source 'https://supermarket.chef.io'
|
629
629
|
|
630
|
-
metadata
|
630
|
+
metadata
|
631
631
|
POLICYFILE_RB
|
632
632
|
end
|
633
633
|
|
@@ -647,33 +647,33 @@ POLICYFILE_RB
|
|
647
647
|
include_examples "kitchen_yml_and_integration_tests" do
|
648
648
|
|
649
649
|
let(:expected_kitchen_yml_content) do
|
650
|
-
|
651
|
-
---
|
652
|
-
driver:
|
653
|
-
|
654
|
-
|
655
|
-
provisioner:
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
verifier:
|
663
|
-
|
664
|
-
|
665
|
-
platforms:
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
suites:
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
650
|
+
<<~KITCHEN_YML
|
651
|
+
---
|
652
|
+
driver:
|
653
|
+
name: vagrant
|
654
|
+
|
655
|
+
provisioner:
|
656
|
+
name: chef_zero
|
657
|
+
# You may wish to disable always updating cookbooks in CI or other testing environments.
|
658
|
+
# For example:
|
659
|
+
# always_update_cookbooks: <%= !ENV['CI'] %>
|
660
|
+
always_update_cookbooks: true
|
661
|
+
|
662
|
+
verifier:
|
663
|
+
name: inspec
|
664
|
+
|
665
|
+
platforms:
|
666
|
+
- name: ubuntu-16.04
|
667
|
+
- name: centos-7
|
668
|
+
|
669
|
+
suites:
|
670
|
+
- name: default
|
671
|
+
run_list:
|
672
|
+
- recipe[new_cookbook::default]
|
673
|
+
verifier:
|
674
|
+
inspec_tests:
|
675
|
+
- test/integration/default
|
676
|
+
attributes:
|
677
677
|
KITCHEN_YML
|
678
678
|
end
|
679
679
|
|
@@ -682,10 +682,10 @@ KITCHEN_YML
|
|
682
682
|
include_examples "chefspec_spec_helper_file" do
|
683
683
|
|
684
684
|
let(:expected_chefspec_spec_helper_content) do
|
685
|
-
|
686
|
-
# frozen_string_literal: true
|
687
|
-
require 'chefspec'
|
688
|
-
require 'chefspec/berkshelf'
|
685
|
+
<<~SPEC_HELPER
|
686
|
+
# frozen_string_literal: true
|
687
|
+
require 'chefspec'
|
688
|
+
require 'chefspec/berkshelf'
|
689
689
|
SPEC_HELPER
|
690
690
|
end
|
691
691
|
|