berkshelf 3.0.0.beta7 → 3.0.0.beta8

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +4 -1
  4. data/CONTRIBUTING.md +1 -1
  5. data/Gemfile +0 -1
  6. data/Guardfile +0 -8
  7. data/README.md +33 -13
  8. data/berkshelf.gemspec +3 -3
  9. data/features/commands/install.feature +16 -88
  10. data/features/commands/search.feature +15 -0
  11. data/features/commands/shelf/show.feature +2 -2
  12. data/features/commands/shelf/uninstall.feature +1 -1
  13. data/features/commands/show.feature +3 -3
  14. data/features/commands/update.feature +29 -1
  15. data/features/commands/upload.feature +172 -7
  16. data/features/commands/vendor.feature +32 -0
  17. data/features/json_formatter.feature +26 -24
  18. data/features/lifecycle.feature +285 -0
  19. data/features/lockfile.feature +9 -7
  20. data/features/step_definitions/chef_server_steps.rb +1 -0
  21. data/features/step_definitions/cli_steps.rb +2 -2
  22. data/features/step_definitions/filesystem_steps.rb +2 -4
  23. data/gem_graph.png +0 -0
  24. data/generator_files/chefignore +0 -2
  25. data/lib/berkshelf.rb +39 -14
  26. data/lib/berkshelf/berksfile.rb +161 -113
  27. data/lib/berkshelf/cached_cookbook.rb +2 -2
  28. data/lib/berkshelf/cli.rb +15 -3
  29. data/lib/berkshelf/commands/shelf.rb +3 -7
  30. data/lib/berkshelf/community_rest.rb +9 -9
  31. data/lib/berkshelf/config.rb +3 -3
  32. data/lib/berkshelf/cookbook_generator.rb +0 -8
  33. data/lib/berkshelf/cookbook_store.rb +1 -2
  34. data/lib/berkshelf/dependency.rb +25 -138
  35. data/lib/berkshelf/downloader.rb +41 -7
  36. data/lib/berkshelf/errors.rb +113 -214
  37. data/lib/berkshelf/formatters/base.rb +42 -0
  38. data/lib/berkshelf/formatters/human.rb +145 -0
  39. data/lib/berkshelf/formatters/json.rb +149 -133
  40. data/lib/berkshelf/formatters/null.rb +8 -18
  41. data/lib/berkshelf/init_generator.rb +1 -1
  42. data/lib/berkshelf/installer.rb +115 -104
  43. data/lib/berkshelf/location.rb +22 -121
  44. data/lib/berkshelf/locations/base.rb +75 -0
  45. data/lib/berkshelf/locations/git.rb +196 -0
  46. data/lib/berkshelf/locations/github.rb +8 -0
  47. data/lib/berkshelf/locations/path.rb +78 -0
  48. data/lib/berkshelf/lockfile.rb +452 -290
  49. data/lib/berkshelf/logger.rb +9 -3
  50. data/lib/berkshelf/mixin/logging.rb +4 -9
  51. data/lib/berkshelf/resolver.rb +12 -12
  52. data/lib/berkshelf/source.rb +13 -1
  53. data/lib/berkshelf/version.rb +1 -1
  54. data/spec/fixtures/cookbooks/example_cookbook-0.5.0/metadata.rb +3 -7
  55. data/spec/fixtures/cookbooks/example_cookbook/metadata.rb +3 -6
  56. data/spec/spec_helper.rb +5 -6
  57. data/spec/support/matchers/file_system_matchers.rb +4 -0
  58. data/spec/support/shared_examples/formatter.rb +11 -0
  59. data/spec/unit/berkshelf/berksfile_spec.rb +25 -28
  60. data/spec/unit/berkshelf/cli_spec.rb +19 -11
  61. data/spec/unit/berkshelf/dependency_spec.rb +4 -164
  62. data/spec/unit/berkshelf/formatters/base_spec.rb +35 -0
  63. data/spec/unit/berkshelf/formatters/human_spec.rb +7 -0
  64. data/spec/unit/berkshelf/formatters/json_spec.rb +7 -0
  65. data/spec/unit/berkshelf/formatters/null_spec.rb +7 -11
  66. data/spec/unit/berkshelf/location_spec.rb +16 -144
  67. data/spec/unit/berkshelf/locations/base_spec.rb +80 -0
  68. data/spec/unit/berkshelf/locations/git_spec.rb +249 -0
  69. data/spec/unit/berkshelf/locations/path_spec.rb +107 -0
  70. data/spec/unit/berkshelf/lockfile_parser_spec.rb +3 -3
  71. data/spec/unit/berkshelf/lockfile_spec.rb +55 -11
  72. data/spec/unit/berkshelf/logger_spec.rb +2 -2
  73. data/spec/unit/berkshelf/mixin/logging_spec.rb +5 -9
  74. data/spec/unit/berkshelf/source_spec.rb +32 -13
  75. data/spec/unit/berkshelf_spec.rb +6 -9
  76. metadata +33 -33
  77. data/.ruby-version +0 -1
  78. data/berkshelf-complete.sh +0 -75
  79. data/lib/berkshelf/formatters.rb +0 -110
  80. data/lib/berkshelf/formatters/human_readable.rb +0 -142
  81. data/lib/berkshelf/git.rb +0 -204
  82. data/lib/berkshelf/locations/git_location.rb +0 -135
  83. data/lib/berkshelf/locations/github_location.rb +0 -55
  84. data/lib/berkshelf/locations/mercurial_location.rb +0 -114
  85. data/lib/berkshelf/locations/path_location.rb +0 -88
  86. data/lib/berkshelf/mercurial.rb +0 -146
  87. data/lib/berkshelf/mixin.rb +0 -7
  88. data/spec/support/mercurial.rb +0 -123
  89. data/spec/unit/berkshelf/formatters_spec.rb +0 -114
  90. data/spec/unit/berkshelf/git_spec.rb +0 -312
  91. data/spec/unit/berkshelf/locations/git_location_spec.rb +0 -126
  92. data/spec/unit/berkshelf/locations/mercurial_location_spec.rb +0 -131
  93. data/spec/unit/berkshelf/locations/path_location_spec.rb +0 -25
  94. data/spec/unit/berkshelf/mercurial_spec.rb +0 -172
