berkshelf 3.0.0.beta6 → 3.0.0.beta7

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/features/berksfile.feature +2 -0
  3. data/features/commands/apply.feature +1 -1
  4. data/features/commands/contingent.feature +5 -3
  5. data/features/commands/install.feature +40 -40
  6. data/features/commands/list.feature +42 -20
  7. data/features/commands/outdated.feature +60 -16
  8. data/features/commands/show.feature +51 -8
  9. data/features/commands/update.feature +43 -15
  10. data/features/commands/upload.feature +4 -1
  11. data/features/commands/vendor.feature +27 -0
  12. data/features/json_formatter.feature +20 -8
  13. data/features/lockfile.feature +192 -71
  14. data/generator_files/CHANGELOG.md.erb +5 -0
  15. data/lib/berkshelf/berksfile.rb +166 -139
  16. data/lib/berkshelf/cli.rb +33 -30
  17. data/lib/berkshelf/cookbook_generator.rb +1 -0
  18. data/lib/berkshelf/dependency.rb +64 -14
  19. data/lib/berkshelf/downloader.rb +7 -10
  20. data/lib/berkshelf/errors.rb +59 -11
  21. data/lib/berkshelf/formatters/human_readable.rb +23 -36
  22. data/lib/berkshelf/formatters/json.rb +25 -29
  23. data/lib/berkshelf/installer.rb +111 -122
  24. data/lib/berkshelf/locations/git_location.rb +22 -9
  25. data/lib/berkshelf/locations/mercurial_location.rb +20 -5
  26. data/lib/berkshelf/locations/path_location.rb +22 -7
  27. data/lib/berkshelf/lockfile.rb +435 -203
  28. data/lib/berkshelf/resolver.rb +4 -2
  29. data/lib/berkshelf/source.rb +10 -1
  30. data/lib/berkshelf/version.rb +1 -1
  31. data/spec/fixtures/cookbooks/example_cookbook/Berksfile.lock +3 -4
  32. data/spec/fixtures/lockfiles/2.0.lock +17 -0
  33. data/spec/fixtures/lockfiles/blank.lock +0 -0
  34. data/spec/fixtures/lockfiles/default.lock +18 -10
  35. data/spec/fixtures/lockfiles/empty.lock +3 -0
  36. data/spec/unit/berkshelf/berksfile_spec.rb +31 -74
  37. data/spec/unit/berkshelf/cookbook_generator_spec.rb +4 -0
  38. data/spec/unit/berkshelf/installer_spec.rb +4 -7
  39. data/spec/unit/berkshelf/lockfile_parser_spec.rb +124 -0
  40. data/spec/unit/berkshelf/lockfile_spec.rb +140 -163
  41. metadata +11 -6
  42. data/features/licenses.feature +0 -79
  43. data/features/step_definitions/lockfile_steps.rb +0 -57
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: berkshelf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta6
4
+ version: 3.0.0.beta7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Winsor
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-02-07 00:00:00.000000000 Z
15
+ date: 2014-02-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: addressable
@@ -354,7 +354,6 @@ files:
354
354
  - features/config.feature
355
355
  - features/help.feature
356
356
  - features/json_formatter.feature
357
- - features/licenses.feature
358
357
  - features/lockfile.feature
359
358
  - features/resolver.feature
360
359
  - features/step_definitions/berksfile_steps.rb
@@ -366,11 +365,11 @@ files:
366
365
  - features/step_definitions/filesystem_steps.rb
367
366
  - features/step_definitions/gem_steps.rb
368
367
  - features/step_definitions/json_steps.rb
369
- - features/step_definitions/lockfile_steps.rb
370
368
  - features/step_definitions/utility_steps.rb
371
369
  - features/support/aruba.rb
372
370
  - features/support/env.rb
373
371
  - generator_files/Berksfile.erb
372
+ - generator_files/CHANGELOG.md.erb
374
373
  - generator_files/Gemfile.erb
375
374
  - generator_files/README.md.erb
376
375
  - generator_files/Thorfile.erb
@@ -448,7 +447,10 @@ files:
448
447
  - spec/fixtures/cookbooks/example_cookbook/README.md
