chef-utils 15.6.10 → 15.7.30

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: 4922e045b18921d2c32e699614abca3f13a7c5522f5ab0833607936c55f401b9
4
- data.tar.gz: 271d42c9c9ea566c24f217d0e4ae260ef5f4f48a16d83dd92996e7ca36bc3ce4
3
+ metadata.gz: 06ac46e984418a061b58f7db952a50e27569b5919c3f7dce6ffac6d45ee55fb5
4
+ data.tar.gz: 277f88617c5f70967f6a09e5c0da820d71fb8b59d69ee6ad72458ff3eb40b63c
5
5
  SHA512:
6
- metadata.gz: eee33a5da2fdf1445a024f42286d14272119bb1d5e7802e093cfd804ed0dbed233f2c55f27bcde759374c7f3ede9cb58d9a0e9691ba63d8aebbab40ba69f0071
7
- data.tar.gz: fb666e2a7df8ce8a747f10326967e73b30495bc257cce11905b51a25e37a6d0749af3963c7e5532ea8d48d5aa622b3f87f1397b1070034e0e82e7e7346e20d44
6
+ metadata.gz: 1618de8f21fe43d920322b4b9eb6527a7948da94391bffa619e8196ed84a41c2483cb4ef3d680390256b32d3b93646ed1dbffda31fa2c7e1fd5e267763245e6e
7
+ data.tar.gz: 9cc7276e5eaecae036f9d00136a1302d31c33e309bb2f47db593168a2b7881f63495d0e8c35ee82690b2f17a870ec8ea3559fb6d074740f793545024649914b6
@@ -63,7 +63,7 @@ module ChefUtils
63
63
  %w{sun4u sun4v}.include?(node["kernel"]["machine"])
64
64
  end
65
65
 
66
- # Determine if the current architecture is Powerpc64 Big Endian
66
+ # Determine if the current architecture is PowerPC 64bit Big Endian
67
67
  #
68
68
  # @return [Boolean]
69
69
  #
@@ -71,7 +71,7 @@ module ChefUtils
71
71
  %w{ppc64}.include?(node["kernel"]["machine"])
72
72
  end
73
73
 
74
- # Determine if the current architecture is Powerpc64 Little Endian
74
+ # Determine if the current architecture is PowerPC 64bit Little Endian
75
75
  #
76
76
  # @return [Boolean]
77
77
  #
@@ -28,7 +28,7 @@ module ChefUtils
28
28
  module Introspection
29
29
  include TrainHelpers
30
30
 
31
- # Returns whether the node is a docker container.
31
+ # Determine if the node is a docker container.
32
32
  #
33
33
  # @param [Chef::Node] node
34
34
  #
@@ -40,6 +40,8 @@ module ChefUtils
40
40
  !!(node && node.read("virtualization", "systems", "docker") == "guest")
41
41
  end
42
42
 
43
+ # Determine if the node uses the systemd init system.
44
+ #
43
45
  # @param [Chef::Node] node
44
46
  #
45
47
  # @return [Boolean]
@@ -48,6 +50,8 @@ module ChefUtils
48
50
  file_exist?("/proc/1/comm") && file_open("/proc/1/comm").gets.chomp == "systemd"
49
51
  end
50
52
 
53
+ # Determine if the node is running in Test Kitchen.
54
+ #
51
55
  # @param [Chef::Node] node
52
56
  #
53
57
  # @return [Boolean]
@@ -56,6 +60,8 @@ module ChefUtils
56
60
  ENV.key?("TEST_KITCHEN")
57
61
  end
58
62
 
63
+ # Determine if the node is running in a CI system that sets the CI env var.
64
+ #
59
65
  # @param [Chef::Node] node
60
66
  #
61
67
  # @return [Boolean]
@@ -64,6 +70,8 @@ module ChefUtils
64
70
  ENV.key?("CI")
65
71
  end
66
72
 
73
+ # Determine if the a systemd service unit is present on the system.
74
+ #
67
75
  # @param [String] svc_name
68
76
  #
69
77
  # @return [Boolean]
@@ -76,6 +84,8 @@ module ChefUtils
76
84
  end
77
85
  end
78
86
 
87
+ # Determine if the a systemd unit of any type is present on the system.
88
+ #
79
89
  # @param [String] svc_name
80
90
  #
81
91
  # @return [Boolean]
@@ -22,7 +22,7 @@ module ChefUtils
22
22
  module PlatformFamily
23
23
  include Internal
24
24
 
25
- # Determine if the current node is arch linux.
25
+ # Determine if the current node is a member of the 'arch' family.
26
26
  #
