chef 12.20.3 → 12.21.1

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
  SHA1:
3
- metadata.gz: b76fcc06d56bcab5fc551164c0522fdc88252c06
4
- data.tar.gz: 734f7fda8fb0ea35b678ed60fd91aab39a7ee834
3
+ metadata.gz: dc22d5fbbee25b481abe4fb3ba2ee92644e265a4
4
+ data.tar.gz: e528ca22e29da3d99967cca0e00f6350ad4cf7f3
5
5
  SHA512:
6
- metadata.gz: ce495ae0e26ca2d7eeef5c7bce3e4e81a569a70149150e468cf87cbde16611fde6f7b44e3a82cbfc53d00f8aa8a67d46bbffa5bfe7c254878b3b06e3342c462a
7
- data.tar.gz: 5aaaf3599b394c59041bcbcac810e8df7ff51afbee519bbecc7622de3c7b30650d6e1a14cf2a42b2dc7e974ca7b08205c94f5e98c1af65b41a21508725d6022f
6
+ metadata.gz: 2e2c18119e148482bc477a38c9c62a1ce7d8cf348e8cbc80570b551ed4538f9771a8cfe0c7d3dc10e410cbef48eb31f2cdf8efe5de2cfba25f472573c30fb670
7
+ data.tar.gz: fca9e5a4f9d4d54197e0bd1594ebb3fbc87636f9bba63135a98fcdbbd7d0b89be61d67eaff09ffbffb4b136b460016b0a4d32496a19cb088360a8ec9b89455a9
data/Gemfile CHANGED
@@ -19,7 +19,7 @@ gem "cheffish" # required for rspec tests
19
19
  group(:omnibus_package) do
20
20
  gem "appbundler"
21
21
  gem "rb-readline"
22
- gem "nokogiri"
22
+ gem "nokogiri", "~> 1.7.2"
23
23
  end
24
24
 
25
25
  group(:omnibus_package, :pry) do
data/VERSION CHANGED
@@ -1 +1 @@
1
- 12.20.3
1
+ 12.21.1
@@ -19,6 +19,7 @@ driver:
19
19
  subnet_id: subnet-19ac017c
20
20
  security_group_ids: ["sg-e401eb83", "sg-96274af3"]
21
21
  instance_type: m3.large
22
+ retryable_tries: 120
22
23
  # associate_public_ip: true # Don't enable public IP, as subnet specified is behind VPN
23
24
 
24
25
  # busser installation relies on this
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency "erubis", "~> 2.7"
33
33
  s.add_dependency "diff-lcs", "~> 1.2", ">= 1.2.4"
34
34
 
35
- s.add_dependency "chef-zero", ">= 4.8"
35
+ s.add_dependency "chef-zero", ">= 4.8", "< 13"
36
36
 
37
37
  s.add_dependency "plist", "~> 3.2"
38
38
  s.add_dependency "iniparse", "~> 1.4"
@@ -202,7 +202,7 @@ class Chef
202
202
  ( cookbook_name, segment, file ) = md[1..3]
203
203
  if have_cookbook?(cookbook_name)
204
204
  manifest_segment = cookbook_segment(cookbook_name, segment)
205
- if manifest_segment.select { |manifest_record| manifest_record["path"] == "#{segment}/#{file}" }.empty?
205
+ if manifest_segment.nil? || manifest_segment.select { |manifest_record| manifest_record["path"] == "#{segment}/#{file}" }.empty?
206
206
  Chef::Log.info("Removing #{cache_file} from the cache; its is no longer in the cookbook manifest.")
207
207
  cache.delete(cache_file)
208
208
  @events.removed_cookbook_file(cache_file)
@@ -17,6 +17,8 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
+ require "chef/version"
21
+
20
22
  class Chef
21
23
  module Formatters
22
24
  # == Formatters::ErrorDescription
@@ -45,7 +47,7 @@ class Chef
45
47
  display_section(heading, text, out)