449
448
  - spec/fixtures/cookbooks/example_cookbook/metadata.rb
450
449
  - spec/fixtures/cookbooks/example_cookbook/recipes/default.rb
450
+ - spec/fixtures/lockfiles/2.0.lock
451
+ - spec/fixtures/lockfiles/blank.lock
451
452
  - spec/fixtures/lockfiles/default.lock
453
+ - spec/fixtures/lockfiles/empty.lock
452
454
  - spec/spec_helper.rb
453
455
  - spec/support/chef_api.rb
454
456
  - spec/support/chef_server.rb
@@ -479,6 +481,7 @@ files:
479
481
  - spec/unit/berkshelf/locations/git_location_spec.rb
480
482
  - spec/unit/berkshelf/locations/mercurial_location_spec.rb
481
483
  - spec/unit/berkshelf/locations/path_location_spec.rb
484
+ - spec/unit/berkshelf/lockfile_parser_spec.rb
482
485
  - spec/unit/berkshelf/lockfile_spec.rb
483
486
  - spec/unit/berkshelf/logger_spec.rb
484
487
  - spec/unit/berkshelf/mercurial_spec.rb
@@ -536,7 +539,6 @@ test_files:
536
539
  - features/config.feature
537
540
  - features/help.feature
538
541
  - features/json_formatter.feature
539
- - features/licenses.feature
540
542
  - features/lockfile.feature
541
543
  - features/resolver.feature
542
544
  - features/step_definitions/berksfile_steps.rb
@@ -548,7 +550,6 @@ test_files:
548
550
  - features/step_definitions/filesystem_steps.rb
549
551
  - features/step_definitions/gem_steps.rb
550
552
  - features/step_definitions/json_steps.rb
551
- - features/step_definitions/lockfile_steps.rb
552
553
  - features/step_definitions/utility_steps.rb
553
554
  - features/support/aruba.rb
554
555
  - features/support/env.rb
@@ -566,7 +567,10 @@ test_files:
566
567
  - spec/fixtures/cookbooks/example_cookbook/README.md
567
568
  - spec/fixtures/cookbooks/example_cookbook/metadata.rb
568
569
  - spec/fixtures/cookbooks/example_cookbook/recipes/default.rb
570
+ - spec/fixtures/lockfiles/2.0.lock
571
+ - spec/fixtures/lockfiles/blank.lock
569
572
  - spec/fixtures/lockfiles/default.lock
573
+ - spec/fixtures/lockfiles/empty.lock
570
574
  - spec/spec_helper.rb
571
575
  - spec/support/chef_api.rb
572
576
  - spec/support/chef_server.rb
@@ -597,6 +601,7 @@ test_files:
597
601
  - spec/unit/berkshelf/locations/git_location_spec.rb
598
602
  - spec/unit/berkshelf/locations/mercurial_location_spec.rb
599
603
  - spec/unit/berkshelf/locations/path_location_spec.rb
604
+ - spec/unit/berkshelf/lockfile_parser_spec.rb
600
605
  - spec/unit/berkshelf/lockfile_spec.rb
601
606
  - spec/unit/berkshelf/logger_spec.rb
602
607
  - spec/unit/berkshelf/mercurial_spec.rb