27
27
  # @param [Chef::Node] node
28
28
  #
@@ -34,7 +34,7 @@ module ChefUtils
34
34
  # chef-sugar backcompat methods
35
35
  alias_method :arch_linux?, :arch?
36
36
 
37
- # Determine if the current node is aix
37
+ # Determine if the current node is a member of the 'aix' platform family.
38
38
  #
39
39
  # @param [Chef::Node] node
40
40
  #
@@ -44,7 +44,7 @@ module ChefUtils
44
44
  node["platform_family"] == "aix"
45
45
  end
46
46
 
47
- # Determine if the current node is a member of the debian family.
47
+ # Determine if the current node is a member of the 'debian' platform family (Debian, Ubuntu and derivatives).
48
48
  #
49
49
  # @param [Chef::Node] node
50
50
  #
@@ -54,7 +54,7 @@ module ChefUtils
54
54
  node["platform_family"] == "debian"
55
55
  end
56
56
 
57
- # Determine if the current node is a member of the fedora family.
57
+ # Determine if the current node is a member of the 'fedora' platform family (Fedora and Arist).
58
58
  #
59
59
  # @param [Chef::Node] node
60
60
  #
@@ -64,7 +64,7 @@ module ChefUtils
64
64
  node["platform_family"] == "fedora"
65
65
  end
66
66
 
67
- # Determine if the current node is a member of the OSX family.
67
+ # Determine if the current node is a member of the 'mac_os_x' platform family.
68
68
  #
69
69
  # @param [Chef::Node] node
70
70
  #
@@ -77,9 +77,7 @@ module ChefUtils
77
77
  alias_method :mac?, :macos?
78
78
  alias_method :mac_os_x?, :macos?
79
79
 
80
- # Determine if the current node is a member of the rhel family (RHEL, CentOS, Oracle or Scientific Linux, no Amazon or Fedora).
81
- #
82
- # The platform_versions for these operating systems must match (rhel7 == centos7 == oracle7 == scientfic7), modulo additional packages
80
+ # Determine if the current node is a member of the 'rhel' platform family (Red Hat, CentOS, Oracle or Scientific Linux, but NOT Amazon Linux or Fedora).
83
81
  #
84
82
  # @param [Chef::Node] node
85
83
  #
@@ -90,7 +88,7 @@ module ChefUtils
90
88
  end
91
89
  alias_method :el?, :rhel?
92
90
 
93
- # Determine if the current node is a rhel6 compatible build (RHEL, CentOS, Oracle or Scientific Linux)
91
+ # Determine if the current node is a rhel6 compatible build (Red Hat, CentOS, Oracle or Scientific Linux)
94
92
  #
95
93
  # @param [Chef::Node] node
96
94
  #
@@ -100,7 +98,7 @@ module ChefUtils
100
98
  node["platform_family"] == "rhel" && node["platform_version"].to_f >= 6.0 && node["platform_version"].to_f < 7.0
101
99
  end
102
100
 
103
- # Determine if the current node is a rhel7 compatible build (RHEL, CentOS, Oracle or Scientific Linux)
101
+ # Determine if the current node is a rhel7 compatible build (Red Hat, CentOS, Oracle or Scientific Linux)
104
102
  #
105
103
  # @param [Chef::Node] node
106
104
  #
@@ -110,7 +108,7 @@ module ChefUtils
110
108
  node["platform_family"] == "rhel" && node["platform_version"].to_f >= 7.0 && node["platform_version"].to_f < 8.0
111
109
  end
112
110
 
113
- # Determine if the current node is a rhel8 compatible build (RHEL, CentOS, Oracle or Scientific Linux)
111
+ # Determine if the current node is a rhel8 compatible build (Red Hat, CentOS, Oracle or Scientific Linux)
114
112
  #
115
113
  # @param [Chef::Node] node
116
114
  #
@@ -120,7 +118,7 @@ module ChefUtils
120
118
  node["platform_family"] == "rhel" && node["platform_version"].to_f >= 8.0 && node["platform_version"].to_f < 9.0
121
119
  end
122
120
 
123
- # Determine if the current node is a member of the amazon family.
121
+ # Determine if the current node is a member of the 'amazon' platform family.
124
122
  #
125
123
  # @param [Chef::Node] node
126
124
  #
@@ -131,7 +129,7 @@ module ChefUtils
131
129
  end
132
130
  alias_method :amazon_linux?, :amazon?
133
131
 
134
- # Determine if the current node is solaris2
132
+ # Determine if the current node is a member of the 'solaris2' platform family.
135
133
  #
