chef 18.4.12 → 18.6.2

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -2
  3. data/chef-universal-mingw-ucrt.gemspec +1 -1
  4. data/chef.gemspec +8 -8
  5. data/lib/chef/client.rb +0 -15
  6. data/lib/chef/cookbook/chefignore.rb +4 -1
  7. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  8. data/lib/chef/cookbook/remote_file_vendor.rb +3 -2
  9. data/lib/chef/cookbook/synchronizer.rb +2 -1
  10. data/lib/chef/cookbook_manifest.rb +2 -2
  11. data/lib/chef/exceptions.rb +1 -1
  12. data/lib/chef/file_cache.rb +17 -2
  13. data/lib/chef/formatters/doc.rb +1 -1
  14. data/lib/chef/mixin/{homebrew_user.rb → homebrew.rb} +13 -16
  15. data/lib/chef/mixin/openssl_helper.rb +2 -13
  16. data/lib/chef/node/attribute.rb +3 -11
  17. data/lib/chef/node/immutable_collections.rb +15 -8
  18. data/lib/chef/node/mixin/state_tracking.rb +6 -3
  19. data/lib/chef/policy_builder/policyfile.rb +8 -0
  20. data/lib/chef/provider/package/chocolatey.rb +56 -26
  21. data/lib/chef/provider/package/homebrew.rb +6 -9
  22. data/lib/chef/provider/package/powershell.rb +1 -0
  23. data/lib/chef/provider/package/rubygems.rb +4 -0
  24. data/lib/chef/provider/package/snap.rb +1 -0
  25. data/lib/chef/provider/package/zypper.rb +0 -1
  26. data/lib/chef/provider/service/windows.rb +0 -1
  27. data/lib/chef/provider/user/windows.rb +5 -0
  28. data/lib/chef/resource/chef_client_config.rb +4 -2
  29. data/lib/chef/resource/chef_client_systemd_timer.rb +5 -0
  30. data/lib/chef/resource/chef_gem.rb +1 -1
  31. data/lib/chef/resource/execute.rb +8 -6
  32. data/lib/chef/resource/habitat_install.rb +2 -1
  33. data/lib/chef/resource/homebrew_cask.rb +19 -30
  34. data/lib/chef/resource/homebrew_tap.rb +32 -17
  35. data/lib/chef/resource/homebrew_update.rb +4 -4
  36. data/lib/chef/resource/powershell_package.rb +4 -0
  37. data/lib/chef/resource/snap_package.rb +23 -0
  38. data/lib/chef/resource/support/client.erb +4 -3
  39. data/lib/chef/resource/sysctl.rb +1 -0
  40. data/lib/chef/resource_inspector.rb +25 -7
  41. data/lib/chef/version.rb +1 -1
  42. data/lib/chef/win32/registry.rb +5 -0
  43. data/lib/chef/win32/security.rb +9 -0
  44. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  45. data/spec/functional/resource/remote_file_spec.rb +1 -1
  46. data/spec/integration/client/fips_spec.rb +11 -2
  47. data/spec/integration/client/open_ssl_spec.rb +20 -0
  48. data/spec/spec_helper.rb +4 -1
  49. data/spec/support/chef_helpers.rb +2 -2
  50. data/spec/support/platform_helpers.rb +28 -7
  51. data/spec/support/shared/functional/file_resource.rb +3 -3
  52. data/spec/unit/client_spec.rb +0 -16
  53. data/spec/unit/file_cache_spec.rb +64 -0
  54. data/spec/unit/mixin/homebrew_spec.rb +118 -0
  55. data/spec/unit/mixin/openssl_helper_spec.rb +6 -1
  56. data/spec/unit/provider/package/chocolatey_spec.rb +17 -12
  57. data/spec/unit/provider/package/homebrew_spec.rb +4 -1
  58. data/spec/unit/provider/package/windows_spec.rb +5 -5
  59. data/spec/unit/provider/package/zypper_spec.rb +0 -10
  60. data/spec/unit/provider/user/windows_spec.rb +1 -0
  61. data/spec/unit/resource_inspector_spec.rb +36 -0
  62. metadata +23 -10
  63. data/spec/unit/mixin/homebrew_user_spec.rb +0 -119
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 18.4.12
4
+ version: 18.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-20 00:00:00.000000000 Z
11
+ date: 2024-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-config
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 18.4.12
19
+ version: 18.6.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 18.4.12
26
+ version: 18.6.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: chef-utils
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 18.4.12
33
+ version: 18.6.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 18.4.12
40
+ version: 18.6.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: train-core
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +45,9 @@ dependencies:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.10'
48
+ - - "<="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.12.7
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,6 +55,9 @@ dependencies:
52
55
  - - "~>"