46
48
  end
47
49
  end
48
- display_section("Platform:", RUBY_PLATFORM, out)
50
+ display_section("System Info:", error_context_info, out)
49
51
  end
50
52
 
51
53
  def for_json
@@ -64,6 +66,21 @@ class Chef
64
66
  out.puts "\n"
65
67
  end
66
68
 
69
+ def error_context_info
70
+ context_info = { chef_version: Chef::VERSION }
71
+ if Chef.node
72
+ context_info[:platform] = Chef.node["platform"]
73
+ context_info[:platform_version] = Chef.node["platform_version"]
74
+ end
75
+ # A string like "ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]"
76
+ context_info[:ruby] = RUBY_DESCRIPTION
77
+ # The argv[0] value.
78
+ context_info[:program_name] = $PROGRAM_NAME
79
+ # This is kind of wonky but it's the only way to get the entry path script.
80
+ context_info[:executable] = File.realpath(caller.last[/^(.*):\d+:in /, 1])
81
+ context_info.map { |k, v| "#{k}=#{v}" }.join("\n")
82
+ end
83
+
67
84
  end
68
85
  end
69
86
  end
@@ -69,7 +69,7 @@ class Chef
69
69
  configs = []
70
70
 
71
71
  if ::File.exist?(Chef.path_to("/etc/init.d/#{service_name}"))
72
- configs << :initd
72
+ configs += [ :initd, :systemd ]
73
73
  end
74
74
 
75
75
  if ::File.exist?(Chef.path_to("/etc/init/#{service_name}.conf"))
@@ -657,6 +657,10 @@ class Chef
657
657
  # as needed.
658
658
  return if Chef::Resource.properties.keys.include?(name)
659
659
 
660
+ # Special case for `supports` as it was moved in Chef 13 and this is causing
661
+ # some user confusion in cookbooks that need to support both 12 and 13.
662
+ return if name.to_s == "supports"
663
+
660
664
  # Emit the deprecation.
661
665
  resource_name = declared_in.respond_to?(:resource_name) ? declared_in.resource_name : declared_in
662
666
  Chef.deprecated(:property_name_collision, "Property `#{name}` of resource `#{resource_name}` overwrites an existing method. " \
@@ -21,7 +21,7 @@
21
21
 
22
22
  class Chef
23
23
  CHEF_ROOT = File.expand_path("../..", __FILE__)
24
- VERSION = "12.20.3"
24
+ VERSION = "12.21.1"
25
25
  end
26
26
 
27
27
  #
@@ -22,8 +22,16 @@ describe Chef::Mixin::PowershellOut, windows_only: true do
22
22
  include Chef::Mixin::PowershellOut
23
23
 
24
24
  describe "#powershell_out" do
25
- it "runs a powershell command and collects stdout" do
26
- expect(powershell_out("get-process").run_command.stdout).to match /Handles\s+NPM\(K\)\s+PM\(K\)\s+WS\(K\)\s+VM\(M\)\s+CPU\(s\)\s+Id\s+/
25
+ context "for windows version less than 10", windows_lt_10: true do
26
+ it "runs a powershell command and collects stdout" do
27
+ expect(powershell_out("get-process").run_command.stdout).to match /Handles\s+NPM\(K\)\s+PM\(K\)\s+WS\(K\)\s+VM\(M\)\s+CPU\(s\)\s+Id\s+/
28
+ end
29
+ end
30
+
31
+ context "for windows version greater than 10", windows_gte_10: true do
32
+ it "runs a powershell command and collects stdout" do
33
+ expect(powershell_out("get-process").run_command.stdout).to match /Handles\s+NPM\(K\)\s+PM\(K\)\s+WS\(K\)\s+CPU\(s\)\s+Id\s+SI\s+ProcessName\s+/
34
+ end
27
35
  end
28
36
 
29
37
  it "does not raise exceptions when the command is invalid" do
@@ -32,8 +40,16 @@ describe Chef::Mixin::PowershellOut, windows_only: true do
32
40
  end
33
41
 
34
42
  describe "#powershell_out!" do
35
- it "runs a powershell command and collects stdout" do
36
- expect(powershell_out!("get-process").run_command.stdout).to match /Handles\s+NPM\(K\)\s+PM\(K\)\s+WS\(K\)\s+VM\(M\)\s+CPU\(s\)\s+Id\s+/
43
+ context "for windows version less than 10", windows_lt_10: true do
44
+ it "runs a powershell command and collects stdout" do
45
+ expect(powershell_out!("get-process").run_command.stdout).to match /Handles\s+NPM\(K\)\s+PM\(K\)\s+WS\(K\)\s+VM\(M\)\s+CPU\(s\)\s+Id\s+/
46
+ end
47
+ end
48
+
49
+ context "for windows version less than 10", windows_gte_10: true do
50
+ it "runs a powershell command and collects stdout" do
51
+ expect(powershell_out("get-process").run_command.stdout).to match /Handles\s+NPM\(K\)\s+PM\(K\)\s+WS\(K\)\s+CPU\(s\)\s+Id\s+SI\s+ProcessName\s+/
52
+ end
37
53
  end
38
54
 
39
55
  it "raises exceptions when the command is invalid" do
@@ -335,19 +335,6 @@ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestree" end
335
335
  end
336
336
  end
337
337
 
338
- describe "when group name length is more than 256", :windows_only do
339
- let!(:group_name) do
340
- "theoldmanwalkingdownthestreetalwayshadagood\
341
- smileonhisfacetheoldmanwalkingdownthestreetalwayshadagoodsmileonhisface\
342
- theoldmanwalkingdownthestreetalwayshadagoodsmileonhisfacetheoldmanwalking\
343
- downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" end
344
-
345
- it "should not create a group" do
346
- expect { group_resource.run_action(:create) }.to raise_error(ArgumentError)
347
- group_should_not_exist(group_name)
348
- end
349
- end
350
-
351
338
  # not_supported_on_solaris because of the use of excluded_members
352
339
  describe "should raise an error when same member is included in the members and excluded_members", :not_supported_on_solaris do
353
340
  it "should raise an error" do
@@ -359,6 +346,25 @@ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" end
359
346
  end
360
347
  end
361
348
 
349
+ # Note:This testcase is written separately from the `group create action` defined above because
350
+ # for group name > 256, Windows 2016 returns "The parameter is incorrect"
351
+ context "group create action: when group name length is more than 256", :windows_only do
352
+ let!(:group_name) do
353
+ "theoldmanwalkingdownthestreetalwayshadagood\
354
+ smileonhisfacetheoldmanwalkingdownthestreetalwayshadagoodsmileonhisface\
355
+ theoldmanwalkingdownthestreetalwayshadagoodsmileonhisfacetheoldmanwalking\
356
+ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" end
357
+
358
+ it "should not create a group" do
359
+ expect { group_resource.run_action(:create) }.to raise_error(ArgumentError)
360
+ if windows_gte_10?
361
+ expect { Chef::Util::Windows::NetGroup.new(group_name).local_get_members }.to raise_error(ArgumentError, /The parameter is incorrect./)
362
+ else
363
+ group_should_not_exist(group_name)
364
+ end
365
+ end
366
+ end
367
+
362
368
  describe "group remove action" do
363
369
  describe "when there is a group" do
364
370
  before do
@@ -639,7 +639,7 @@ describe Chef::Provider::User::Useradd, metadata do
639
639
  # TODO: platform_family should be setup in spec_helper w/ tags
640
640
  if %w{opensuse}.include?(OHAI_SYSTEM["platform_family"]) ||
641
641
  (%w{suse}.include?(OHAI_SYSTEM["platform_family"]) &&
642
- OHAI_SYSTEM["platform_version"].to_f < 12.1)
642
+ OHAI_SYSTEM["platform_version"].to_f < 12.0)
643
643
  # suse 11.x gets this right:
644
644
  it "errors out trying to unlock the user" do
645
645
  expect(@error).to be_a(Mixlib::ShellOut::ShellCommandFailed)
@@ -146,6 +146,8 @@ RSpec.configure do |config|
146
146
  config.filter_run_excluding :windows64_only => true unless windows64?
147
147
  config.filter_run_excluding :windows32_only => true unless windows32?
148
148
  config.filter_run_excluding :windows_nano_only => true unless windows_nano_server?
149
+ config.filter_run_excluding :windows_gte_10 => true unless windows_gte_10?
150
+ config.filter_run_excluding :windows_lt_10 => true if windows_gte_10?
149
151
  config.filter_run_excluding :ruby64_only => true unless ruby_64bit?
150
152
  config.filter_run_excluding :ruby32_only => true unless ruby_32bit?
151
153
  config.filter_run_excluding :windows_powershell_dsc_only => true unless windows_powershell_dsc?
@@ -67,6 +67,11 @@ def windows_2012r2?
67
67
  (host_version && host_version.start_with?("6.3"))
68
68
  end
69
69
 
70
+ def windows_gte_10?
71
+ return false unless windows?
72
+ Gem::Requirement.new(">= 10").satisfied_by?(Gem::Version.new(host_version))
73
+ end
74
+
70
75
  def host_version
71
76
  @host_version ||= begin
72
77
  wmi = WmiLite::Wmi.new
@@ -191,6 +191,18 @@ describe Chef::CookbookSynchronizer do
191
191
  allow(synchronizer).to receive(:cache).and_return(file_cache)
192
192
  synchronizer.remove_deleted_files
193
193
  end
194
+
195
+ it "removes files not in the manifest" do
196
+ not_in_manifest_cb_file = %w{cookbooks/valid1/test/deleted.rb cookbooks/valid1/spec/deleted.rb}
197
+ expect(file_cache).to receive(:find).with(File.join(%w{cookbooks ** {*,.*}})).and_return(not_in_manifest_cb_file)
198
+ expect(synchronizer).to receive(:have_cookbook?).with("valid1").at_least(:once).and_return(true)
199
+ expect(file_cache).to receive(:delete).with("cookbooks/valid1/test/deleted.rb")
200
+ expect(file_cache).to receive(:delete).with("cookbooks/valid1/spec/deleted.rb")
201
+ expect(synchronizer).to receive(:cookbook_segment).with("valid1", "test").at_least(:once).and_return(nil)
202
+ expect(synchronizer).to receive(:cookbook_segment).with("valid1", "spec").at_least(:once).and_return(nil)
203
+ allow(synchronizer).to receive(:cache).and_return(file_cache)
204
+ synchronizer.remove_deleted_files
205
+ end
194
206
  end
195
207
 
196
208
  let(:cookbook_a_default_recipe_tempfile) do
@@ -49,7 +49,21 @@ describe Chef::Formatters::ErrorDescription do
49
49
 
50
50
  describe "#display" do
51
51
  before do
52
- stub_const("RUBY_PLATFORM", "ruby-foo-9000")
52
+ stub_const("Chef::VERSION", "1.2.3")
53
+ stub_const("RUBY_DESCRIPTION", "ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]")
54
+ allow(subject).to receive(:caller) { Kernel.caller + ["/test/bin/chef-client:1:in `<main>'"] }
55
+ allow(File).to receive(:realpath).and_call_original
56
+ allow(File).to receive(:realpath).with("/test/bin/chef-client").and_return("/test/bin/chef-client")
57
+ end
58
+
59
+ around do |ex|
60
+ old_program_name = $PROGRAM_NAME
61
+ begin
62
+ $PROGRAM_NAME = "chef-client"
63
+ ex.run
64
+ ensure
65
+ $PROGRAM_NAME = old_program_name
66
+ end
53
67
  end
54
68
 