136
134
  # @param [Chef::Node] node
137
135
  #
@@ -143,7 +141,7 @@ module ChefUtils
143
141
  # chef-sugar backcompat methods
144
142
  alias_method :solaris?, :solaris2?
145
143
 
146
- # Determine if the current node is smartos
144
+ # Determine if the current node is a member of the 'smartos' platform family.
147
145
  #
148
146
  # @param [Chef::Node] node
149
147
  #
@@ -153,7 +151,7 @@ module ChefUtils
153
151
  node["platform_family"] == "smartos"
154
152
  end
155
153
 
156
- # Determine if the current node is a member of the suse family.
154
+ # Determine if the current node is a member of the 'suse' platform family (openSUSE, SLES, and SLED).
157
155
  #
158
156
  # @param [Chef::Node] node
159
157
  #
@@ -163,7 +161,7 @@ module ChefUtils
163
161
  node["platform_family"] == "suse"
164
162
  end
165
163
 
166
- # Determine if the current node is a member of the gentoo family.
164
+ # Determine if the current node is a member of the 'gentoo' platform family.
167
165
  #
168
166
  # @param [Chef::Node] node
169
167
  #
@@ -173,7 +171,7 @@ module ChefUtils
173
171
  node["platform_family"] == "gentoo"
174
172
  end
175
173
 
176
- # Determine if the current node is freebsd
174
+ # Determine if the current node is a member of the 'freebsd' platform family.
177
175
  #
178
176
  # @param [Chef::Node] node
179
177
  #
@@ -183,7 +181,7 @@ module ChefUtils
183
181
  node["platform_family"] == "freebsd"
184
182
  end
185
183
 
186
- # Determine if the current node is openbsd
184
+ # Determine if the current node is a member of the 'openbsd' platform family.
187
185
  #
188
186
  # @param [Chef::Node] node
189
187
  #
@@ -193,7 +191,7 @@ module ChefUtils
193
191
  node["platform_family"] == "openbsd"
194
192
  end
195
193
 
196
- # Determine if the current node is netbsd
194
+ # Determine if the current node is a member of the 'netbsd' platform family.
197
195
  #
198
196
  # @param [Chef::Node] node
199
197
  #
@@ -203,7 +201,7 @@ module ChefUtils
203
201
  node["platform_family"] == "netbsd"
204
202
  end
205
203
 
206
- # Determine if the current node is dragonflybsd
204
+ # Determine if the current node is a member of the 'dragonflybsd' platform family.
207
205
  #
208
206
  # @param [Chef::Node] node
209
207
  #
@@ -213,7 +211,7 @@ module ChefUtils
213
211
  node["platform_family"] == "dragonflybsd"
214
212
  end
215
213
 
216
- # Determine if the current node is a member of the windows family.
214
+ # Determine if the current node is a member of the 'windows' platform family.
217
215
  #
218
216
  # @param [Chef::Node] node
219
217
  #
@@ -0,0 +1,58 @@
1
+ #
2
+ # Copyright:: Copyright 2020, Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require_relative "../internal"
19
+
20
+ module ChefUtils
21
+ module DSL
22
+ module Windows
23
+ include Internal
24
+
25
+ # Determine if the current node is Windows Server Core.
26
+ #
27
+ # @param [Chef::Node] node
28
+ #
29
+ # @return [Boolean]
30
+ #
31
+ def windows_server_core?(node = __getnode)
32
+ node["kernel"]["server_core"] == true
33
+ end
34
+
35
+ # Determine if the current node is Windows Workstation
36
+ #
37
+ # @param [Chef::Node] node
38
+ #
39
+ # @return [Boolean]
40
+ #
41
+ def windows_workstation?(node = __getnode)
42
+ node["kernel"]["product_type"] == "Workstation"
43
+ end
44
+
45
+ # Determine if the current node is Windows Server
46
+ #
47
+ # @param [Chef::Node] node
48
+ #
49
+ # @return [Boolean]
50
+ #
51
+ def windows_server?(node = __getnode)
52
+ node["kernel"]["product_type"] == "Server"
53
+ end
54
+
55
+ extend self
56
+ end
57
+ end
58
+ end
@@ -15,5 +15,5 @@
15
15
 
16
16
  module ChefUtils
17
17
  CHEFUTILS_ROOT = File.expand_path("../..", __FILE__)
18
- VERSION = "15.6.10".freeze
18
+ VERSION = "15.7.30".freeze
19
19
  end