@@ -1,79 +0,0 @@
1
- Feature: Installing cookbooks with specific licenses
2
- Background:
3
- * the Berkshelf API server's cache is empty
4
- * the Chef Server is empty
5
- * the cookbook store is empty
6
- * I have a Berksfile pointing at the local Berkshelf API with:
7
- """
8
- cookbook 'fake', '1.0.0'
9
- """
10
-
11
- Scenario: when licenses is defined
12
- Given the cookbook store has the cookbooks:
13
- | fake | 1.0.0 | mit |
14
- And I have a Berkshelf config file containing:
15
- """
16
- { "allowed_licenses": ["mit"] }
17
- """
18
- When I successfully run `berks install`
19
- Then the output should not contain:
20
- """
21
- is not in your list of allowed licenses
22
- """
23
-
24
- Scenario: when a license is not listed
25
- Given the cookbook store has the cookbooks:
26
- | fake | 1.0.0 | mit |
27
- And I have a Berkshelf config file containing:
28
- """
29
- { "allowed_licenses": ["apache2"] }
30
- """
31
- When I successfully run `berks install`
32
- Then the output should contain:
33
- """
34
- 'mit' is not in your list of allowed licenses
35
- """
36
-
37
- Scenario: when raise_license_exception is defined
38
- Given the cookbook store has the cookbooks:
39
- | fake | 1.0.0 | mit |
40
- And I have a Berkshelf config file containing:
41
- """
42
- { "allowed_licenses": ["mit"], "raise_license_exception": true }
43
- """
44
- When I successfully run `berks install`
45
- Then the output should not contain:
46
- """
47
- is not in your list of allowed licenses
48
- """
49
-
50
- Scenario: when raise_license_exception is defined and a license is not listed
51
- Given the cookbook store has the cookbooks:
52
- | fake | 1.0.0 | mit |
53
- And I have a Berkshelf config file containing:
54
- """
55
- { "allowed_licenses": ["apache2"], "raise_license_exception": true }
56
- """
57
- When I run `berks install`
58
- Then the output should contain:
59
- """
60
- 'mit' is not in your list of allowed licenses
61
- """
62
- And the exit status should be "LicenseNotAllowed"
63
-
64
- Scenario: when the cookbook is a path location
65
- Given the cookbook store has the cookbooks:
66
- | fake | 0.1.0 | mit |
67
- And I have a Berksfile pointing at the local Berkshelf API with:
68
- """
69
- cookbook 'fake', path: '../../tmp/berkshelf/cookbooks/fake-0.1.0'
70
- """
71
- And I have a Berkshelf config file containing:
72
- """
73
- { "allowed_licenses": ["apache2"], "raise_license_exception": true }
74
- """
75
- When I successfully run `berks install`
76
- Then the output should not contain:
77
- """
78
- 'mit' is not in your list of allowed licenses
79
- """
@@ -1,57 +0,0 @@
1
- Then(/^the output should warn about the old lockfile format$/) do
2
- message = Berkshelf::Lockfile.class_eval('LockfileLegacy.send(:warning_message)')
3
- expect(all_output).to include(message)
4
- end
5
-
6
- Given /^the Lockfile has:$/ do |table|
7
- result = { 'dependencies' => {} }
8
-
9
- table.raw.each do |name, locked_or_path, ref, rel|
10
- result['dependencies'][name] = {}
11
-
12
- if locked_or_path =~ /(\d+\.){2}\d/
13
- result['dependencies'][name]['locked_version'] = locked_or_path
14
- else
15
- result['dependencies'][name]['path'] = locked_or_path
16
- end
17
-
18
- unless ref.nil?
19
- result['dependencies'][name]['rel'] = ref
20
- end
21
-
22
- unless rel.nil?
23
- result['dependencies'][name]['rel'] = rel
24
- end
25
- end
26
-
27
- File.open(File.join(current_dir, 'Berksfile.lock'), 'w') do |file|
28
- file.write(JSON.pretty_generate(result) + "\n")
29
- end
30
- end
31
-
32
- Then /^the Lockfile should have:$/ do |table|
33
- hash = JSON.parse(File.read(File.join(current_dir, 'Berksfile.lock')))
34
- dependencies = hash['dependencies']
35
-
36
- table.raw.each do |name, locked_or_path, ref, rel|
37
- expect(dependencies).to have_key(name)
38
-
39
- if locked_or_path =~ /(\d+\.){2}\d/
40
- expect(dependencies[name]).to have_key('locked_version')
41
- expect(dependencies[name]['locked_version']).to eq(locked_or_path)
42
- else
43
- expect(dependencies[name]).to have_key('path')
44
- expect(dependencies[name]['path']).to eq(locked_or_path)
45
- end
46
-
47
- unless ref.nil?
48
- expect(dependencies[name]).to have_key('ref')
49
- expect(dependencies[name]['ref']).to eq(ref)
50
- end
51
-
52
- unless rel.nil?
53
- expect(dependencies[name]).to have_key('rel')
54
- expect(dependencies[name]['rel']).to eq(rel)
55
- end
56
- end
57
- end