berkshelf 0.4.0.rc2 → 0.4.0.rc3
Sign up to get free protection for your applications and to get access to all the features.
- data/features/install.feature +15 -0
- data/{lib/berkshelf/generator_files → generator_files}/Berksfile.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/Gemfile.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/README.md.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/Thorfile.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/Vagrantfile.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/chefignore +4 -1
- data/{lib/berkshelf/generator_files → generator_files}/default_recipe.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/gitignore.erb +1 -0
- data/{lib/berkshelf/generator_files → generator_files}/licenses/apachev2.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/licenses/gplv2.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/licenses/gplv3.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/licenses/mit.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/licenses/reserved.erb +0 -0
- data/{lib/berkshelf/generator_files → generator_files}/metadata.rb.erb +0 -0
- data/lib/berkshelf/base_generator.rb +1 -1
- data/lib/berkshelf/berksfile.rb +5 -1
- data/lib/berkshelf/core_ext/fileutils.rb +10 -0
- data/lib/berkshelf/errors.rb +1 -0
- data/lib/berkshelf/git.rb +1 -1
- data/lib/berkshelf/version.rb +1 -1
- data/spec/unit/berkshelf/core_ext/fileutils_spec.rb +20 -0
- data/spec/unit/berkshelf/git_spec.rb +15 -4
- metadata +18 -16
data/features/install.feature
CHANGED
@@ -65,6 +65,21 @@ Feature: install cookbooks from a Berksfile
|
|
65
65
|
"""
|
66
66
|
And the exit status should be 0
|
67
67
|
|
68
|
+
@wip
|
69
|
+
Scenario: installing a Berksfile that contains a path location which contains a broken symlink
|
70
|
+
Given a Berksfile with path location sources to fixtures:
|
71
|
+
| example_cookbook_broken_link | example_cookbook_broken_link |
|
72
|
+
When I run the install command with flags:
|
73
|
+
| --shims |
|
74
|
+
Then the following directories should exist:
|
75
|
+
| cookbooks |
|
76
|
+
| cookbooks/example_cookbook |
|
77
|
+
And the output should contain:
|
78
|
+
"""
|
79
|
+
Shims written to:
|
80
|
+
"""
|
81
|
+
And the exit status should be 0
|
82
|
+
|
68
83
|
Scenario: installing a Berksfile that contains a Git location
|
69
84
|
Given I write to "Berksfile" with:
|
70
85
|
"""
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/berkshelf/berksfile.rb
CHANGED
@@ -209,7 +209,11 @@ module Berkshelf
|
|
209
209
|
#
|
210
210
|
# @return [Berksfile]
|
211
211
|
def load(content)
|
212
|
-
|
212
|
+
begin
|
213
|
+
instance_eval(content)
|
214
|
+
rescue => e
|
215
|
+
raise BerksfileReadError.new(e), "An error occurred while reading the Berksfile: #{e.message}"
|
216
|
+
end
|
213
217
|
self
|
214
218
|
end
|
215
219
|
|
@@ -63,6 +63,8 @@ module FileUtils
|
|
63
63
|
class Entry_ #:nodoc:
|
64
64
|
def link(dest)
|
65
65
|
case
|
66
|
+
when broken_symlink?
|
67
|
+
warn "#{path} is a broken symlink. No link created."
|
66
68
|
when directory?
|
67
69
|
if !File.exist?(dest) and descendant_diretory?(dest, path)
|
68
70
|
raise ArgumentError, "cannot link directory %s to itself %s" % [path, dest]
|
@@ -76,5 +78,13 @@ module FileUtils
|
|
76
78
|
File.link path(), dest
|
77
79
|
end
|
78
80
|
end
|
81
|
+
|
82
|
+
# Check if the file at path is a broken symlink
|
83
|
+
#
|
84
|
+
# @return [Boolean]
|
85
|
+
def broken_symlink?
|
86
|
+
File.symlink?(path) && !File.exists?(File.readlink(path))
|
87
|
+
end
|
88
|
+
|
79
89
|
end
|
80
90
|
end
|
data/lib/berkshelf/errors.rb
CHANGED
data/lib/berkshelf/git.rb
CHANGED
data/lib/berkshelf/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Berkshelf
|
4
|
+
describe FileUtils do
|
5
|
+
describe '#ln_r' do
|
6
|
+
it "should skip broken symlinks during traversal" do
|
7
|
+
Dir.mktmpdir do |dir|
|
8
|
+
path = Pathname.new(File.join(dir, 'ln_r_test'))
|
9
|
+
Dir.mkdir(path)
|
10
|
+
Dir.chdir(path) do
|
11
|
+
File.open('original', 'w') {}
|
12
|
+
File.symlink('original', 'link_to_original')
|
13
|
+
FileUtils.rm('original')
|
14
|
+
end
|
15
|
+
-> { FileUtils.ln_r(path, File.join(dir, 'link_to_dir')) }.should_not raise_error
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -58,7 +58,6 @@ module Berkshelf
|
|
58
58
|
|
59
59
|
let(:readonly_uri) { "git://github.com/reset/thor-foodcritic.git" }
|
60
60
|
let(:https_uri) { "https://github.com/reset/solve.git" }
|
61
|
-
let(:ssh_uri) { "git@github.com:reset/solve.git" }
|
62
61
|
let(:http_uri) { "http://github.com/reset/solve.git" }
|
63
62
|
let(:invalid_uri) { "/something/on/disk" }
|
64
63
|
|
@@ -75,9 +74,15 @@ module Berkshelf
|
|
75
74
|
end
|
76
75
|
end
|
77
76
|
|
78
|
-
context "given a valid
|
77
|
+
context "given a valid Github SSH URI" do
|
78
|
+
it "returns true" do
|
79
|
+
subject.validate_uri("git@github.com:reset/solve.git").should be_true
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "given a valid SSH URI without an 'organization'" do
|
79
84
|
it "returns true" do
|
80
|
-
subject.validate_uri(
|
85
|
+
subject.validate_uri("gituser@githost:solve.git").should be_true
|
81
86
|
end
|
82
87
|
end
|
83
88
|
|
@@ -115,7 +120,13 @@ module Berkshelf
|
|
115
120
|
|
116
121
|
context "given a valid Git SSH URI" do
|
117
122
|
it "returns true" do
|
118
|
-
subject.validate_uri!(
|
123
|
+
subject.validate_uri!("git@github.com:reset/solve.git").should be_true
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context "given a valid SSH URI without an 'organization'" do
|
128
|
+
it "returns true" do
|
129
|
+
subject.validate_uri("gituser@githost:solve.git").should be_true
|
119
130
|
end
|
120
131
|
end
|
121
132
|
|
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: 0.4.0.
|
4
|
+
version: 0.4.0.rc3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-
|
15
|
+
date: 2012-08-20 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: solve
|
@@ -382,6 +382,20 @@ files:
|
|
382
382
|
- features/update.feature
|
383
383
|
- features/upload_command.feature
|
384
384
|
- features/without.feature
|
385
|
+
- generator_files/Berksfile.erb
|
386
|
+
- generator_files/Gemfile.erb
|
387
|
+
- generator_files/README.md.erb
|
388
|
+
- generator_files/Thorfile.erb
|
389
|
+
- generator_files/Vagrantfile.erb
|
390
|
+
- generator_files/chefignore
|
391
|
+
- generator_files/default_recipe.erb
|
392
|
+
- generator_files/gitignore.erb
|
393
|
+
- generator_files/licenses/apachev2.erb
|
394
|
+
- generator_files/licenses/gplv2.erb
|
395
|
+
- generator_files/licenses/gplv3.erb
|
396
|
+
- generator_files/licenses/mit.erb
|
397
|
+
- generator_files/licenses/reserved.erb
|
398
|
+
- generator_files/metadata.rb.erb
|
385
399
|
- lib/berkshelf.rb
|
386
400
|
- lib/berkshelf/base_generator.rb
|
387
401
|
- lib/berkshelf/berksfile.rb
|
@@ -404,20 +418,6 @@ files:
|
|
404
418
|
- lib/berkshelf/downloader.rb
|
405
419
|
- lib/berkshelf/dsl.rb
|
406
420
|
- lib/berkshelf/errors.rb
|
407
|
-
- lib/berkshelf/generator_files/Berksfile.erb
|
408
|
-
- lib/berkshelf/generator_files/Gemfile.erb
|
409
|
-
- lib/berkshelf/generator_files/README.md.erb
|
410
|
-
- lib/berkshelf/generator_files/Thorfile.erb
|
411
|
-
- lib/berkshelf/generator_files/Vagrantfile.erb
|
412
|
-
- lib/berkshelf/generator_files/chefignore
|
413
|
-
- lib/berkshelf/generator_files/default_recipe.erb
|
414
|
-
- lib/berkshelf/generator_files/gitignore.erb
|
415
|
-
- lib/berkshelf/generator_files/licenses/apachev2.erb
|
416
|
-
- lib/berkshelf/generator_files/licenses/gplv2.erb
|
417
|
-
- lib/berkshelf/generator_files/licenses/gplv3.erb
|
418
|
-
- lib/berkshelf/generator_files/licenses/mit.erb
|
419
|
-
- lib/berkshelf/generator_files/licenses/reserved.erb
|
420
|
-
- lib/berkshelf/generator_files/metadata.rb.erb
|
421
421
|
- lib/berkshelf/git.rb
|
422
422
|
- lib/berkshelf/init_generator.rb
|
423
423
|
- lib/berkshelf/lockfile.rb
|
@@ -468,6 +468,7 @@ files:
|
|
468
468
|
- spec/unit/berkshelf/cookbook_source/site_location_spec.rb
|
469
469
|
- spec/unit/berkshelf/cookbook_source_spec.rb
|
470
470
|
- spec/unit/berkshelf/cookbook_store_spec.rb
|
471
|
+
- spec/unit/berkshelf/core_ext/fileutils_spec.rb
|
471
472
|
- spec/unit/berkshelf/downloader_spec.rb
|
472
473
|
- spec/unit/berkshelf/dsl_spec.rb
|
473
474
|
- spec/unit/berkshelf/git_spec.rb
|
@@ -556,6 +557,7 @@ test_files:
|
|
556
557
|
- spec/unit/berkshelf/cookbook_source/site_location_spec.rb
|
557
558
|
- spec/unit/berkshelf/cookbook_source_spec.rb
|
558
559
|
- spec/unit/berkshelf/cookbook_store_spec.rb
|
560
|
+
- spec/unit/berkshelf/core_ext/fileutils_spec.rb
|
559
561
|
- spec/unit/berkshelf/downloader_spec.rb
|
560
562
|
- spec/unit/berkshelf/dsl_spec.rb
|
561
563
|
- spec/unit/berkshelf/git_spec.rb
|