@@ -0,0 +1,143 @@
1
+ # Copyright:: Copyright 2017, Noah Kantrowitz
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module ChefUtils
17
+ # String-like object for version strings.
18
+ #
19
+ # @since 13.2
20
+ # @api internal
21
+ class VersionString < String
22
+ # Parsed version object for the string.
23
+ # @return [Gem::Version]
24
+ attr_reader :parsed_version
25
+
26
+ # Create a new VersionString from an input String.
27
+ #
28
+ # @param val [String] Version string to parse.
29
+ def initialize(val)
30
+ super
31
+ @parsed_version = ::Gem::Version.create(self)
32
+ end
33
+
34
+ # @!group Compat wrappers for String
35
+
36
+ # Compat wrapper for + to behave like a normal String.
37
+ #
38
+ # @param other [String]
39
+ # @return [String]
40
+ def +(other)
41
+ to_s + other
42
+ end
43
+
44
+ # Compat wrapper for * to behave like a normal String.
45
+ #
46
+ # @param other [Integer]
47
+ # @return [String]
48
+ def *(other)
49
+ to_s * other
50
+ end
51
+
52
+ # @!group Comparison operators
53
+
54
+ # Compare a VersionString to an object. If compared to another VersionString
55
+ # then sort like `Gem::Version`, otherwise try to treat the other object as
56
+ # a version but fall back to normal string comparison.
57
+ #
58
+ # @param other [Object]
59
+ # @return [Integer]
60
+ def <=>(other)
61
+ other_ver = case other
62
+ when VersionString
63
+ other.parsed_version
64
+ else
65
+ begin
66
+ Gem::Version.create(other.to_s)
67
+ rescue ArgumentError
68
+ # Comparing to a string that isn't a version.
69
+ return super
70
+ end
71
+ end
72
+ parsed_version <=> other_ver
73
+ end
74
+
75
+ # Compat wrapper for == based on <=>.
76
+ #
77
+ # @param other [Object]
78
+ # @return [Boolean]
79
+ def ==(other)
80
+ (self <=> other) == 0
81
+ end
82
+
83
+ # Compat wrapper for != based on <=>.
84
+ #
85
+ # @param other [Object]
86
+ # @return [Boolean]
87
+ def !=(other)
88
+ (self <=> other) != 0
89
+ end
90
+
91
+ # Compat wrapper for < based on <=>.
92
+ #
93
+ # @param other [Object]
94
+ # @return [Boolean]
95
+ def <(other)
96
+ (self <=> other) < 0
97
+ end
98
+
99
+ # Compat wrapper for <= based on <=>.
100
+ #
101
+ # @param other [Object]
102
+ # @return [Boolean]
103
+ def <=(other)
104
+ (self <=> other) < 1
105
+ end
106
+
107
+ # Compat wrapper for > based on <=>.
108
+ #
109
+ # @param other [Object]
110
+ # @return [Boolean]
111
+ def >(other)
112
+ (self <=> other) > 0
113
+ end
114
+
115
+ # Compat wrapper for >= based on <=>.
116
+ #
117
+ # @param other [Object]
118
+ # @return [Boolean]
119
+ def >=(other)
120
+ (self <=> other) > -1
121
+ end
122
+
123
+ # @!group Matching operators
124
+
125
+ # Matching operator to support checking against a requirement string.
126
+ #
127
+ # @param other [Regexp, String]
128
+ # @return [Boolean]
129
+ # @example Match against a Regexp
130
+ # ChefUtils::VersionString.new('1.0.0') =~ /^1/
131
+ # @example Match against a requirement
132
+ # ChefUtils::VersionString.new('1.0.0') =~ '~> 1.0'
133
+ def =~(other)
134
+ case other
135
+ when Regexp
136
+ super
137
+ else
138
+ Gem::Requirement.create(other) =~ parsed_version
139
+ end
140
+ end
141
+
142
+ end
143
+ end
data/lib/chef-utils.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2015-2019, Chef Software Inc.
2
+ # Copyright:: Copyright 2015-2020, Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,6 +24,7 @@ require_relative "chef-utils/dsl/platform_family"
24
24
  require_relative "chef-utils/dsl/service"
25
25
  require_relative "chef-utils/dsl/train_helpers"
26
26
  require_relative "chef-utils/dsl/which"
27
+ require_relative "chef-utils/dsl/windows"
27
28
  require_relative "chef-utils/mash"
28
29
 
29
30
  # This is the Chef Infra Client DSL, not everytihng needs to go in here
@@ -33,6 +34,7 @@ module ChefUtils
33
34
  include ChefUtils::DSL::PlatformFamily
34
35
  include ChefUtils::DSL::Platform
35
36
  include ChefUtils::DSL::Introspection
