chef-dk 3.6.57 → 3.7.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -2
- data/Gemfile.lock +54 -54
- data/Rakefile +6 -2
- data/chef-dk.gemspec +2 -2
- data/lib/chef-dk/cli.rb +1 -1
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +1 -1
- data/lib/chef-dk/command/clean_policy_revisions.rb +1 -1
- data/lib/chef-dk/command/delete_policy.rb +1 -1
- data/lib/chef-dk/command/delete_policy_group.rb +1 -1
- data/lib/chef-dk/command/diff.rb +1 -1
- data/lib/chef-dk/command/export.rb +1 -1
- data/lib/chef-dk/command/generate.rb +1 -1
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +1 -1
- data/lib/chef-dk/command/install.rb +1 -1
- data/lib/chef-dk/command/provision.rb +6 -3
- data/lib/chef-dk/command/push.rb +1 -1
- data/lib/chef-dk/command/push_archive.rb +1 -1
- data/lib/chef-dk/command/shell_init.rb +1 -1
- data/lib/chef-dk/command/show_policy.rb +1 -1
- data/lib/chef-dk/command/undelete.rb +1 -1
- data/lib/chef-dk/command/update.rb +1 -1
- data/lib/chef-dk/command/verify.rb +2 -2
- data/lib/chef-dk/generator.rb +4 -4
- data/lib/chef-dk/policyfile/git_lock_fetcher.rb +1 -1
- data/lib/chef-dk/policyfile/uploader.rb +1 -1
- data/lib/chef-dk/policyfile_services/export_repo.rb +2 -2
- data/lib/chef-dk/policyfile_services/push_archive.rb +1 -1
- data/lib/chef-dk/service_exception_inspectors/http.rb +1 -1
- data/lib/chef-dk/version.rb +1 -1
- data/spec/unit/cli_spec.rb +1 -1
- data/spec/unit/command/base_spec.rb +3 -3
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +2 -2
- data/spec/unit/command/clean_policy_revisions_spec.rb +2 -2
- data/spec/unit/command/delete_policy_group_spec.rb +2 -2
- data/spec/unit/command/delete_policy_spec.rb +2 -2
- data/spec/unit/command/export_spec.rb +3 -3
- data/spec/unit/command/generate_spec.rb +1 -1
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +2 -2
- data/spec/unit/command/generator_commands/cookbook_spec.rb +15 -15
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +1 -1
- data/spec/unit/command/generator_commands/policyfile_spec.rb +1 -1
- data/spec/unit/command/generator_commands/repo_spec.rb +3 -3
- data/spec/unit/command/install_spec.rb +2 -2
- data/spec/unit/command/provision_spec.rb +7 -7
- data/spec/unit/command/push_spec.rb +2 -2
- data/spec/unit/command/shell_init_spec.rb +5 -5
- data/spec/unit/command/show_policy_spec.rb +2 -2
- data/spec/unit/command/undelete_spec.rb +2 -2
- data/spec/unit/command/update_spec.rb +4 -4
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +1 -1
- data/spec/unit/policyfile/comparison_base_spec.rb +1 -1
- data/spec/unit/policyfile/differ_spec.rb +8 -8
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +8 -8
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +1 -1
- data/spec/unit/policyfile/reports/upload_spec.rb +1 -1
- data/spec/unit/policyfile_demands_spec.rb +5 -5
- data/spec/unit/policyfile_evaluation_spec.rb +3 -3
- data/spec/unit/policyfile_lock_build_spec.rb +14 -14
- data/spec/unit/policyfile_lock_validation_spec.rb +13 -13
- data/spec/unit/policyfile_services/clean_policies_spec.rb +3 -3
- data/spec/unit/policyfile_services/export_repo_spec.rb +2 -2
- data/spec/unit/policyfile_services/install_spec.rb +1 -1
- data/spec/unit/policyfile_services/push_archive_spec.rb +2 -2
- data/spec/unit/policyfile_services/push_spec.rb +1 -1
- data/spec/unit/policyfile_services/show_policy_spec.rb +13 -13
- data/spec/unit/policyfile_services/undelete_spec.rb +1 -1
- data/spec/unit/policyfile_services/update_attributes_spec.rb +1 -1
- data/spec/unit/policyfile_services/update_spec.rb +1 -1
- data/spec/unit/service_exception_inspectors/http_spec.rb +2 -2
- metadata +9 -29
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +0 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +0 -287
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +0 -52
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +0 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +0 -1
- data/acceptance/Gemfile +0 -21
- data/acceptance/Gemfile.lock +0 -335
- data/acceptance/README.md +0 -132
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +0 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +0 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -1
- data/acceptance/trivial/.kitchen.yml +0 -7
- data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +0 -5
- data/tasks/announce.rb +0 -57
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/dependencies.rb +0 -56
- data/tasks/templates/prerelease.md.erb +0 -26
- data/tasks/templates/release.md.erb +0 -26
@@ -73,7 +73,7 @@ describe ChefDK::PolicyfileCompiler do
|
|
73
73
|
|
74
74
|
Backtrace:
|
75
75
|
TestPolicyfile.rb:1:in `eval_policyfile'
|
76
|
-
E
|
76
|
+
E
|
77
77
|
expect(policyfile.errors.first).to eq(expected_message)
|
78
78
|
end
|
79
79
|
end
|
@@ -469,7 +469,7 @@ E
|
|
469
469
|
err = <<~MESSAGE
|
470
470
|
Multiple sources are marked as the preferred source for some cookbooks. Only one source can be preferred for a cookbook.
|
471
471
|
supermarket(https://supermarket.chef.io) and supermarket(https://mart.example) are both set as the preferred source for cookbook(s) 'foo'
|
472
|
-
MESSAGE
|
472
|
+
MESSAGE
|
473
473
|
expect(policyfile.errors).to eq([err])
|
474
474
|
end
|
475
475
|
|
@@ -548,7 +548,7 @@ MESSAGE
|
|
548
548
|
|
549
549
|
Previous source: {:path=>"local_cookbooks/foo"}
|
550
550
|
Conflicts with: {:chef_server=>"https://mychefserver.example.com"}
|
551
|
-
EOH
|
551
|
+
EOH
|
552
552
|
expect(policyfile.errors.size).to eq(1)
|
553
553
|
expect(policyfile.errors.first).to eq(expected)
|
554
554
|
end
|
@@ -208,7 +208,7 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
208
208
|
cookbook:foo;id:467dc855408ce8b74f991c5dc2fd72a6aa369b60
|
209
209
|
default_attributes:{}
|
210
210
|
override_attributes:{}
|
211
|
-
REVISION_STRING
|
211
|
+
REVISION_STRING
|
212
212
|
end
|
213
213
|
|
214
214
|
let(:expected_revision_id) do
|
@@ -278,9 +278,9 @@ REVISION_STRING
|
|
278
278
|
"ddd" => true,
|
279
279
|
"ccc" => false,
|
280
280
|
"bbb" => nil,
|
281
|
-
"e"
|
282
|
-
"f"
|
283
|
-
"g"
|
281
|
+
"e" => 1.2,
|
282
|
+
"f" => 5,
|
283
|
+
"g" => 1_000_000_000_000_000.0,
|
284
284
|
"nested" => { "a" => "b" },
|
285
285
|
}
|
286
286
|
p.override_attributes = { "foo2" => "baz" }
|
@@ -295,7 +295,7 @@ REVISION_STRING
|
|
295
295
|
cookbook:foo;id:467dc855408ce8b74f991c5dc2fd72a6aa369b60
|
296
296
|
default_attributes:{"aaa":"aaa","bbb":null,"ccc":false,"ddd":true,"e":1.2,"f":5,"foo":"bar","g":1e+15,"nested":{"a":"b"}}
|
297
297
|
override_attributes:{"foo2":"baz"}
|
298
|
-
REVISION_STRING
|
298
|
+
REVISION_STRING
|
299
299
|
end
|
300
300
|
|
301
301
|
let(:expected_revision_id) do
|
@@ -327,9 +327,9 @@ REVISION_STRING
|
|
327
327
|
"ddd" => true,
|
328
328
|
"ccc" => false,
|
329
329
|
"bbb" => nil,
|
330
|
-
"e"
|
331
|
-
"f"
|
332
|
-
"g"
|
330
|
+
"e" => 1.2,
|
331
|
+
"f" => 5,
|
332
|
+
"g" => 1_000_000_000_000_000.0,
|
333
333
|
"nested" => { "a" => "b" },
|
334
334
|
},
|
335
335
|
"override_attributes" => { "foo2" => "baz" },
|
@@ -386,7 +386,7 @@ REVISION_STRING
|
|
386
386
|
cookbook:bar;id:#{cookbook_bar_cksum}
|
387
387
|
default_attributes:{}
|
388
388
|
override_attributes:{}
|
389
|
-
REVISION_STRING
|
389
|
+
REVISION_STRING
|
390
390
|
end
|
391
391
|
|
392
392
|
let(:expected_revision_id) do
|
@@ -487,7 +487,7 @@ REVISION_STRING
|
|
487
487
|
cookbook:foo;id:1.0.0
|
488
488
|
default_attributes:{}
|
489
489
|
override_attributes:{}
|
490
|
-
REVISION_STRING
|
490
|
+
REVISION_STRING
|
491
491
|
end
|
492
492
|
|
493
493
|
let(:expected_revision_id) do
|
@@ -614,7 +614,7 @@ REVISION_STRING
|
|
614
614
|
cookbook:foo;id:#{cookbook_foo_cksum}
|
615
615
|
default_attributes:{}
|
616
616
|
override_attributes:{}
|
617
|
-
REVISION_STRING
|
617
|
+
REVISION_STRING
|
618
618
|
end
|
619
619
|
|
620
620
|
let(:expected_revision_id) do
|
@@ -741,7 +741,7 @@ REVISION_STRING
|
|
741
741
|
cookbook:foo;id:#{cookbook_foo_cksum}
|
742
742
|
default_attributes:{}
|
743
743
|
override_attributes:{}
|
744
|
-
REVISION_STRING
|
744
|
+
REVISION_STRING
|
745
745
|
end
|
746
746
|
|
747
747
|
let(:expected_revision_id) do
|
@@ -812,7 +812,7 @@ REVISION_STRING
|
|
812
812
|
cookbook:foo;id:#{cookbook_foo_cksum}
|
813
813
|
default_attributes:{}
|
814
814
|
override_attributes:{}
|
815
|
-
REVISION_STRING
|
815
|
+
REVISION_STRING
|
816
816
|
end
|
817
817
|
|
818
818
|
let(:expected_revision_id) do
|
@@ -958,7 +958,7 @@ REVISION_STRING
|
|
958
958
|
cookbook:foo;id:#{cookbook_foo_cksum}
|
959
959
|
default_attributes:#{canonicalized_default_attrs}
|
960
960
|
override_attributes:#{canonicalized_override_attrs}
|
961
|
-
REVISION_STRING
|
961
|
+
REVISION_STRING
|
962
962
|
end
|
963
963
|
|
964
964
|
let(:expected_revision_id) do
|
@@ -123,7 +123,7 @@ describe ChefDK::PolicyfileLock, "validating locked cookbooks" do
|
|
123
123
|
long_description 'Installs/Configures local-cookbook'
|
124
124
|
version '2.3.4'
|
125
125
|
|
126
|
-
E
|
126
|
+
E
|
127
127
|
expect(IO.read(metadata_path)).to eq(expected_metadata_rb)
|
128
128
|
end
|
129
129
|
|
@@ -154,7 +154,7 @@ E
|
|
154
154
|
long_description 'Installs/Configures local-cookbook'
|
155
155
|
version '2.3.4'
|
156
156
|
|
157
|
-
E
|
157
|
+
E
|
158
158
|
end
|
159
159
|
|
160
160
|
before do
|
@@ -183,7 +183,7 @@ E
|
|
183
183
|
long_description 'Installs/Configures local-cookbook'
|
184
184
|
version '2.3.5' # changed from 2.3.4
|
185
185
|
|
186
|
-
E
|
186
|
+
E
|
187
187
|
end
|
188
188
|
|
189
189
|
before do
|
@@ -230,7 +230,7 @@ E
|
|
230
230
|
long_description 'Installs/Configures local-cookbook'
|
231
231
|
version '3.0.0' # changed from 2.3.4, violates `~> 2.0` constraint
|
232
232
|
|
233
|
-
E
|
233
|
+
E
|
234
234
|
end
|
235
235
|
|
236
236
|
before do
|
@@ -254,7 +254,7 @@ E
|
|
254
254
|
# This is totally new code,
|
255
255
|
# it is different than the old code
|
256
256
|
|
257
|
-
E
|
257
|
+
E
|
258
258
|
end
|
259
259
|
|
260
260
|
before do
|
@@ -292,7 +292,7 @@ E
|
|
292
292
|
|
293
293
|
depends "foo", "=1.0.0"
|
294
294
|
|
295
|
-
E
|
295
|
+
E
|
296
296
|
end
|
297
297
|
|
298
298
|
before do
|
@@ -339,7 +339,7 @@ E
|
|
339
339
|
|
340
340
|
depends "not-a-thing"
|
341
341
|
|
342
|
-
E
|
342
|
+
E
|
343
343
|
end
|
344
344
|
|
345
345
|
before do
|
@@ -379,7 +379,7 @@ E
|
|
379
379
|
|
380
380
|
depends "foo", ">= 1.0.0"
|
381
381
|
|
382
|
-
E
|
382
|
+
E
|
383
383
|
end
|
384
384
|
|
385
385
|
before do
|
@@ -413,7 +413,7 @@ E
|
|
413
413
|
|
414
414
|
depends "foo", "~> 2.0"
|
415
415
|
|
416
|
-
E
|
416
|
+
E
|
417
417
|
end
|
418
418
|
|
419
419
|
before do
|
@@ -484,7 +484,7 @@ E
|
|
484
484
|
long_description 'Installs/Configures local-cookbook'
|
485
485
|
version '3.0.0' # changed from 2.3.4
|
486
486
|
|
487
|
-
E
|
487
|
+
E
|
488
488
|
end
|
489
489
|
|
490
490
|
let(:new_metadata_another_local_cookbook) do
|
@@ -499,7 +499,7 @@ E
|
|
499
499
|
|
500
500
|
# This dep now requires the updated version of 'local-cookbook'
|
501
501
|
depends 'local-cookbook', '= 3.0.0'
|
502
|
-
E
|
502
|
+
E
|
503
503
|
end
|
504
504
|
|
505
505
|
let(:metadata_path_another_local_cookbook) do
|
@@ -550,7 +550,7 @@ E
|
|
550
550
|
long_description 'Installs/Configures foo'
|
551
551
|
version '1.0.0'
|
552
552
|
|
553
|
-
E
|
553
|
+
E
|
554
554
|
expect(IO.read(metadata_path)).to eq(expected_metadata_rb)
|
555
555
|
end
|
556
556
|
|
@@ -590,7 +590,7 @@ E
|
|
590
590
|
description 'Installs/Configures foo'
|
591
591
|
long_description 'Installs/Configures foo'
|
592
592
|
version '1.0.0'
|
593
|
-
E
|
593
|
+
E
|
594
594
|
end
|
595
595
|
|
596
596
|
before do
|
@@ -180,7 +180,7 @@ describe ChefDK::PolicyfileServices::CleanPolicies do
|
|
180
180
|
expected_message = <<~MESSAGE
|
181
181
|
DELETE appserver 4444444444444444444444444444444444444444444444444444444444444444
|
182
182
|
DELETE load-balancer 7777777777777777777777777777777777777777777777777777777777777777
|
183
|
-
MESSAGE
|
183
|
+
MESSAGE
|
184
184
|
expect(ui.output).to eq(expected_message)
|
185
185
|
end
|
186
186
|
|
@@ -214,7 +214,7 @@ MESSAGE
|
|
214
214
|
expected_message = <<~ERROR
|
215
215
|
Failed to delete some policy revisions:
|
216
216
|
- appserver (4444444444444444444444444444444444444444444444444444444444444444): Net::HTTPServerException 403 \"Unauthorized\"
|
217
|
-
ERROR
|
217
|
+
ERROR
|
218
218
|
|
219
219
|
expect { clean_policies_service.run }.to raise_error do |error|
|
220
220
|
expect(error.message).to eq(expected_message)
|
@@ -222,7 +222,7 @@ ERROR
|
|
222
222
|
expected_message = <<~MESSAGE
|
223
223
|
DELETE appserver 4444444444444444444444444444444444444444444444444444444444444444
|
224
224
|
DELETE load-balancer 7777777777777777777777777777777777777777777777777777777777777777
|
225
|
-
MESSAGE
|
225
|
+
MESSAGE
|
226
226
|
expect(ui.output).to eq(expected_message)
|
227
227
|
end
|
228
228
|
|
@@ -145,7 +145,7 @@ describe ChefDK::PolicyfileServices::ExportRepo do
|
|
145
145
|
}
|
146
146
|
}
|
147
147
|
}
|
148
|
-
E
|
148
|
+
E
|
149
149
|
end
|
150
150
|
|
151
151
|
it "reads the lockfile data" do
|
@@ -295,7 +295,7 @@ E
|
|
295
295
|
exit!(1)
|
296
296
|
end
|
297
297
|
|
298
|
-
CONFIG
|
298
|
+
CONFIG
|
299
299
|
config_path = File.join(export_dir, ".chef", "config.rb")
|
300
300
|
expect(File).to exist(config_path)
|
301
301
|
expect(IO.read(config_path)).to eq(expected_config_text)
|
@@ -77,7 +77,7 @@ describe ChefDK::PolicyfileServices::PushArchive do
|
|
77
77
|
}
|
78
78
|
}
|
79
79
|
}
|
80
|
-
E
|
80
|
+
E
|
81
81
|
end
|
82
82
|
|
83
83
|
let(:archive_files) { [] }
|
@@ -289,7 +289,7 @@ E
|
|
289
289
|
This archive was created with an older version of ChefDK. This version of
|
290
290
|
ChefDK does not support archives in the older format. Re-create the archive
|
291
291
|
with a newer version of ChefDK or downgrade ChefDK.
|
292
|
-
MESSAGE
|
292
|
+
MESSAGE
|
293
293
|
expect(exception_cause.message).to eq(msg)
|
294
294
|
end
|
295
295
|
|
@@ -146,7 +146,7 @@ describe ChefDK::PolicyfileServices::ShowPolicy do
|
|
146
146
|
|
147
147
|
Policy db is not assigned to any groups
|
148
148
|
|
149
|
-
OUTPUT
|
149
|
+
OUTPUT
|
150
150
|
expect(ui.output).to eq(expected_output)
|
151
151
|
end
|
152
152
|
|
@@ -189,7 +189,7 @@ OUTPUT
|
|
189
189
|
* 9999999999
|
190
190
|
* aaaaaaaaaa
|
191
191
|
|
192
|
-
OUTPUT
|
192
|
+
OUTPUT
|
193
193
|
expect(ui.output).to eq(expected_output)
|
194
194
|
end
|
195
195
|
end
|
@@ -274,7 +274,7 @@ OUTPUT
|
|
274
274
|
* staging: 9999999999
|
275
275
|
* prod: aaaaaaaaaa
|
276
276
|
|
277
|
-
OUTPUT
|
277
|
+
OUTPUT
|
278
278
|
expect(ui.output).to eq(expected_output)
|
279
279
|
end
|
280
280
|
|
@@ -344,7 +344,7 @@ OUTPUT
|
|
344
344
|
* staging: 9999999999
|
345
345
|
* prod: aaaaaaaaaa
|
346
346
|
|
347
|
-
OUTPUT
|
347
|
+
OUTPUT
|
348
348
|
expect(ui.output).to eq(expected_output)
|
349
349
|
end
|
350
350
|
|
@@ -390,7 +390,7 @@ OUTPUT
|
|
390
390
|
|
391
391
|
* bbbbbbbbbb
|
392
392
|
|
393
|
-
OUTPUT
|
393
|
+
OUTPUT
|
394
394
|
expect(ui.output).to eq(expected_output)
|
395
395
|
end
|
396
396
|
|
@@ -470,7 +470,7 @@ OUTPUT
|
|
470
470
|
* staging: dddddddddd
|
471
471
|
* prod: *NOT APPLIED*
|
472
472
|
|
473
|
-
OUTPUT
|
473
|
+
OUTPUT
|
474
474
|
expect(ui.output).to eq(expected_output)
|
475
475
|
end
|
476
476
|
|
@@ -515,7 +515,7 @@ OUTPUT
|
|
515
515
|
|
516
516
|
No policies named 'appserver' are associated with a policy group
|
517
517
|
|
518
|
-
OUTPUT
|
518
|
+
OUTPUT
|
519
519
|
|
520
520
|
expect(ui.output).to eq(expected_output)
|
521
521
|
end
|
@@ -565,7 +565,7 @@ OUTPUT
|
|
565
565
|
|
566
566
|
No policies named 'appserver' are associated with a policy group
|
567
567
|
|
568
|
-
OUTPUT
|
568
|
+
OUTPUT
|
569
569
|
|
570
570
|
expect(ui.output).to eq(expected_output)
|
571
571
|
end
|
@@ -595,7 +595,7 @@ OUTPUT
|
|
595
595
|
|
596
596
|
No policies named 'appserver' are associated with a policy group
|
597
597
|
|
598
|
-
OUTPUT
|
598
|
+
OUTPUT
|
599
599
|
|
600
600
|
expect(ui.output).to eq(expected_output)
|
601
601
|
end
|
@@ -636,7 +636,7 @@ OUTPUT
|
|
636
636
|
* staging: 2222222222
|
637
637
|
* prod: 2222222222
|
638
638
|
|
639
|
-
OUTPUT
|
639
|
+
OUTPUT
|
640
640
|
expect(ui.output).to eq(expected_output)
|
641
641
|
end
|
642
642
|
|
@@ -678,7 +678,7 @@ OUTPUT
|
|
678
678
|
* staging: 2222222222
|
679
679
|
* prod: 1111111111
|
680
680
|
|
681
|
-
OUTPUT
|
681
|
+
OUTPUT
|
682
682
|
expect(ui.output).to eq(expected_output)
|
683
683
|
end
|
684
684
|
|
@@ -764,7 +764,7 @@ OUTPUT
|
|
764
764
|
* yum: 4.5.6 (123abc0000)
|
765
765
|
* other_cookbook: *NONE*
|
766
766
|
|
767
|
-
OUTPUT
|
767
|
+
OUTPUT
|
768
768
|
expect(ui.output).to eq(expected_output)
|
769
769
|
end
|
770
770
|
end
|
@@ -787,7 +787,7 @@ OUTPUT
|
|
787
787
|
|
788
788
|
* 3333333333
|
789
789
|
|
790
|
-
OUTPUT
|
790
|
+
OUTPUT
|
791
791
|
|
792
792
|
expect(ui.output).to eq(expected_output)
|
793
793
|
end
|
@@ -138,7 +138,7 @@ describe ChefDK::PolicyfileServices::Undelete do
|
|
138
138
|
#{timestamps[2]}: delete-policy-group example3
|
139
139
|
#{timestamps[1]}: delete-policy-group example2
|
140
140
|
#{timestamps[0]}: delete-policy-group example1
|
141
|
-
OUTPUT
|
141
|
+
OUTPUT
|
142
142
|
expect(ui.output).to eq(expected_output)
|
143
143
|
end
|
144
144
|
|