53
56
  - !ruby/object:Gem::Version
54
57
  version: '3.10'
58
+ - - "<="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.12.7
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: train-winrm
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -241,6 +247,9 @@ dependencies:
241
247
  - - ">="
242
248
  - !ruby/object:Gem::Version
243
249
  version: 1.15.5
250
+ - - "<="
251
+ - !ruby/object:Gem::Version
252
+ version: 1.16.3
244
253
  type: :runtime
245
254
  prerelease: false
246
255
  version_requirements: !ruby/object:Gem::Requirement
@@ -248,6 +257,9 @@ dependencies:
248
257
  - - ">="
249
258
  - !ruby/object:Gem::Version
250
259
  version: 1.15.5
260
+ - - "<="
261
+ - !ruby/object:Gem::Version
262
+ version: 1.16.3
251
263
  - !ruby/object:Gem::Dependency
252
264
  name: ffi-yajl
253
265
  requirement: !ruby/object:Gem::Requirement
@@ -536,14 +548,14 @@ dependencies:
536
548
  requirements:
537
549
  - - "~>"
538
550
  - !ruby/object:Gem::Version
539
- version: '0.16'
551
+ version: 0.18.2
540
552
  type: :runtime
541
553
  prerelease: false
542
554
  version_requirements: !ruby/object:Gem::Requirement
543
555
  requirements:
544
556
  - - "~>"
545
557
  - !ruby/object:Gem::Version
546
- version: '0.16'
558
+ version: 0.18.2
547
559
  description: A systems integration framework, built to bring the benefits of configuration
548
560
  management to your entire infrastructure.
549
561
  email: adam@chef.io
@@ -836,7 +848,7 @@ files:
836
848
  - lib/chef/mixin/file_class.rb
837
849
  - lib/chef/mixin/from_file.rb
838
850
  - lib/chef/mixin/get_source_from_package.rb
839
- - lib/chef/mixin/homebrew_user.rb
851
+ - lib/chef/mixin/homebrew.rb
840
852
  - lib/chef/mixin/lazy_module_include.rb
841
853
  - lib/chef/mixin/notifying_block.rb
842
854
  - lib/chef/mixin/openssl_helper.rb
@@ -1862,6 +1874,7 @@ files:
1862
1874
  - spec/integration/client/exit_code_spec.rb
1863
1875
  - spec/integration/client/fips_spec.rb
1864
1876
  - spec/integration/client/ipv6_spec.rb
1877
+ - spec/integration/client/open_ssl_spec.rb
1865
1878
  - spec/integration/compliance/compliance_spec.rb
1866
1879
  - spec/integration/ohai/ohai_spec.rb
1867
1880
  - spec/integration/recipes/accumulator_spec.rb
@@ -2059,7 +2072,7 @@ files:
2059
2072
  - spec/unit/mixin/default_paths_spec.rb
2060
2073
  - spec/unit/mixin/deprecation_spec.rb
2061
2074
  - spec/unit/mixin/enforce_ownership_and_permissions_spec.rb
2062
- - spec/unit/mixin/homebrew_user_spec.rb
2075
+ - spec/unit/mixin/homebrew_spec.rb
2063
2076
  - spec/unit/mixin/lazy_module_include.rb
2064
2077
  - spec/unit/mixin/openssl_helper_spec.rb
2065
2078
  - spec/unit/mixin/params_validate_spec.rb