37
+ include ChefUtils::DSL::Windows
36
38
  # FIXME: include ChefUtils::DSL::Which in Chef 16.0
37
39
  # FIXME: include ChefUtils::DSL::PathSanity in Chef 16.0
38
40
  # FIXME: include ChefUtils::DSL::TrainHelpers in Chef 16.0
data/spec/spec_helper.rb CHANGED
@@ -10,6 +10,7 @@ HELPER_MODULES = [
10
10
  ChefUtils::DSL::PlatformFamily,
11
11
  ChefUtils::DSL::Service,
12
12
  ChefUtils::DSL::Which,
13
+ ChefUtils::DSL::Windows,
13
14
  ].freeze
14
15
 
15
16
  ARCH_HELPERS = (ChefUtils::DSL::Architecture.methods - Module.methods).freeze
@@ -17,6 +18,7 @@ OS_HELPERS = (ChefUtils::DSL::OS.methods - Module.methods).freeze
17
18
  PLATFORM_HELPERS = (ChefUtils::DSL::Platform.methods - Module.methods).freeze
18
19
  PLATFORM_FAMILY_HELPERS = (ChefUtils::DSL::PlatformFamily.methods - Module.methods).freeze
19
20
  INTROSPECTION_HELPERS = (ChefUtils::DSL::Introspection.methods - Module.methods).freeze
21
+ WINDOWS_HELPERS = (ChefUtils::DSL::Windows.methods - Module.methods).freeze
20
22
 
21
23
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
22
24
  RSpec.configure do |config|
@@ -0,0 +1,63 @@
1
+ #
2
+ # Copyright:: Copyright 2020, Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "spec_helper"
19
+
20
+ def windows_reports_true_for(*args)
21
+ args.each do |method|
22
+ it "reports true for #{method}" do
23
+ expect(described_class.send(method, node)).to be true
24
+ end
25
+ end
26
+ (WINDOWS_HELPERS - args).each do |method|
27
+ it "reports false for #{method}" do
28
+ expect(described_class.send(method, node)).to be false
29
+ end
30
+ end
31
+ end
32
+
33
+ RSpec.describe ChefUtils::DSL::Windows do
34
+ ( HELPER_MODULES - [ described_class ] ).each do |klass|
35
+ it "does not have methods that collide with #{klass}" do
36
+ expect((klass.methods - Module.methods) & WINDOWS_HELPERS).to be_empty
37
+ end
38
+ end
39
+
40
+ WINDOWS_HELPERS.each do |helper|
41
+ it "has the #{helper} in the ChefUtils module" do
42
+ expect(ChefUtils).to respond_to(helper)
43
+ end
44
+ end
45
+
46
+ context "on Windows Server Core" do
47
+ let(:node) { { "kernel" => { "server_core" => true } } }
48
+
49
+ windows_reports_true_for(:windows_server_core?)
50
+ end
51
+
52
+ context "on Windows Workstation" do
53
+ let(:node) { { "kernel" => { "product_type" => "Workstation" } } }
54
+
55
+ windows_reports_true_for(:windows_workstation?)
56
+ end
57
+
58
+ context "on Windows Server" do
59
+ let(:node) { { "kernel" => { "product_type" => "Server" } } }
60
+
61
+ windows_reports_true_for(:windows_server?)
62
+ end
63
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 15.6.10
4
+ version: 15.7.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-10 00:00:00.000000000 Z
11
+ date: 2020-01-23 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -30,9 +30,11 @@ files:
30
30
  - lib/chef-utils/dsl/service.rb
31
31
  - lib/chef-utils/dsl/train_helpers.rb
32
32
  - lib/chef-utils/dsl/which.rb
33
+ - lib/chef-utils/dsl/windows.rb
33
34
  - lib/chef-utils/internal.rb
34
35
  - lib/chef-utils/mash.rb
35
36
  - lib/chef-utils/version.rb
37
+ - lib/chef-utils/version_string.rb
36
38
  - spec/spec_helper.rb
37
39
  - spec/unit/dsl/architecture_spec.rb
38
40
  - spec/unit/dsl/dsl_spec.rb
@@ -43,6 +45,7 @@ files:
43
45
  - spec/unit/dsl/platform_spec.rb
44
46
  - spec/unit/dsl/service_spec.rb
45
47
  - spec/unit/dsl/which_spec.rb
48
+ - spec/unit/dsl/windows_spec.rb
46
49
  - spec/unit/mash_spec.rb
47
50
  homepage: https://github.com/chef/chef/tree/master/chef-utils
48
51
  licenses: