berkshelf 8.0.2 → 8.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eca450739cdb53861e1a527e0147f702b71c898bac6d3ab317fa53f8b7150dc2
4
- data.tar.gz: 625a9e32681e15e4d553c9d56653cb16396255c347fcc45f1e9a51e61fc41324
3
+ metadata.gz: 1b5a13a8ee09f56803846ad1bf3046802f231c30f80d75c89a3a7a372e779fb6
4
+ data.tar.gz: 5410164e53e455a48de4cae7721a8a58f46a80e74a954bb588b33e3c005f80da
5
5
  SHA512:
6
- metadata.gz: 2079eaf58a614ed63b85335a02fe19bd8ae8083856341905a95c83ba4eca1185744e5164c683d8610f0b2bbb332bd5636a1814daaf7c37a149d76b979be7ccf7
7
- data.tar.gz: 7fd481876fab292339aac18016d5727bbe197186c3e92e6093dfebba962fc7540b0141b55fce6235263db945fc7423b0e138094d3fbe85a68d041a713268977d
6
+ metadata.gz: 556d5c24a23c8926a51e68215db48679470aa91b0e5a11c89a61249a4ad527608dae6bea34516e5aa0847a561b1e41f57e27b88c77af9fdc78f1eb9ca6bc2da1
7
+ data.tar.gz: 65a853433f25465b79f9e3fda0ef52b62cc73a1149d11b4768d40779898960430859073654778b07a2ea3a0da8e81a8b08ddbfb4f51f39bbda67a1da30b6d683
data/berkshelf.gemspec CHANGED
@@ -42,7 +42,11 @@ Gem::Specification.new do |s|
42
42
  s.add_dependency "octokit", "~> 4.0"
43
43
  s.add_dependency "mixlib-archive", ">= 1.1.4", "< 2.0" # needed for ruby 3.0 / Dir.chdir removal
44
44
  s.add_dependency "concurrent-ruby", "~> 1.0"
45
- s.add_dependency "chef", ">= 15.7.32" # needed for --skip-syntax-check
45
+ if RUBY_VERSION.match?(/3.0/)
46
+ s.add_dependency "chef", "~> 17.0" # needed for --skip-syntax-check
47
+ elsif
48
+ s.add_dependency "chef", ">= 15.7.32"
49
+ end
46
50
  s.add_dependency "chef-config"
47
51
  # this is required for Mixlib::Config#from_json
48
52
  s.add_dependency "mixlib-config", ">= 2.2.5"
@@ -152,7 +152,7 @@ module Berkshelf
152
152
  unpack_dir = Pathname.new(tmp_dir) + "#{name}-#{version}"
153
153
 
154
154
  url = remote_cookbook.location_path
155
- open(url, "rb") do |remote_file|
155
+ URI.open(url, "rb") do |remote_file|
156
156
  archive_path.open("wb") { |local_file| local_file.write remote_file.read }
157
157
  end
158
158
 
@@ -1,3 +1,5 @@
1
+ require 'chef/version_class'
2
+
1
3
  module Berkshelf
2
4
  module Validator
3
5
  class << self
@@ -25,10 +27,19 @@ module Berkshelf
25
27
  base, name = Pathname.new(cookbook.path.to_s).split
26
28
 
27
29
  files = Dir.glob("#{name}/**/*.rb", base: base.to_s).select { |f| f =~ /[[:space:]]/ }
30
+ validate_versions(cookbook)
28
31
 
29
32
  raise InvalidCookbookFiles.new(cookbook, files) unless files.empty?
30
33
  end
31
34
  end
35
+
36
+ def validate_versions(cookbook)
37
+ cookbook_dependencies = cookbook.dependencies
38
+ cookbook_dependencies.each do |cookbook_name, cookbook_version|
39
+ version = cookbook_version.gsub(/[^\d,\.]/, '')
40
+ Chef::Version.new(version)
41
+ end
42
+ end
32
43
  end
33
44
  end
34
45
  end
@@ -1,3 +1,3 @@
1
1
  module Berkshelf
2
- VERSION = "8.0.2".freeze
2
+ VERSION = "8.0.7".freeze
3
3
  end
@@ -231,8 +231,8 @@ describe Berkshelf::Lockfile do
231
231
  expect(Chef::Environment).to receive(:from_hash).with(env_hash).and_return(environment)
232
232
 
233
233
  expect(environment).to receive(:cookbook_versions).with(
234
- "apt" => "= 1.0.0",
235
- "jenkins" => "= 1.4.5"
234
+ {"apt" => "= 1.0.0",
235
+ "jenkins" => "= 1.4.5"}
236
236
  )
237
237
 
238
238
  expect(environment).to receive(:save)
@@ -6,6 +6,7 @@ describe Berkshelf::Validator do
6
6
 
7
7
  it "raises an error when the cookbook has spaces in the files" do
8
8
  allow(Dir).to receive(:glob).and_return(["/there are/spaces/in this/recipes/default.rb"])
9
+ allow(cookbook).to receive(:dependencies).and_return({"cookbook" => "1.0.0"})
9
10
  expect do
10
11
  subject.validate_files(cookbook)
11
12
  end.to raise_error(Berkshelf::InvalidCookbookFiles)
@@ -13,6 +14,21 @@ describe Berkshelf::Validator do
13
14
 
14
15
  it "does not raise an error when the cookbook is valid" do
15
16
  allow(Dir).to receive(:glob).and_return(["/there-are/no-spaces/in-this/recipes/default.rb"])
17
+ allow(cookbook).to receive(:dependencies).and_return({"cookbook" => "1.0.0"})
18
+ expect do
19
+ subject.validate_files(cookbook)
20
+ end.to_not raise_error
21
+ end
22
+
23
+ it "raises an error when the cookbook version is not valid" do
24
+ allow(cookbook).to receive(:dependencies).and_return({"cookbook" => "1"})
25
+ expect do
26
+ subject.validate_files(cookbook)
27
+ end.to raise_error
28
+ end
29
+
30
+ it "does not raise an error when the cookbook version is valid" do
31
+ allow(cookbook).to receive(:dependencies).and_return({"cookbook" => "1.0"})
16
32
  expect do
17
33
  subject.validate_files(cookbook)
18
34
  end.to_not raise_error
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: 8.0.2
4
+ version: 8.0.7
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: 2022-06-02 00:00:00.000000000 Z
15
+ date: 2023-06-12 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: mixlib-shellout
@@ -378,7 +378,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
378
378
  - !ruby/object:Gem::Version
379
379
  version: 2.0.0
380
380
  requirements: []
381
- rubygems_version: 3.2.32
381
+ rubygems_version: 3.1.4
382
382
  signing_key:
383
383
  specification_version: 4
384
384
  summary: Manages a Chef cookbook's dependencies