@@ -1,7 +0,0 @@
1
- module Berkshelf
2
- module Mixin; end
3
- end
4
-
5
- Dir["#{File.dirname(__FILE__)}/mixin/*.rb"].sort.each do |path|
6
- require_relative "mixin/#{File.basename(path, '.rb')}"
7
- end
@@ -1,123 +0,0 @@
1
- module Berkshelf
2
- module RSpec
3
- module Mercurial
4
- require 'buff/shell_out'
5
- include Buff::ShellOut
6
-
7
- require_relative 'path_helpers'
8
- include Berkshelf::RSpec::PathHelpers
9
-
10
- def mercurial_origin_for(repo, options = {})
11
- File.join("file://localhost", generate_fake_mercurial_remote(repo, options))
12
- end
13
-
14
- def generate_fake_mercurial_remote(uri, options = {})
15
- repo_path = remotes.join(uri)
16
-
17
- FileUtils.mkdir repo_path
18
-
19
- Dir.chdir(repo_path) do
20
- ENV['HGUSER'] = 'test_user'
21
- shell_out "hg init"
22
- shell_out "echo \"# a change!\" >> content_file"
23
- if options[:is_cookbook]
24
- shell_out "echo \"#cookbook\" >> metadata.rb"
25
- end
26
- shell_out "hg add ."
27
- shell_out "hg commit -m \"A commit.\""
28
- options[:tags].each do |tag|
29
- shell_out "echo \"#{tag}\" > content_file"
30
- shell_out "hg commit -m \"#{tag} content\""
31
- shell_out "hg tag \"#{tag}\""
32
- end if options.has_key? :tags
33
- options[:branches].each do |branch|
34
- shell_out "hg branch #{branch}"
35
- shell_out "echo \"#{branch}\" > content_file"
36
- shell_out "hg commit -m \"#{branch} content\""
37
- shell_out "hg up default"
38
- end if options.has_key? :branches
39
- end
40
- repo_path.to_path
41
- end
42
-
43
- # Calculate the id for the given mercurial rev.
44
- #
45
- # @param [#to_s] repo
46
- # the repository to show the rev for
47
- # @param [#to_s] rev
48
- # the revision to identify
49
- #
50
- # @return [String]
51
- def id_for_rev(repo, rev)
52
- Dir.chdir remote_path(repo) do
53
- shell_out("hg id -r '#{rev}'").stdout.split(' ').first.strip
54
- end
55
- end
56
-
57
- # The clone path the given repo.
58
- #
59
- # @param [#to_s] repo
60
- # the name of the local repo
61
- #
62
- # @return [Pathname]
63
- # the path to the clone
64
- def clone_path(repo)
65
- clones.join(repo.to_s)
66
- end
67
-
68
- # The clone path the remote repo.
69
- #
70
- # @param [#to_s] repo
71
- # the name of the remote repo
72
- #
73
- # @return [Pathname]
74
- # the path to the clone
75
- def remote_path(repo)
76
- remotes.join(repo.to_s)
77
- end
78
-
79
- private
80
-
81
- # The path to store the local git clones.
82
- #
83
- # @return [Pathname]
84
- def clones
85
- ensure_and_return(tmp_path.join('clones'))
86
- end
87
-
88
- # The path to store the git remotes.
89
- #
90
- # @return [Pathname]
91
- def remotes
92
- ensure_and_return(tmp_path.join('remotes'))
93
- end
94
-
95
- # Generate a cookbook by the given name.
96
- #
97
- # @param [#to_s] name
98
- # the name of the cookbook to create
99
- # @param [Hash] options
100
- # the list ooptions to pass to the generator
101
- def generate_mercurial_cookbook(name, options = {})
102
- options = {
103
- skip_vagrant: true,
104
- skip_test_kitchen: true,
105
- force: true,
106
- }.merge(options)
107
-
108
- Berkshelf::Cli.new.invoke(:cookbook, [name.to_s], options)
109
- end
110
-
111
- # Make sure the given path exists and return the path
112
- #
113
- # @param [#to_s] path
114
- # the path to create and return
115
- #
116
- # @return [Pathname]
117
- def ensure_and_return(path)
118
- FileUtils.mkdir(path) unless File.exist?(path)
119
- return Pathname.new(path).expand_path
120
- end
121
- end
122
- end
123
- end
@@ -1,114 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Berkshelf::Formatters do
4
- before do
5
- @original = Berkshelf::Formatters.class_variable_get :@@formatters
6
- Berkshelf::Formatters.class_variable_set :@@formatters, {}
7
- end
8
-
9
- after do
10
- Berkshelf::Formatters.class_variable_set :@@formatters, @original
11
- end
12
-
13
- let(:format_id) { :rspec }
14
- let(:format_klass) { Class.new { include Berkshelf::Formatters::AbstractFormatter } }
15
-
16
- describe '::register' do
17
- it 'adds the class of the includer to the list of registered formatters with the id' do
18
- Berkshelf::Formatters.register(format_id, format_klass)
19
-
20
- expect(Berkshelf::Formatters.formatters).to have_key(format_id)
21
- expect(Berkshelf::Formatters.formatters[format_id]).to eq(format_klass)
22
- end
23
-
24
- context 'when given a string instead of a symbol as the ID' do
25
- it 'converts the string to a symbol and registers it' do
26
- Berkshelf::Formatters.register('rspec', format_klass)
27
-
28
- expect(Berkshelf::Formatters.formatters).to have_key(:rspec)
29
- expect(Berkshelf::Formatters.formatters[:rspec]).to eq(format_klass)
30
- end
31
- end
32
-
33
- context 'when a formatter of the given ID has already been registered' do
34
- it 'raises an InternalError' do
35
- Berkshelf::Formatters.register(format_id, format_klass)
36
-
37
- expect {
38
- Berkshelf::Formatters.register(format_id, format_klass)
39
- }.to raise_error(Berkshelf::InternalError)
40
- end
41
- end
42
- end
43
-
44
- describe '::formatters' do
45
- before do
46
- Berkshelf::Formatters.register(format_id, format_klass)
47
- end
48
-
49
- it "returns a hash where formatter ID's are keys and values are formatter classes" do
50
- expect(Berkshelf::Formatters.formatters).to be_a(Hash)
51
- expect(Berkshelf::Formatters.formatters).to have(1).item
52
- expect(Berkshelf::Formatters.formatters.keys.first).to eq(format_id)
53
- expect(Berkshelf::Formatters.formatters.values.first).to eq(format_klass)
54
- end
55
- end
56
-
57
- describe '::get' do
58
- before { Berkshelf::Formatters.register(format_id, format_klass) }
59
-
60
- it 'returns the class constant of the given formatter ID' do
61
- expect(Berkshelf::Formatters[format_id]).to eq(format_klass)
62
- end
63
-
64
- context 'when the ID has not been registered' do
65
- it 'returns nil' do
66
- expect(Berkshelf::Formatters[:not_there]).to be_nil
67
- end
68
- end
69
- end
70
-
71
- describe Berkshelf::Formatters::AbstractFormatter do
72
- describe '::register_formatter' do
73
- it 'delegates to Formatters' do
74
- Berkshelf::Formatters.should_receive(:register).with(:rspec, format_klass)
75
-
76
- format_klass.register_formatter(:rspec)
77
- end
78
- end
79
-
80
- subject do
81
- Class.new { include Berkshelf::Formatters::AbstractFormatter }.new
82
- end
83
-
84
- it 'has abstract methods for all the messaging modes' do
85
- expect {
86
- subject.install('my_coobook','1.2.3','http://community')
87
- }.to raise_error(Berkshelf::AbstractFunction)
88
-
89
- expect {
90
- subject.use('my_coobook','1.2.3')
91
- }.to raise_error(Berkshelf::AbstractFunction)
92
-
93
- expect {
94
- subject.use('my_coobook','1.2.3','http://community')
95
- }.to raise_error(Berkshelf::AbstractFunction)
96
-
97
- expect {
98
- subject.upload('my_coobook','1.2.3','http://chef_server')
99
- }.to raise_error(Berkshelf::AbstractFunction)
100
-
101
- expect {
102
- subject.msg('something you to know')
103
- }.to raise_error(Berkshelf::AbstractFunction)
104
-
105
- expect {
106
- subject.error('whoa this is bad')
107
- }.to raise_error(Berkshelf::AbstractFunction)
108
-
109
- expect {
110
- subject.fetch(double('dependency'))
111
- }.to raise_error(Berkshelf::AbstractFunction)
112
- end
113
- end
114
- end
@@ -1,312 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Berkshelf::Git do
4
- let(:git) { Berkshelf::Git }
5
-
6
- describe '::find_git' do
7
- it 'finds git' do
8
- expect(Berkshelf::Git.find_git).to_not be_nil
9
- end
10
-
11
- it 'raises an error if git cannot be not found' do
12
- ENV.should_receive(:[]).with('PATH').and_return(String.new)
13
-
14
- expect {
15
- Berkshelf::Git.find_git
16
- }.to raise_error(Berkshelf::GitNotFound)
17
- end
18
- end
19
-
20
- describe '::clone' do
21
- let(:target) { clone_path('nginx') }
22
-
23
- it 'clones the repository to the target path' do
24
- origin_uri = git_origin_for('nginx')
25
- Berkshelf::Git.clone(origin_uri, target)
26
-
27
- expect(target).to exist
28
- expect(target).to be_directory
29
- end
30
- end
31
-
32
- describe '::checkout' do
33
- let(:repo_path) { clone_path('nginx') }
34
- let(:repo) {
35
- origin_uri = git_origin_for('nginx', tags: ['1.0.1', '1.0.2'], branches: ['topic', 'next_topic'])
36
- git.clone(origin_uri, repo_path)
37
- }
38
-
39
- shared_examples 'able to checkout git ref' do |test_ref|
40
- it 'checks out the specified ref of the given repository' do
41
- git.checkout(repo, ref)
42
-
43
- Dir.chdir repo_path do
44
- test_ref ||= ref
45
- expect(%x[git rev-parse #{test_ref}]).to eq(%x[git rev-parse HEAD])
46
- end
47
- end
48
- end
49
-
50
- context 'with sha commit id' do
51
- let(:ref) { sha_for_ref('nginx', '1.0.1') }
52
-
53
- it_behaves_like 'able to checkout git ref'
54
- end
55
-
56
- context 'with tags' do
57
- let(:ref) { '1.0.1' }
58
-
59
- it_behaves_like 'able to checkout git ref'
60
-
61
- context 'after checking out another tag' do
62
- let(:other_tag) { '1.0.2' }
63
- before do
64
- git.checkout(repo, other_tag)
65
- Dir.chdir repo_path do
66
- shell_out "echo 'uncommitted change' >> content_file"
67
- end
68
- end
69
-
70
- it_behaves_like 'able to checkout git ref'
71
- end
72
- end
73
-
74
- context 'with branches' do
75
- let(:ref) { 'topic' }
76
-
77
- it_behaves_like 'able to checkout git ref', 'origin/topic'
78
-
79
- context 'after checking out another branch' do
80
- let(:other_branch) { 'next_topic' }
81
- before do
82
- git.checkout(repo, other_branch)
83
- Dir.chdir repo_path do
84
- shell_out "echo 'uncommitted change' >> content_file"
85
- end
86
- end
87
-
88
- it_behaves_like 'able to checkout git ref', 'origin/topic'
89
- end
90
- end
91
- end
92
-
93
- describe '::rev_parse' do
94
- let(:repo_path) { clone_path('nginx') }
95
- before(:each) do |example|
96
- origin_uri = git_origin_for('nginx', tags: ['1.1.1'])
97
- Berkshelf::Git.clone(origin_uri, repo_path)
98
- Berkshelf::Git.checkout(repo_path, sha_for_ref('nginx', '1.1.1'))
99
- end
100
-
101
- it 'returns the ref for HEAD' do
102
- rev = Berkshelf::Git.rev_parse(repo_path)
103
- ref = sha_for_ref('nginx', '1.1.1')
104
-
105
- expect(rev).to eql(ref)
106
- end
107
- end
108
-
109
- describe '::show_ref' do
110
- let(:repo_path) { clone_path('nginx') }
111
- let(:tags) { ['1.0.1'] }
112
- let(:branches) { ['topic'] }
113
- let!(:repo) {
114
- origin_uri = git_origin_for('nginx', tags: tags, branches: branches)
115
- git.clone(origin_uri, repo_path)
116
- }
117
-
118
- it 'returns the commit id for the given tag' do
119
- show = git.show_ref(repo_path, '1.0.1')
120
- ref = sha_for_ref('nginx', '1.0.1')
121
-
122
- expect(show).to eq(ref)
123
- end
124
-
125
- it 'returns the commit id for the given branch' do
126
- show = git.show_ref(repo_path, 'topic')
127
- ref = sha_for_ref('nginx', 'topic')
128
- expect(show).to eq(ref)
129
- end
130
-
131
- context 'with an ambiguous ref' do
132
- let(:tags) { ['topic'] }
133
- let(:branches) { ['topic'] }
134
-
135
- it 'raises an error' do
136
- expect {
137
- git.show_ref(repo_path, 'topic')
138
- }.to raise_error(Berkshelf::AmbiguousGitRef)
139
- end
140
- end
141
- end
142
-
143
- describe '::revision_from_ref' do
144
- let(:repo_path) { clone_path('nginx') }
145
- let(:tags) { ['1.0.1'] }
146
- let(:branches) { ['topic'] }
147
- let!(:repo) {
148
- origin_uri = git_origin_for('nginx', tags: tags, branches: branches)
149
- git.clone(origin_uri, repo_path)
150
- }
151
-
152
- context 'with sha commit id' do
153
- let(:revision) { sha_for_ref('nginx', '1.0.1') }
154
- it 'returns the passed revision' do
155
- rev = git.revision_from_ref(repo_path, revision)
156
- expect(rev).to eq(revision)
157
- end
158
- end
159
-
160
- context 'with tag' do
161
- let(:revision) { sha_for_ref('nginx', '1.0.1') }
162
- it 'returns the revision' do
163
- rev = git.revision_from_ref(repo_path, '1.0.1')
164
- expect(rev).to eq(revision)
165
- end
166
- end
167
-
168
- context 'with branch' do
169
- let(:revision) { sha_for_ref('nginx', 'topic') }
170
- it 'returns the revision' do
171
- rev = git.revision_from_ref(repo_path, 'topic')
172
- expect(rev).to eq(revision)
173
- end
174
- end
175
-
176
- context 'with an invalid ref' do
177
- let(:ref) { 'foobar' }
178
- it 'raises an error' do
179
- expect {
180
- git.revision_from_ref(repo_path, ref)
181
- }.to raise_error(Berkshelf::InvalidGitRef)
182
- end
183
- end
184
- end
185
-
186
- let(:readonly_uri) { 'git://github.com/reset/thor-foodcritic.git' }
187
- let(:https_uri) { 'https://github.com/reset/solve.git' }
188
- let(:http_uri) { 'http://github.com/reset/solve.git' }
189
- let(:invalid_uri) { '/something/on/disk' }
190
-
191
- describe '::validate_uri' do
192
- context 'given a valid Git read-only URI' do
193
- it 'returns true' do
194
- expect(Berkshelf::Git.validate_uri(readonly_uri)).to be_true
195
- end
196
- end
197
-
198
- context 'given a valid Git HTTPS URI' do
199
- it 'returns true' do
200
- expect(Berkshelf::Git.validate_uri(https_uri)).to be_true
201
- end
202
- end
203
-
204
- context 'given a valid Github SSH URI' do
205
- it 'returns true' do
206
- expect(Berkshelf::Git.validate_uri('git@github.com:reset/solve.git')).to be_true
207
- end
208
- end
209
-
210
- context "given a valid SSH URI without an 'organization'" do
211
- it 'returns true' do
212
- expect(Berkshelf::Git.validate_uri('gituser@githost:solve.git')).to be_true
213
- end
214
- end
215
-
216
- context 'given a valid git+ssh URI without an username' do
217
- it 'returns true' do
218
- expect(Berkshelf::Git.validate_uri('git+ssh://host.com/repo')).to be_true
219
- end
220
- end
221
-
222
- context 'given a valid git+ssh URI with an username' do
223
- it 'returns true' do
224
- expect(Berkshelf::Git.validate_uri('git+ssh://user@host.com/repo')).to be_true
225
- end
226
- end
227
-
228
- context 'given a valid URI with a dash in the hostname' do
229
- it 'returns true' do
230
- expect(Berkshelf::Git.validate_uri('git://user@git-host.com/repo')).to be_true
231
- end
232
- end
233
-
234
- context 'given a valid URI with host being a subdomain' do
235
- it 'returns true' do
236
- expect(Berkshelf::Git.validate_uri('git://user@git.host.com/repo')).to be_true
237
- end
238
- end
239
-
240
- context 'given a valid git+ssh URI with home directory expansion' do
241
- it 'returns true' do
242
- expect(Berkshelf::Git.validate_uri('git+ssh://user@host.com/~repo')).to be_true
243
- end
244
- end
245
-
246
- context 'given an invalid URI' do
247
- it 'returns false' do
248
- expect(Berkshelf::Git.validate_uri(invalid_uri)).to be_false
249
- end
250
- end
251
-
252
- context 'given a HTTP URI' do
253
- it 'returns true' do
254
- expect(Berkshelf::Git.validate_uri(http_uri)).to be_true
255
- end
256
- end
257
-
258
- context 'given an integer' do
259
- it 'returns false' do
260
- expect(Berkshelf::Git.validate_uri(123)).to be_false
261
- end
262
- end
263
- end
264
-
265
- describe '::validate_uri!' do
266
- context 'given a valid Git read-only URI' do
267
- it 'returns true' do
268
- expect(Berkshelf::Git.validate_uri!(readonly_uri)).to be_true
269
- end
270
- end
271
-
272
- context 'given a valid Git HTTPS URI' do
273
- it 'returns true' do
274
- expect(Berkshelf::Git.validate_uri!(https_uri)).to be_true
275
- end
276
- end
277
-
278
- context 'given a valid Git SSH URI' do
279
- it 'returns true' do
280
- expect(Berkshelf::Git.validate_uri!('git@github.com:reset/solve.git')).to be_true
281
- end
282
- end
283
-
284
- context "given a valid SSH URI without an 'organization'" do
285
- it 'returns true' do
286
- expect(Berkshelf::Git.validate_uri('gituser@githost:solve.git')).to be_true
287
- end
288
- end
289
-
290
- context 'given an invalid URI' do
291
- it 'raises InvalidGitURI' do
292
- expect {
293
- Berkshelf::Git.validate_uri!(invalid_uri)
294
- }.to raise_error(Berkshelf::InvalidGitURI)
295
- end
296
- end
297
-
298
- context 'given a HTTP URI' do
299
- it 'raises InvalidGitURI' do
300
- expect(Berkshelf::Git.validate_uri!(http_uri)).to be_true
301
- end
302
- end
303
-
304
- context 'given an integer' do
305
- it 'raises InvalidGitURI' do
306
- expect {
307
- Berkshelf::Git.validate_uri!(123)
308
- }.to raise_error(Berkshelf::InvalidGitURI)
309
- end
310
- end
311
- end
312
- end