55
69
  context "when no sections have been added" do
@@ -60,9 +74,12 @@ describe Chef::Formatters::ErrorDescription do
60
74
  test title
61
75
  ================================================================================
62
76
 
63
- Platform:
64
- ---------
65
- ruby-foo-9000
77
+ System Info:
78
+ ------------
79
+ chef_version=1.2.3
80
+ ruby=ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
81
+ program_name=chef-client
82
+ executable=/test/bin/chef-client
66
83
 
67
84
  END
68
85
  end
@@ -84,9 +101,37 @@ test heading
84
101
  ------------
85
102
  test text
86
103
 
87
- Platform:
88
- ---------
89
- ruby-foo-9000
104
+ System Info:
105
+ ------------
106
+ chef_version=1.2.3
107
+ ruby=ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
108
+ program_name=chef-client
109
+ executable=/test/bin/chef-client
110
+
111
+ END
112
+ end
113
+
114
+ end
115
+
116
+ context "when node object is available" do
117
+ it "should output the expected sections" do
118
+ # This can't be in a before block because the spec-wide helper calls a
119
+ # reset on global values.
120
+ Chef.set_node({ "platform" => "openvms", "platform_version" => "8.4-2L1" })
121
+ subject.display(out)
122
+ expect(out.out.string).to eq <<-END
123
+ ================================================================================
124
+ test title
125
+ ================================================================================
126
+
127
+ System Info:
128
+ ------------
129
+ chef_version=1.2.3
130
+ platform=openvms
131
+ platform_version=8.4-2L1
132
+ ruby=ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
133
+ program_name=chef-client
134
+ executable=/test/bin/chef-client
90
135
 
91
136
  END
92
137
  end
@@ -192,34 +192,34 @@ describe Chef::ProviderResolver do
192
192
  stub_service_providers(:debian, :invokercd, :upstart, :systemd)
193
193
  end
194
194
 
195
- it "when only the SysV init script exists, it returns a Service::Debian provider" do
195
+ it "when both the SysV init and Systemd script exists, it returns a Service::Debian provider" do
196
196
  stub_service_configs(:initd, :systemd)
197
197
  expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
198
198
  end
199
199
 
200
- it "when both SysV and Upstart scripts exist, it returns a Service::Upstart provider" do
200
+ it "when SysV, Upstart, and Systemd scripts exist, it returns a Service::Systemd provider" do
201
201
  stub_service_configs(:initd, :upstart, :systemd)
202
202
  expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
203
203
  end
204
204
 
205
- it "when only the Upstart script exists, it returns a Service::Upstart provider" do
205
+ it "when both the Upstart and Systemd scripts exists, it returns a Service::Systemd provider" do
206
206
  stub_service_configs(:upstart, :systemd)
207
207
  expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
208
208
  end
209
209
 
210
- it "when both do not exist, it calls the old style provider resolver and returns a Debian Provider" do
210
+ it "when both do not exist, it calls the old style provider resolver and returns a Systemd Provider" do
211
211
  stub_service_configs(:systemd)
212
212
  expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
213
213
  end
214
214
 
215
- it "when only the SysV init script exists, it returns a Service::Debian provider" do
215
+ it "when only the SysV init script exists, it returns a Service::Systemd provider" do
216
216
  stub_service_configs(:initd)
217
- expect(resolved_provider).to eql(Chef::Provider::Service::Debian)
217
+ expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
218
218
  end
219
219
 
220
- it "when both SysV and Upstart scripts exist, it returns a Service::Upstart provider" do
220
+ it "when both SysV and Upstart scripts exist, it returns a Service::Systemd provider" do
221
221
  stub_service_configs(:initd, :upstart)
222
- expect(resolved_provider).to eql(Chef::Provider::Service::Upstart)
222
+ expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
223
223
  end
224
224
 
225
225
  it "when only the Upstart script exists, it returns a Service::Upstart provider" do