@@ -1,119 +0,0 @@
1
- #
2
- # Author:: Joshua Timberman (<joshua@chef.io>)
3
- #
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- require "spec_helper"
19
- require "chef/mixin/homebrew_user"
20
-
21
- class ExampleHomebrewUser
22
- include Chef::Mixin::HomebrewUser
23
- end
24
-
25
- describe Chef::Mixin::HomebrewUser do
26
- let(:homebrew_user) { ExampleHomebrewUser.new }
27
- let(:node) { Chef::Node.new }
28
-
29
- describe "when the homebrew user is provided" do
30
- let(:uid) { 1001 }
31
- let(:user) { "foo" }
32
-
33
- it "returns the homebrew user without looking at the file when uid is provided" do
34
- expect(File).to receive(:exist?).exactly(0).times
35
- expect(homebrew_user.find_homebrew_uid(uid)).to eq(uid)
36
- end
37
-
38
- it "returns the homebrew user without looking at the file when name is provided" do
39
- expect(File).to receive(:exist?).exactly(0).times
40
- allow(Etc).to receive_message_chain(:getpwnam, :uid).and_return(uid)
41
- expect(homebrew_user.find_homebrew_uid(user)).to eq(uid)
42
- end
43
-
44
- end
45
-
46
- shared_examples "successfully find executable" do
47
- let(:user) { nil }
48
- let(:brew_owner) { 2001 }
49
- let(:default_brew_path) { "/usr/local/bin/brew" }
50
- let(:default_brew_path_arm) { "/opt/homebrew/bin/brew" }
51
- let(:default_brew_path_linux) { "/home/linuxbrew/.linuxbrew/bin/brew" }
52
- let(:stat_double) do
53
- d = double
54
- expect(d).to receive(:uid).and_return(brew_owner)
55
- d
56
- end
57
-
58
- context "debug statement prints owner name" do
59
-
60
- before do
61
- expect(Etc).to receive(:getpwuid).with(brew_owner).and_return(OpenStruct.new(name: "name"))
62
- end
63
-
64
- def false_unless_specific_value(object, method, value)
65
- allow(object).to receive(method).and_return(false)
66
- allow(object).to receive(method).with(value).and_return(true)
67
- end
68
-
69
- it "returns the owner of the brew executable when it is at a default location for x86_64 machines" do
70
- false_unless_specific_value(File, :exist?, default_brew_path)
71
- false_unless_specific_value(File, :executable?, default_brew_path)
72
- allow(File).to receive(:stat).with(default_brew_path).and_return(stat_double)
73
- expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
74
- end
75
-
76
- it "returns the owner of the brew executable when it is at a default location for arm machines" do
77
- false_unless_specific_value(File, :exist?, default_brew_path_arm)
78
- false_unless_specific_value(File, :executable?, default_brew_path_arm)
79
- allow(File).to receive(:stat).with(default_brew_path_arm).and_return(stat_double)
80
- expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
81
- end
82
-
83
- it "returns the owner of the brew executable when it is at a default location for linux machines" do
84
- false_unless_specific_value(File, :exist?, default_brew_path_linux)
85
- false_unless_specific_value(File, :executable?, default_brew_path_linux)
86
- allow(File).to receive(:stat).with(default_brew_path_linux).and_return(stat_double)
87
- expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
88
- end
89
-
90
- it "returns the owner of the brew executable when it is not at a default location" do
91
- allow_any_instance_of(ExampleHomebrewUser).to receive(:which).and_return("/foo")
92
- false_unless_specific_value(File, :exist?, "/foo")
93
- false_unless_specific_value(File, :executable?, "/foo")
94
- allow(homebrew_user).to receive_message_chain(:shell_out, :stdout, :strip).and_return("/foo")
95
- allow(File).to receive(:stat).with("/foo").and_return(stat_double)
96
- expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
97
- end
98
-
99
- end
100
- end
101
-
102
- describe "when the homebrew user is not provided" do
103
-
104
- it "raises an error if no executable is found" do
105
- expect(File).to receive(:exist?).and_return(nil).at_least(:once)
106
- expect { homebrew_user.find_homebrew_uid(user) }.to raise_error(Chef::Exceptions::CannotDetermineHomebrewOwner)
107
- end
108
-
109
- include_examples "successfully find executable"
110
-
111
- context "the executable is owned by root" do
112
- include_examples "successfully find executable" do
113
- let(:brew_owner) { 0 }
114
- end
115
- end
116
-
117
- end
118
-
119
- end