berkshelf 3.0.0.beta7 → 3.0.0.beta8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +4 -1
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +0 -1
- data/Guardfile +0 -8
- data/README.md +33 -13
- data/berkshelf.gemspec +3 -3
- data/features/commands/install.feature +16 -88
- data/features/commands/search.feature +15 -0
- data/features/commands/shelf/show.feature +2 -2
- data/features/commands/shelf/uninstall.feature +1 -1
- data/features/commands/show.feature +3 -3
- data/features/commands/update.feature +29 -1
- data/features/commands/upload.feature +172 -7
- data/features/commands/vendor.feature +32 -0
- data/features/json_formatter.feature +26 -24
- data/features/lifecycle.feature +285 -0
- data/features/lockfile.feature +9 -7
- data/features/step_definitions/chef_server_steps.rb +1 -0
- data/features/step_definitions/cli_steps.rb +2 -2
- data/features/step_definitions/filesystem_steps.rb +2 -4
- data/gem_graph.png +0 -0
- data/generator_files/chefignore +0 -2
- data/lib/berkshelf.rb +39 -14
- data/lib/berkshelf/berksfile.rb +161 -113
- data/lib/berkshelf/cached_cookbook.rb +2 -2
- data/lib/berkshelf/cli.rb +15 -3
- data/lib/berkshelf/commands/shelf.rb +3 -7
- data/lib/berkshelf/community_rest.rb +9 -9
- data/lib/berkshelf/config.rb +3 -3
- data/lib/berkshelf/cookbook_generator.rb +0 -8
- data/lib/berkshelf/cookbook_store.rb +1 -2
- data/lib/berkshelf/dependency.rb +25 -138
- data/lib/berkshelf/downloader.rb +41 -7
- data/lib/berkshelf/errors.rb +113 -214
- data/lib/berkshelf/formatters/base.rb +42 -0
- data/lib/berkshelf/formatters/human.rb +145 -0
- data/lib/berkshelf/formatters/json.rb +149 -133
- data/lib/berkshelf/formatters/null.rb +8 -18
- data/lib/berkshelf/init_generator.rb +1 -1
- data/lib/berkshelf/installer.rb +115 -104
- data/lib/berkshelf/location.rb +22 -121
- data/lib/berkshelf/locations/base.rb +75 -0
- data/lib/berkshelf/locations/git.rb +196 -0
- data/lib/berkshelf/locations/github.rb +8 -0
- data/lib/berkshelf/locations/path.rb +78 -0
- data/lib/berkshelf/lockfile.rb +452 -290
- data/lib/berkshelf/logger.rb +9 -3
- data/lib/berkshelf/mixin/logging.rb +4 -9
- data/lib/berkshelf/resolver.rb +12 -12
- data/lib/berkshelf/source.rb +13 -1
- data/lib/berkshelf/version.rb +1 -1
- data/spec/fixtures/cookbooks/example_cookbook-0.5.0/metadata.rb +3 -7
- data/spec/fixtures/cookbooks/example_cookbook/metadata.rb +3 -6
- data/spec/spec_helper.rb +5 -6
- data/spec/support/matchers/file_system_matchers.rb +4 -0
- data/spec/support/shared_examples/formatter.rb +11 -0
- data/spec/unit/berkshelf/berksfile_spec.rb +25 -28
- data/spec/unit/berkshelf/cli_spec.rb +19 -11
- data/spec/unit/berkshelf/dependency_spec.rb +4 -164
- data/spec/unit/berkshelf/formatters/base_spec.rb +35 -0
- data/spec/unit/berkshelf/formatters/human_spec.rb +7 -0
- data/spec/unit/berkshelf/formatters/json_spec.rb +7 -0
- data/spec/unit/berkshelf/formatters/null_spec.rb +7 -11
- data/spec/unit/berkshelf/location_spec.rb +16 -144
- data/spec/unit/berkshelf/locations/base_spec.rb +80 -0
- data/spec/unit/berkshelf/locations/git_spec.rb +249 -0
- data/spec/unit/berkshelf/locations/path_spec.rb +107 -0
- data/spec/unit/berkshelf/lockfile_parser_spec.rb +3 -3
- data/spec/unit/berkshelf/lockfile_spec.rb +55 -11
- data/spec/unit/berkshelf/logger_spec.rb +2 -2
- data/spec/unit/berkshelf/mixin/logging_spec.rb +5 -9
- data/spec/unit/berkshelf/source_spec.rb +32 -13
- data/spec/unit/berkshelf_spec.rb +6 -9
- metadata +33 -33
- data/.ruby-version +0 -1
- data/berkshelf-complete.sh +0 -75
- data/lib/berkshelf/formatters.rb +0 -110
- data/lib/berkshelf/formatters/human_readable.rb +0 -142
- data/lib/berkshelf/git.rb +0 -204
- data/lib/berkshelf/locations/git_location.rb +0 -135
- data/lib/berkshelf/locations/github_location.rb +0 -55
- data/lib/berkshelf/locations/mercurial_location.rb +0 -114
- data/lib/berkshelf/locations/path_location.rb +0 -88
- data/lib/berkshelf/mercurial.rb +0 -146
- data/lib/berkshelf/mixin.rb +0 -7
- data/spec/support/mercurial.rb +0 -123
- data/spec/unit/berkshelf/formatters_spec.rb +0 -114
- data/spec/unit/berkshelf/git_spec.rb +0 -312
- data/spec/unit/berkshelf/locations/git_location_spec.rb +0 -126
- data/spec/unit/berkshelf/locations/mercurial_location_spec.rb +0 -131
- data/spec/unit/berkshelf/locations/path_location_spec.rb +0 -25
- data/spec/unit/berkshelf/mercurial_spec.rb +0 -172
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34864a59cc163f2f46a8f0ff67ea71d60d013066
|
4
|
+
data.tar.gz: f9a55cfc84edeaf87736756035490331c6d22b1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 905e8267b648a21fb101f48a948660a8297763257c785177553720df1e02af1611d549d5cf0b3a73c66386baeb6101c0dd7e585296283762ddf2c1747b37c58e
|
7
|
+
data.tar.gz: 7af8c5176a2dc388730f0ce8b6c99d53fced510224fcd370b21aea9e58715cd8bd09bc0539ee87769aba095eaaf8d455bb5b77d620393442a42e1bc58b4f35ab
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -8,7 +8,10 @@ notifications:
|
|
8
8
|
- "irc.freenode.org#berkshelf"
|
9
9
|
skip_join: true
|
10
10
|
use_notice: true
|
11
|
-
|
11
|
+
branches:
|
12
|
+
only:
|
13
|
+
- master
|
14
|
+
bundler_args: --without guard --jobs 7
|
12
15
|
before_install:
|
13
16
|
- sudo apt-get install -qq libarchive12 libarchive-dev
|
14
17
|
before_script:
|
data/CONTRIBUTING.md
CHANGED
@@ -17,7 +17,7 @@ If you'd like to submit a patch:
|
|
17
17
|
|
18
18
|
### Install prerequisites
|
19
19
|
|
20
|
-
Install git
|
20
|
+
Install git on your test system.
|
21
21
|
|
22
22
|
Install the latest version of [Bundler](http://gembundler.com)
|
23
23
|
|
data/Gemfile
CHANGED
data/Guardfile
CHANGED
@@ -4,14 +4,6 @@ guard 'spork' do
|
|
4
4
|
watch(%r{^features/support/}) { :cucumber }
|
5
5
|
end
|
6
6
|
|
7
|
-
unless RUBY_PLATFORM =~ /mswin|mingw|windows/
|
8
|
-
guard 'yard', stdout: '/dev/null', stderr: '/dev/null' do
|
9
|
-
watch(%r{app/.+\.rb})
|
10
|
-
watch(%r{lib/.+\.rb})
|
11
|
-
watch(%r{ext/.+\.c})
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
7
|
rspec_cli = '--color --drb --format Fuubar'
|
16
8
|
rspec_cli += ' --tag ~@api_client --tag ~@not_supported_on_windows' if RUBY_PLATFORM =~ /mswin|mingw|windows/
|
17
9
|
guard 'rspec', cli: rspec_cli, all_on_start: false, all_after_pass: false do
|
data/README.md
CHANGED
@@ -32,19 +32,10 @@ Ruby 1.9 mode is required on all interpreters.
|
|
32
32
|
|
33
33
|
Ruby 1.9.1 and 1.9.2 are not officially supported. If you encounter problems, please upgrade to Ruby 2.0 or 1.9.3.
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
brew install bash-completion # if you haven't already
|
40
|
-
|
41
|
-
Download the latest script
|
42
|
-
|
43
|
-
(cd `brew --prefix`/etc/bash_completion.d && curl https://raw.github.com/berkshelf/berkshelf/master/berkshelf-complete.sh > berkshelf-complete.sh)
|
44
|
-
|
45
|
-
And make sure you have this in your bash/zsh profile:
|
46
|
-
|
47
|
-
[ -f `brew --prefix`/etc/bash_completion ] && source `brew --prefix`/etc/bash_completion
|
35
|
+
Shell Completion
|
36
|
+
----------------
|
37
|
+
- [Bash](https://github.com/berkshelf/berkshelf-bash-plugin)
|
38
|
+
- [ZSH](https://github.com/berkshelf/berkshelf-zsh-plugin)
|
48
39
|
|
49
40
|
Plugins
|
50
41
|
-------
|
@@ -64,6 +55,35 @@ $PWD/config.json
|
|
64
55
|
|
65
56
|
You are encouraged to keep project-specific configuration in the `$PWD/.berkshelf` directory. A default configuration file is generated for you, but you can update the values to suit your needs.
|
66
57
|
|
58
|
+
Github Cookbooks
|
59
|
+
----------------
|
60
|
+
With Berkshelf 3 you can query a Berkshelf-API server (a server which indexes cookbooks from various sources and
|
61
|
+
hosts it over a REST API) in order to resolve the cookbook dependencies. When you choose to host your own Berkshelf-API
|
62
|
+
server, you can configure it to also index cookbooks hosted in various Github and/or Github Enterprise organizations.
|
63
|
+
|
64
|
+
When doing so you should also configure Berkshelf so it can download cookbooks from your indexed Github organizations:
|
65
|
+
|
66
|
+
```
|
67
|
+
{
|
68
|
+
"github":[
|
69
|
+
{
|
70
|
+
"access_token": ""
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"access_token": "",
|
74
|
+
"api_endpoint": "https://github.enterprise.local/api/v3",
|
75
|
+
"web_endpoint": "https://github.enterprise.local",
|
76
|
+
"ssl_verify": true
|
77
|
+
}
|
78
|
+
]
|
79
|
+
}
|
80
|
+
```
|
81
|
+
|
82
|
+
The first subsection is used for any organization hosted on github.com. As this is the default, you do not have to set the
|
83
|
+
endpoint info (these are known values for github.com). The second subsection is used when you also index cookbooks from
|
84
|
+
organizations hosted on Github Enterprise. In this case you will need to specify the specific endpoint info so Berkshelf
|
85
|
+
knows where to connect to. You can add as many subsections as you have endpoints.
|
86
|
+
|
67
87
|
SSL Errors
|
68
88
|
----------
|
69
89
|
|
data/berkshelf.gemspec
CHANGED
@@ -31,14 +31,14 @@ Gem::Specification.new do |s|
|
|
31
31
|
s.required_rubygems_version = '>= 1.8.0'
|
32
32
|
|
33
33
|
s.add_dependency 'addressable', '~> 2.3.4'
|
34
|
-
s.add_dependency 'berkshelf-api-client', '~> 1.
|
34
|
+
s.add_dependency 'berkshelf-api-client', '~> 1.2.0.rc2'
|
35
35
|
s.add_dependency 'buff-config', '~> 0.2'
|
36
36
|
s.add_dependency 'buff-extensions', '~> 0.4'
|
37
37
|
s.add_dependency 'buff-shell_out', '~> 0.1'
|
38
|
-
s.add_dependency 'faraday', '~> 0.
|
38
|
+
s.add_dependency 'faraday', '~> 0.9.0'
|
39
39
|
s.add_dependency 'minitar', '~> 0.5.4'
|
40
40
|
s.add_dependency 'retryable', '~> 1.3.3'
|
41
|
-
s.add_dependency 'ridley', '~>
|
41
|
+
s.add_dependency 'ridley', '~> 3.0.0.rc1'
|
42
42
|
s.add_dependency 'solve', '>= 0.8.0'
|
43
43
|
s.add_dependency 'thor', '~> 0.18.0'
|
44
44
|
s.add_dependency 'octokit', '~> 2.6'
|
@@ -66,12 +66,14 @@ Feature: berks install
|
|
66
66
|
Scenario: installing a demand that has already been installed
|
67
67
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
68
68
|
"""
|
69
|
-
cookbook 'berkshelf-cookbook-fixture',
|
69
|
+
cookbook 'berkshelf-cookbook-fixture',
|
70
|
+
github: 'RiotGames/berkshelf-cookbook-fixture',
|
71
|
+
branch: 'deps'
|
70
72
|
"""
|
71
73
|
And the cookbook store contains a cookbook "berkshelf" "1.0.0" with dependencies:
|
72
|
-
| hostsfile
|
74
|
+
| hostsfile | = 1.0.1 |
|
73
75
|
And the cookbook store has the cookbooks:
|
74
|
-
| hostsfile
|
76
|
+
| hostsfile | 1.0.1 |
|
75
77
|
And the Berkshelf API server's cache is up to date
|
76
78
|
When I successfully run `berks install`
|
77
79
|
Then the output should contain:
|
@@ -170,7 +172,6 @@ Feature: berks install
|
|
170
172
|
|
171
173
|
Scenario: installing a demand from a path location locks the graph to that version
|
172
174
|
Given the Chef Server has cookbooks:
|
173
|
-
# | example_cookbook | 1.0.0 | |
|
174
175
|
| other_cookbook | 1.0.0 | example_cookbook ~> 1.0.0 |
|
175
176
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
176
177
|
"""
|
@@ -226,7 +227,10 @@ Feature: berks install
|
|
226
227
|
Scenario: installing a Berksfile that contains a Git location with a rel
|
227
228
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
228
229
|
"""
|
229
|
-
cookbook
|
230
|
+
cookbook 'berkshelf-cookbook-fixture',
|
231
|
+
github: 'RiotGames/berkshelf-cookbook-fixture',
|
232
|
+
branch: 'rel',
|
233
|
+
rel: 'cookbooks/berkshelf-cookbook-fixture'
|
230
234
|
"""
|
231
235
|
When I successfully run `berks install`
|
232
236
|
Then the cookbook store should have the git cookbooks:
|
@@ -298,22 +302,10 @@ Feature: berks install
|
|
298
302
|
Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
299
303
|
"""
|
300
304
|
|
301
|
-
Scenario: installing a Berksfile that contains a GitHub location
|
302
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
303
|
-
"""
|
304
|
-
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture.git", tag: "v0.2.0"
|
305
|
-
"""
|
306
|
-
When I run `berks install`
|
307
|
-
Then the output should contain:
|
308
|
-
"""
|
309
|
-
'RiotGames/berkshelf-cookbook-fixture.git' is not a valid GitHub identifier - should not end in '.git'
|
310
|
-
"""
|
311
|
-
And the exit status should be "InvalidGitHubIdentifier"
|
312
|
-
|
313
|
-
Scenario: installing a Berksfile that contains a Github location and protocol git
|
305
|
+
Scenario: installing a Berksfile that contains a GitHub location
|
314
306
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
315
307
|
"""
|
316
|
-
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0"
|
308
|
+
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0"
|
317
309
|
"""
|
318
310
|
When I successfully run `berks install`
|
319
311
|
Then the cookbook store should have the git cookbooks:
|
@@ -325,47 +317,6 @@ Feature: berks install
|
|
325
317
|
Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
326
318
|
"""
|
327
319
|
|
328
|
-
Scenario: installing a Berksfile that contains a Github location and protocol https
|
329
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
330
|
-
"""
|
331
|
-
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0", protocol: "https"
|
332
|
-
"""
|
333
|
-
When I successfully run `berks install`
|
334
|
-
Then the cookbook store should have the git cookbooks:
|
335
|
-
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
336
|
-
And the output should contain:
|
337
|
-
"""
|
338
|
-
Fetching 'berkshelf-cookbook-fixture' from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
339
|
-
Fetching cookbook index from http://0.0.0.0:26210...
|
340
|
-
Using berkshelf-cookbook-fixture (0.2.0) from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
341
|
-
"""
|
342
|
-
|
343
|
-
# GitHub doesn't permit anonymous SSH access, so we are going to get a
|
344
|
-
# failure message back. That's okay, if GitHub tells us our key was denied,
|
345
|
-
# we know the connection has made it that far.
|
346
|
-
Scenario: installing a Berksfile that contains a Github location and protocol ssh
|
347
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
348
|
-
"""
|
349
|
-
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0", protocol: "ssh"
|
350
|
-
"""
|
351
|
-
When I run `berks install`
|
352
|
-
Then the output should contain:
|
353
|
-
"""
|
354
|
-
Permission denied (publickey).
|
355
|
-
"""
|
356
|
-
|
357
|
-
Scenario: installing a Berksfile that contains a Github location and an unsupported protocol
|
358
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
359
|
-
"""
|
360
|
-
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0", protocol: "somethingabsurd"
|
361
|
-
"""
|
362
|
-
When I run `berks install`
|
363
|
-
Then the output should contain:
|
364
|
-
"""
|
365
|
-
'somethingabsurd' is not supported for the 'github' location key - please use 'git' instead
|
366
|
-
"""
|
367
|
-
And the exit status should be "InvalidGitURI"
|
368
|
-
|
369
320
|
Scenario: running install when current project is a cookbook and the 'metadata' is specified
|
370
321
|
Given a cookbook named "sparkle_motion"
|
371
322
|
And I cd to "sparkle_motion"
|
@@ -438,18 +389,6 @@ Feature: berks install
|
|
438
389
|
"""
|
439
390
|
And the exit status should be "NoSolutionError"
|
440
391
|
|
441
|
-
Scenario: installing a Berksfile that has a Git location source with an invalid Git URI
|
442
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
443
|
-
"""
|
444
|
-
cookbook 'nginx', git: '/something/on/disk'
|
445
|
-
"""
|
446
|
-
When I run `berks install`
|
447
|
-
Then the output should contain:
|
448
|
-
"""
|
449
|
-
'/something/on/disk' is not a valid Git URI
|
450
|
-
"""
|
451
|
-
And the exit status should be "InvalidGitURI"
|
452
|
-
|
453
392
|
Scenario: installing when there are sources with duplicate names defined in the same group
|
454
393
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
455
394
|
"""
|
@@ -459,7 +398,7 @@ Feature: berks install
|
|
459
398
|
When I run `berks install`
|
460
399
|
Then the output should contain:
|
461
400
|
"""
|
462
|
-
Berksfile contains multiple entries named 'berkshelf-cookbook-fixture'.
|
401
|
+
Your Berksfile contains multiple entries named 'berkshelf-cookbook-fixture'. Please remove duplicate dependencies, or put them in different groups.
|
463
402
|
"""
|
464
403
|
And the exit status should be "DuplicateDependencyDefined"
|
465
404
|
|
@@ -491,18 +430,6 @@ Feature: berks install
|
|
491
430
|
Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v1.0.0)
|
492
431
|
"""
|
493
432
|
|
494
|
-
Scenario: with a cookbook definition containing an invalid option
|
495
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
496
|
-
"""
|
497
|
-
cookbook "berkshelf-cookbook-fixture", whatisthis: "I don't even know", anotherwat: "isthat"
|
498
|
-
"""
|
499
|
-
When I run `berks install`
|
500
|
-
Then the output should contain:
|
501
|
-
"""
|
502
|
-
Invalid options for dependency: 'whatisthis', 'anotherwat'.
|
503
|
-
"""
|
504
|
-
And the exit status should be "InternalError"
|
505
|
-
|
506
433
|
Scenario: with a git error during download
|
507
434
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
508
435
|
"""
|
@@ -512,10 +439,9 @@ Feature: berks install
|
|
512
439
|
When I run `berks install`
|
513
440
|
Then the output should contain:
|
514
441
|
"""
|
515
|
-
|
516
|
-
An error occurred during Git execution:
|
442
|
+
Repository not found.
|
517
443
|
"""
|
518
|
-
And the exit status should be "GitError"
|
444
|
+
And the exit status should be "GitLocation::GitError"
|
519
445
|
|
520
446
|
Scenario: transitive dependencies in metadata
|
521
447
|
Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
|
@@ -526,6 +452,7 @@ Feature: berks install
|
|
526
452
|
"""
|
527
453
|
And I write to "metadata.rb" with:
|
528
454
|
"""
|
455
|
+
name "myface"
|
529
456
|
depends 'fake', '1.0.0'
|
530
457
|
depends 'bacon', '0.2.0'
|
531
458
|
"""
|
@@ -555,6 +482,7 @@ Feature: berks install
|
|
555
482
|
"""
|
556
483
|
And I write to "metadata.rb" with:
|
557
484
|
"""
|
485
|
+
name "myface"
|
558
486
|
depends 'fake', '1.0.0'
|
559
487
|
depends 'bacon', '0.2.0'
|
560
488
|
"""
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Feature: berks search
|
2
|
+
Scenario: Searching for a cookbook by name
|
3
|
+
* I successfully run `berks search berkshelf-cookbook-fixture`
|
4
|
+
* the output should contain:
|
5
|
+
"""
|
6
|
+
berkshelf-cookbook-fixture (1.0.0)
|
7
|
+
"""
|
8
|
+
|
9
|
+
Scenario: Searching for a cookbook by partial name
|
10
|
+
* I successfully run `berks search berkshelf-`
|
11
|
+
* the output should contain:
|
12
|
+
"""
|
13
|
+
berkshelf-api (1.0.0)
|
14
|
+
berkshelf-cookbook-fixture (1.0.0)
|
15
|
+
"""
|
@@ -3,7 +3,7 @@ Feature: berks shelf show
|
|
3
3
|
When I run `berks shelf show fake`
|
4
4
|
Then the output should contain:
|
5
5
|
"""
|
6
|
-
Cookbook 'fake'
|
6
|
+
Cookbook 'fake' not found in the Berkshelf shelf!
|
7
7
|
"""
|
8
8
|
And the exit status should be "CookbookNotFound"
|
9
9
|
|
@@ -54,7 +54,7 @@ Feature: berks shelf show
|
|
54
54
|
When I run `berks shelf show fake --version 1.2.3`
|
55
55
|
Then the output should contain:
|
56
56
|
"""
|
57
|
-
Cookbook 'fake' (1.2.3)
|
57
|
+
Cookbook 'fake' (1.2.3) not found in the Berkshelf shelf!
|
58
58
|
"""
|
59
59
|
And the exit status should be "CookbookNotFound"
|
60
60
|
|
@@ -3,7 +3,7 @@ Feature: berks shelf uninstall
|
|
3
3
|
When I run `berks shelf uninstall fake`
|
4
4
|
Then the output should contain:
|
5
5
|
"""
|
6
|
-
Cookbook 'fake'
|
6
|
+
Cookbook 'fake' not found in the Berkshelf shelf!
|
7
7
|
"""
|
8
8
|
And the exit status should be "CookbookNotFound"
|
9
9
|
|
@@ -61,7 +61,7 @@ Feature: berks show
|
|
61
61
|
When I run `berks show fake`
|
62
62
|
Then the output should contain:
|
63
63
|
"""
|
64
|
-
|
64
|
+
Dependency 'fake' was not found. Please make sure it is in your Berksfile, and then run `berks install` to download and install the missing dependencies.
|
65
65
|
"""
|
66
66
|
And the exit status should be "DependencyNotFound"
|
67
67
|
|
@@ -73,7 +73,7 @@ Feature: berks show
|
|
73
73
|
When I run `berks show fake`
|
74
74
|
Then the output should contain:
|
75
75
|
"""
|
76
|
-
|
76
|
+
Dependency 'fake' was not found. Please make sure it is in your Berksfile, and then run `berks install` to download and install the missing dependencies.
|
77
77
|
"""
|
78
78
|
And the exit status should be "DependencyNotFound"
|
79
79
|
|
@@ -94,6 +94,6 @@ Feature: berks show
|
|
94
94
|
When I run `berks show fake`
|
95
95
|
Then the output should contain:
|
96
96
|
"""
|
97
|
-
|
97
|
+
Cookbook 'fake' (1.0.0) not found in the cookbook store!
|
98
98
|
"""
|
99
99
|
And the exit status should be "CookbookNotFound"
|
@@ -64,11 +64,39 @@ Feature: berks update
|
|
64
64
|
fake (0.2.0)
|
65
65
|
"""
|
66
66
|
|
67
|
+
Scenario: With a git location
|
68
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
69
|
+
"""
|
70
|
+
cookbook 'berkshelf-cookbook-fixture', git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture'
|
71
|
+
"""
|
72
|
+
And I write to "Berksfile.lock" with:
|
73
|
+
"""
|
74
|
+
DEPENDENCIES
|
75
|
+
berkshelf-cookbook-fixture
|
76
|
+
git: git://github.com/RiotGames/berkshelf-cookbook-fixture
|
77
|
+
revision: 70a527e17d91f01f031204562460ad1c17f972ee
|
78
|
+
|
79
|
+
GRAPH
|
80
|
+
berkshelf-cookbook-fixture (0.2.0)
|
81
|
+
"""
|
82
|
+
And I successfully run `berks install`
|
83
|
+
When I successfully run `berks update`
|
84
|
+
Then the file "Berksfile.lock" should contain:
|
85
|
+
"""
|
86
|
+
DEPENDENCIES
|
87
|
+
berkshelf-cookbook-fixture
|
88
|
+
git: git://github.com/RiotGames/berkshelf-cookbook-fixture
|
89
|
+
revision: a97b9447cbd41a5fe58eee2026e48ccb503bd3bc
|
90
|
+
|
91
|
+
GRAPH
|
92
|
+
berkshelf-cookbook-fixture (1.0.0)
|
93
|
+
"""
|
94
|
+
|
67
95
|
Scenario: With a cookbook that does not exist
|
68
96
|
Given I have a Berksfile pointing at the local Berkshelf API
|
69
97
|
When I run `berks update not_real`
|
70
98
|
Then the output should contain:
|
71
99
|
"""
|
72
|
-
|
100
|
+
Dependency 'not_real' was not found. Please make sure it is in your Berksfile, and then run `berks install` to download and install the missing dependencies.
|
73
101
|
"""
|
74
102
|
And the exit status should be "DependencyNotFound"
|
@@ -1,6 +1,5 @@
|
|
1
1
|
Feature: berks upload
|
2
2
|
Background:
|
3
|
-
* the Berkshelf API server's cache is empty
|
4
3
|
* the Chef Server is empty
|
5
4
|
* the cookbook store has the cookbooks:
|
6
5
|
| fake | 1.0.0 |
|
@@ -13,6 +12,16 @@ Feature: berks upload
|
|
13
12
|
cookbook 'fake', '1.0.0'
|
14
13
|
cookbook 'ekaf', '2.0.0'
|
15
14
|
"""
|
15
|
+
And I write to "Berksfile.lock" with:
|
16
|
+
"""
|
17
|
+
DEPENDENCIES
|
18
|
+
fake (= 1.0.0)
|
19
|
+
ekaf (= 2.0.0)
|
20
|
+
|
21
|
+
GRAPH
|
22
|
+
fake (1.0.0)
|
23
|
+
ekaf (2.0.0)
|
24
|
+
"""
|
16
25
|
When I successfully run `berks upload`
|
17
26
|
Then the Chef Server should have the cookbooks:
|
18
27
|
| fake | 1.0.0 |
|
@@ -24,6 +33,15 @@ Feature: berks upload
|
|
24
33
|
"""
|
25
34
|
cookbook 'fake', path: './fake'
|
26
35
|
"""
|
36
|
+
And I write to "Berksfile.lock" with:
|
37
|
+
"""
|
38
|
+
DEPENDENCIES
|
39
|
+
fake
|
40
|
+
path: ./fake
|
41
|
+
|
42
|
+
GRAPH
|
43
|
+
fake (0.0.0)
|
44
|
+
"""
|
27
45
|
When I successfully run `berks upload`
|
28
46
|
Then the Chef Server should have the cookbooks:
|
29
47
|
| fake | 0.0.0 |
|
@@ -33,10 +51,23 @@ Feature: berks upload
|
|
33
51
|
| fake | = 1.0.0 |
|
34
52
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
35
53
|
"""
|
36
|
-
cookbook 'fake',
|
37
|
-
cookbook 'ekaf',
|
54
|
+
cookbook 'fake', '1.0.0'
|
55
|
+
cookbook 'ekaf', '2.0.0'
|
38
56
|
cookbook 'reset', '3.4.5'
|
39
57
|
"""
|
58
|
+
And I write to "Berksfile.lock" with:
|
59
|
+
"""
|
60
|
+
DEPENDENCIES
|
61
|
+
ekaf (= 2.0.0)
|
62
|
+
fake (= 1.0.0)
|
63
|
+
reset (= 3.4.5)
|
64
|
+
|
65
|
+
GRAPH
|
66
|
+
ekaf (2.0.0)
|
67
|
+
fake (1.0.0)
|
68
|
+
reset (3.4.5)
|
69
|
+
fake (= 1.0.0)
|
70
|
+
"""
|
40
71
|
When I successfully run `berks upload reset`
|
41
72
|
Then the Chef Server should have the cookbooks:
|
42
73
|
| reset | 3.4.5 |
|
@@ -46,10 +77,18 @@ Feature: berks upload
|
|
46
77
|
|
47
78
|
Scenario: specifying a dependency not defined in the Berksfile
|
48
79
|
Given I have a Berksfile pointing at the local Berkshelf API
|
80
|
+
And I write to "Berksfile.lock" with:
|
81
|
+
"""
|
82
|
+
DEPENDENCIES
|
83
|
+
fake (= 1.0.0)
|
84
|
+
|
85
|
+
GRAPH
|
86
|
+
fake (1.0.0)
|
87
|
+
"""
|
49
88
|
When I run `berks upload reset`
|
50
89
|
Then the output should contain:
|
51
90
|
"""
|
52
|
-
|
91
|
+
Dependency 'reset' was not found. Please make sure it is in your Berksfile, and then run `berks install` to download and install the missing dependencies.
|
53
92
|
"""
|
54
93
|
And the exit status should be "DependencyNotFound"
|
55
94
|
|
@@ -60,6 +99,18 @@ Feature: berks upload
|
|
60
99
|
cookbook 'ekaf', '2.0.0'
|
61
100
|
cookbook 'oops', '3.0.0'
|
62
101
|
"""
|
102
|
+
And I write to "Berksfile.lock" with:
|
103
|
+
"""
|
104
|
+
DEPENDENCIES
|
105
|
+
ekaf (= 2.0.0)
|
106
|
+
fake (= 1.0.0)
|
107
|
+
oops (= 3.0.0)
|
108
|
+
|
109
|
+
GRAPH
|
110
|
+
ekaf (2.0.0)
|
111
|
+
fake (1.0.0)
|
112
|
+
oops (3.0.0)
|
113
|
+
"""
|
63
114
|
When I successfully run `berks upload fake ekaf`
|
64
115
|
Then the Chef Server should have the cookbooks:
|
65
116
|
| fake |
|
@@ -67,12 +118,50 @@ Feature: berks upload
|
|
67
118
|
And the Chef Server should not have the cookbooks:
|
68
119
|
| oops |
|
69
120
|
|
121
|
+
Scenario: uploading a filter does not change the lockfile
|
122
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
123
|
+
"""
|
124
|
+
cookbook 'fake', group: :take_me
|
125
|
+
cookbook 'ekaf', group: :not_me
|
126
|
+
"""
|
127
|
+
And I write to "Berksfile.lock" with:
|
128
|
+
"""
|
129
|
+
DEPENDENCIES
|
130
|
+
ekaf
|
131
|
+
fake
|
132
|
+
|
133
|
+
GRAPH
|
134
|
+
ekaf (2.0.0)
|
135
|
+
fake (1.0.0)
|
136
|
+
"""
|
137
|
+
When I run `berks upload --only take_me`
|
138
|
+
Then the file "Berksfile.lock" should contain:
|
139
|
+
"""
|
140
|
+
DEPENDENCIES
|
141
|
+
ekaf
|
142
|
+
fake
|
143
|
+
|
144
|
+
GRAPH
|
145
|
+
ekaf (2.0.0)
|
146
|
+
fake (1.0.0)
|
147
|
+
"""
|
148
|
+
|
70
149
|
Scenario: uploading a single groups of demands with the --only flag
|
71
150
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
72
151
|
"""
|
73
152
|
cookbook 'fake', group: :take_me
|
74
153
|
cookbook 'ekaf', group: :not_me
|
75
154
|
"""
|
155
|
+
And I write to "Berksfile.lock" with:
|
156
|
+
"""
|
157
|
+
DEPENDENCIES
|
158
|
+
ekaf
|
159
|
+
fake
|
160
|
+
|
161
|
+
GRAPH
|
162
|
+
ekaf (2.0.0)
|
163
|
+
fake (1.0.0)
|
164
|
+
"""
|
76
165
|
When I successfully run `berks upload --only take_me`
|
77
166
|
Then the Chef Server should have the cookbooks:
|
78
167
|
| fake | 1.0.0 |
|
@@ -85,6 +174,16 @@ Feature: berks upload
|
|
85
174
|
cookbook 'fake', group: :take_me
|
86
175
|
cookbook 'ekaf', group: :not_me
|
87
176
|
"""
|
177
|
+
And I write to "Berksfile.lock" with:
|
178
|
+
"""
|
179
|
+
DEPENDENCIES
|
180
|
+
ekaf
|
181
|
+
fake
|
182
|
+
|
183
|
+
GRAPH
|
184
|
+
ekaf (2.0.0)
|
185
|
+
fake (1.0.0)
|
186
|
+
"""
|
88
187
|
When I successfully run `berks upload --only take_me not_me`
|
89
188
|
And the Chef Server should have the cookbooks:
|
90
189
|
| fake | 1.0.0 |
|
@@ -96,6 +195,16 @@ Feature: berks upload
|
|
96
195
|
cookbook 'fake', group: :take_me
|
97
196
|
cookbook 'ekaf', group: :not_me
|
98
197
|
"""
|
198
|
+
And I write to "Berksfile.lock" with:
|
199
|
+
"""
|
200
|
+
DEPENDENCIES
|
201
|
+
ekaf
|
202
|
+
fake
|
203
|
+
|
204
|
+
GRAPH
|
205
|
+
ekaf (2.0.0)
|
206
|
+
fake (1.0.0)
|
207
|
+
"""
|
99
208
|
When I successfully run `berks upload --except not_me`
|
100
209
|
And the Chef Server should have the cookbooks:
|
101
210
|
| fake | 1.0.0 |
|
@@ -108,6 +217,16 @@ Feature: berks upload
|
|
108
217
|
cookbook 'fake', group: :take_me
|
109
218
|
cookbook 'ekaf', group: :not_me
|
110
219
|
"""
|
220
|
+
And I write to "Berksfile.lock" with:
|
221
|
+
"""
|
222
|
+
DEPENDENCIES
|
223
|
+
ekaf
|
224
|
+
fake
|
225
|
+
|
226
|
+
GRAPH
|
227
|
+
ekaf (2.0.0)
|
228
|
+
fake (1.0.0)
|
229
|
+
"""
|
111
230
|
When I successfully run `berks upload --except take_me not_me`
|
112
231
|
And the Chef Server should not have the cookbooks:
|
113
232
|
| fake | 1.0.0 |
|
@@ -119,6 +238,15 @@ Feature: berks upload
|
|
119
238
|
"""
|
120
239
|
cookbook 'cookbook with spaces', path: './cookbook with spaces'
|
121
240
|
"""
|
241
|
+
And I write to "Berksfile.lock" with:
|
242
|
+
"""
|
243
|
+
DEPENDENCIES
|
244
|
+
cookbook with spaces
|
245
|
+
path: ./cookbook with spaces
|
246
|
+
|
247
|
+
GRAPH
|
248
|
+
cookbook with spaces (0.0.0)
|
249
|
+
"""
|
122
250
|
When I run `berks upload`
|
123
251
|
Then the output should contain:
|
124
252
|
"""
|
@@ -140,6 +268,16 @@ Feature: berks upload
|
|
140
268
|
"""
|
141
269
|
metadata
|
142
270
|
"""
|
271
|
+
And I write to "Berksfile.lock" with:
|
272
|
+
"""
|
273
|
+
DEPENDENCIES
|
274
|
+
fake
|
275
|
+
path: .
|
276
|
+
metadata: true
|
277
|
+
|
278
|
+
GRAPH
|
279
|
+
fake (0.0.0)
|
280
|
+
"""
|
143
281
|
When I successfully run `berks upload fake`
|
144
282
|
Then the output should contain:
|
145
283
|
"""
|
@@ -153,6 +291,14 @@ Feature: berks upload
|
|
153
291
|
"""
|
154
292
|
cookbook 'fake', '1.0.0'
|
155
293
|
"""
|
294
|
+
And I write to "Berksfile.lock" with:
|
295
|
+
"""
|
296
|
+
DEPENDENCIES
|
297
|
+
fake (= 1.0.0)
|
298
|
+
|
299
|
+
GRAPH
|
300
|
+
fake (1.0.0)
|
301
|
+
"""
|
156
302
|
When I successfully run `berks upload`
|
157
303
|
Then the output should contain:
|
158
304
|
"""
|
@@ -169,12 +315,21 @@ Feature: berks upload
|
|
169
315
|
Given a cookbook named "fake"
|
170
316
|
And the cookbook "fake" has the file "Berksfile" with:
|
171
317
|
"""
|
172
|
-
source 'https://api.berkshelf.com'
|
173
318
|
metadata
|
174
319
|
"""
|
175
|
-
And the Chef Server has frozen cookbooks:
|
176
|
-
| fake | 0.0.0 |
|
177
320
|
And I cd to "fake"
|
321
|
+
And I write to "Berksfile.lock" with:
|
322
|
+
"""
|
323
|
+
DEPENDENCIES
|
324
|
+
fake
|
325
|
+
path: .
|
326
|
+
metadata: true
|
327
|
+
|
328
|
+
GRAPH
|
329
|
+
fake (0.0.0)
|
330
|
+
"""
|
331
|
+
And the Chef Server has frozen cookbooks:
|
332
|
+
| fake | 0.0.0 |
|
178
333
|
When I successfully run `berks upload`
|
179
334
|
Then the output should contain:
|
180
335
|
"""
|
@@ -205,6 +360,16 @@ Feature: berks upload
|
|
205
360
|
source 'https://api.berkshelf.com'
|
206
361
|
metadata
|
207
362
|
"""
|
363
|
+
And the cookbook "fake" has the file "Berksfile.lock" with:
|
364
|
+
"""
|
365
|
+
DEPENDENCIES
|
366
|
+
fake
|
367
|
+
path: .
|
368
|
+
metadata: true
|
369
|
+
|
370
|
+
GRAPH
|
371
|
+
fake (0.0.0)
|
372
|
+
"""
|
208
373
|
And I cd to "fake"
|
209
374
|
When I successfully run `berks upload --skip-syntax-check`
|
210
375
|
Then the Chef Server should have the cookbooks:
|