@@ -227,7 +227,7 @@ describe Chef::ProviderResolver do
227
227
  expect(resolved_provider).to eql(Chef::Provider::Service::Upstart)
228
228
  end
229
229
 
230
- it "when both do not exist, it calls the old style provider resolver and returns a Debian Provider" do
230
+ it "when both do not exist, it calls the old style provider resolver and returns a Systemd Provider" do
231
231
  stub_service_configs
232
232
  expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
233
233
  end
@@ -410,7 +410,7 @@ describe Chef::ProviderResolver do
410
410
  stub_service_providers(:debian, :invokercd, :upstart, :systemd)
411
411
  stub_service_configs(:initd, :upstart)
412
412
  mock_shellout_command("/bin/systemctl list-unit-files", exitstatus: 1)
413
- expect(resolved_provider).to eql(Chef::Provider::Service::Upstart)
413
+ expect(resolved_provider).to eql(Chef::Provider::Service::Systemd)
414
414
  end
415
415
  end
416
416
 
@@ -4,7 +4,7 @@ begin
4
4
 
5
5
  namespace :changelog do
6
6
  # Fetch the latest version from mixlib-install
7
- latest_stable_version = Mixlib::Install.available_versions("chef", "stable").last
7
+ latest_stable_version = Mixlib::Install.available_versions("chef", "stable").select { |n| n.start_with? "12" }.last
8
8
 
9
9
  # Take the changelog from the latest stable release and put it into history.
10
10
  task :archive do
@@ -17,13 +17,11 @@ begin
17
17
  # recent stable version and HEAD.
18
18
  GitHubChangelogGenerator::RakeTask.new :update do |config|
19
19
  config.future_release = "v#{Chef::VERSION}"
20
- config.between_tags = ["v#{latest_stable_version}", "v#{Chef::VERSION}"]
20
+ config.since_tag = "v#{latest_stable_version}"
21
+ config.release_branch = "chef-12"
21
22
  config.max_issues = 0
22
23
  config.add_issues_wo_labels = false
23
- config.enhancement_labels = "enhancement,Enhancement,New Feature,Feature".split(",")
24
- config.bug_labels = "bug,Bug,Improvement,Upstream Bug".split(",")
25
- config.exclude_labels = "duplicate,question,invalid,wontfix,no_changelog,Exclude From Changelog,Question,Discussion,Meta: Exclude From Changelog".split(",")
26
- config.header = "This changelog reflects the current state of chef's master branch on github and may not reflect the current released version of chef, which is [![Gem Version](https://badge.fury.io/rb/chef.svg)](https://badge.fury.io/rb/chef)."
24
+ config.header = "This changelog reflects the current state of chef's chef-12 branch on github and may not reflect the current released version of chef, which is [![Gem Version](https://badge.fury.io/rb/chef.svg)](https://badge.fury.io/rb/chef)."
27
25
  end
28
26
  end
29
27
 
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: 12.20.3
4
+ version: 12.21.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-30 00:00:00.000000000 Z
11
+ date: 2017-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-config
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 12.20.3
19
+ version: 12.21.1
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: 12.20.3
26
+ version: 12.21.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mixlib-cli
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -249,6 +249,9 @@ dependencies:
249
249
  - - ">="
250
250
  - !ruby/object:Gem::Version
251
251
  version: '4.8'
252
+ - - "<"
253
+ - !ruby/object:Gem::Version
254
+ version: '13'
252
255
  type: :runtime
253
256
  prerelease: false
254
257
  version_requirements: !ruby/object:Gem::Requirement
@@ -256,6 +259,9 @@ dependencies:
256
259
  - - ">="
257
260
  - !ruby/object:Gem::Version
258
261
  version: '4.8'
262
+ - - "<"
263
+ - !ruby/object:Gem::Version
264
+ version: '13'
259
265
  - !ruby/object:Gem::Dependency
260
266
  name: plist
261
267
  requirement: !ruby/object:Gem::Requirement