devtools 0.1.19 → 0.1.20

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
- SHA1:
3
- metadata.gz: 1c2270dfb75f85fcf1a74d5dd59a150e0b085e53
4
- data.tar.gz: 79016f9af38770aa4a428bc60d6233d8474e0792
2
+ SHA256:
3
+ metadata.gz: 0616e5015d96abe24a54140716e172d0c643937cacf4df99e7e425b9c809fcd4
4
+ data.tar.gz: 192fc5ed731193186e401fec71e4acd6dff379af89c926e76921a93f1c3868b7
5
5
  SHA512:
6
- metadata.gz: dd74658d9892ee698a38afa92c216d7be73044af47ecf0a601ce1596b146961c583a306aba05422c3973ebcb1ffd45d0f721b2e8253f95dcd190c682e7b45c3d
7
- data.tar.gz: 31ac2c0e8bfaad3b1be3477ba39292908a098e95bb57c208ed1abd6f8bebe70930238be6c73eb89a9eaa66997de9722ca03e11ba0caf65c409c1797d84689c8e
6
+ metadata.gz: b51df5fdff2ce21a96f56cd8fd430e5a156818d0d1b822d0a9d2ce405a0511b56e988d57ea504ac0cda661d0a3c839860d229a47c1041978406a9978813106c2
7
+ data.tar.gz: 7ffa20c5a8eccb1a45ce67e80f1fb6227bfde2bf8ae622fc1a4f5a95cc1aa58f5dbd7badc3bbd46a7919ce81547e1b8104e28539ba143eb9cf34a47525d9d4fc
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- # rubocop:disable Naming/FileName
2
1
  require 'devtools'
3
2
 
4
3
  ENV['DEVTOOLS_SELF'] = '1'
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 8
3
- total_score: 115
3
+ total_score: 122
@@ -1,2 +1,2 @@
1
1
  ---
2
- threshold: 19.7
2
+ threshold: 13.5
@@ -1,9 +1,18 @@
1
1
  inherit_from: ../.rubocop.yml
2
2
 
3
+ AllCops:
4
+ TargetRubyVersion: 2.3.0
5
+
3
6
  Metrics/BlockLength:
4
7
  Exclude:
5
8
  # Ignore RSpec DSL
6
- - spec/**/*
9
+ - spec/**/*
10
+ # Ignore gemspec DSL
11
+ - '*.gemspec'
12
+
13
+ Naming/FileName:
14
+ Exclude:
15
+ - Rakefile
7
16
 
8
17
  # Avoid parameter lists longer than five parameters.
9
18
  ParameterLists:
@@ -1,7 +1,6 @@
1
- # rubocop:disable Metrics/BlockLength
2
1
  Gem::Specification.new do |gem|
3
2
  gem.name = 'devtools'
4
- gem.version = '0.1.19'
3
+ gem.version = '0.1.20'
5
4
  gem.authors = ['Markus Schirp']
6
5
  gem.email = ['mbj@schirp-dso.com']
7
6
  gem.description = 'A metagem wrapping development tools'
@@ -14,7 +13,7 @@ Gem::Specification.new do |gem|
14
13
  gem.executables = %w[]
15
14
  gem.test_files = `git ls-files -- spec`.split("\n")
16
15
  gem.extra_rdoc_files = %w[README.md]
17
- gem.required_ruby_version = '>= 2.1'
16
+ gem.required_ruby_version = '>= 2.3'
18
17
 
19
18
  gem.add_runtime_dependency 'abstract_type', '~> 0.0.7'
20
19
  gem.add_runtime_dependency 'adamantium', '~> 0.2.0'
@@ -25,13 +24,13 @@ Gem::Specification.new do |gem|
25
24
  gem.add_runtime_dependency 'mutant', '~> 0.8.14'
26
25
  gem.add_runtime_dependency 'mutant-rspec', '~> 0.8.14'
27
26
  gem.add_runtime_dependency 'procto', '~> 0.0.3'
28
- gem.add_runtime_dependency 'rake', '~> 12.0.0'
27
+ gem.add_runtime_dependency 'rake', '~> 12.3.0'
29
28
  gem.add_runtime_dependency 'reek', '~> 4.7.3'
30
29
  gem.add_runtime_dependency 'rspec', '~> 3.6.0'
31
30
  gem.add_runtime_dependency 'rspec-core', '~> 3.6.0'
32
31
  gem.add_runtime_dependency 'rspec-its', '~> 1.2.0'
33
- gem.add_runtime_dependency 'rubocop', '~> 0.51.0'
34
- gem.add_runtime_dependency 'simplecov', '~> 0.14.0'
35
- gem.add_runtime_dependency 'yard', '~> 0.9.9'
32
+ gem.add_runtime_dependency 'rubocop', '~> 0.52.1'
33
+ gem.add_runtime_dependency 'simplecov', '~> 0.15.1'
34
+ gem.add_runtime_dependency 'yard', '~> 0.9.12'
36
35
  gem.add_runtime_dependency 'yardstick', '~> 0.9.9'
37
36
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Stdlib infrastructure
2
4
  require 'pathname'
3
5
  require 'rake'
@@ -20,19 +22,18 @@ require 'simplecov'
20
22
 
21
23
  # Main devtools namespace population
22
24
  module Devtools
23
-
24
25
  ROOT = Pathname.new(__FILE__).parent.parent.freeze
25
26
  PROJECT_ROOT = Pathname.pwd.freeze
26
27
  SHARED_PATH = ROOT.join('shared').freeze
27
28
  SHARED_SPEC_PATH = SHARED_PATH.join('spec').freeze
28
29
  DEFAULT_CONFIG_PATH = ROOT.join('default/config').freeze
29
30
  RAKE_FILES_GLOB = ROOT.join('tasks/**/*.rake').to_s.freeze
30
- LIB_DIRECTORY_NAME = 'lib'.freeze
31
- SPEC_DIRECTORY_NAME = 'spec'.freeze
32
- RAKE_FILE_NAME = 'Rakefile'.freeze
33
- SHARED_SPEC_PATTERN = '{shared,support}/**/*.rb'.freeze
34
- UNIT_TEST_PATH_REGEXP = %r{\bspec/unit/}.freeze
35
- DEFAULT_CONFIG_DIR_NAME = 'config'.freeze
31
+ LIB_DIRECTORY_NAME = 'lib'
32
+ SPEC_DIRECTORY_NAME = 'spec'
33
+ RAKE_FILE_NAME = 'Rakefile'
34
+ SHARED_SPEC_PATTERN = '{shared,support}/**/*.rb'
35
+ UNIT_TEST_PATH_REGEXP = %r{\bspec/unit/}
36
+ DEFAULT_CONFIG_DIR_NAME = 'config'
36
37
 
37
38
  private_constant(*constants(false))
38
39
 
@@ -1,5 +1,6 @@
1
- module Devtools
1
+ # frozen_string_literal: true
2
2
 
3
+ module Devtools
3
4
  # Abstract base class of tool configuration
4
5
  class Config
5
6
  include Adamantium::Flat, AbstractType, Concord.new(:config_dir)
@@ -12,8 +13,8 @@ module Devtools
12
13
  # Type check against expected class
13
14
  include Concord.new(:name, :allowed_classes)
14
15
 
15
- ERROR_FORMAT = '%<name>s: Got instance of %<got>s expected %<allowed>s'.freeze
16
- CLASS_DELIM = ','.freeze
16
+ ERROR_FORMAT = '%<name>s: Got instance of %<got>s expected %<allowed>s'
17
+ CLASS_DELIM = ','
17
18
 
18
19
  # Check value for instance of expected class
19
20
  #
@@ -22,13 +23,14 @@ module Devtools
22
23
  # @return [Object]
23
24
  def call(value)
24
25
  klass = value.class
26
+ format_values = {
27
+ name: name,
28
+ got: klass,
29
+ allowed: allowed_classes.join(CLASS_DELIM)
30
+ }
25
31
 
26
32
  unless allowed_classes.any?(&klass.method(:equal?))
27
- fail TypeError, ERROR_FORMAT % {
28
- name: name,
29
- got: klass,
30
- allowed: allowed_classes.join(CLASS_DELIM)
31
- }
33
+ fail TypeError, format(ERROR_FORMAT, format_values)
32
34
  end
33
35
 
34
36
  value
@@ -99,18 +101,18 @@ module Devtools
99
101
 
100
102
  # Rubocop configuration
101
103
  class Rubocop < self
102
- FILE = 'rubocop.yml'.freeze
104
+ FILE = 'rubocop.yml'
103
105
  end # Rubocop
104
106
 
105
107
  # Reek configuration
106
108
  class Reek < self
107
- FILE = 'reek.yml'.freeze
109
+ FILE = 'reek.yml'
108
110
  end # Reek
109
111
 
110
112
  # Flay configuration
111
113
  #
112
114
  class Flay < self
113
- FILE = 'flay.yml'.freeze
115
+ FILE = 'flay.yml'
114
116
  DEFAULT_LIB_DIRS = %w[lib].freeze
115
117
  DEFAULT_EXCLUDES = %w[].freeze
116
118
 
@@ -122,7 +124,7 @@ module Devtools
122
124
 
123
125
  # Yardstick configuration
124
126
  class Yardstick < self
125
- FILE = 'yardstick.yml'.freeze
127
+ FILE = 'yardstick.yml'
126
128
  OPTIONS = %w[
127
129
  threshold
128
130
  rules
@@ -145,7 +147,7 @@ module Devtools
145
147
 
146
148
  # Flog configuration
147
149
  class Flog < self
148
- FILE = 'flog.yml'.freeze
150
+ FILE = 'flog.yml'
149
151
  DEFAULT_LIB_DIRS = %w[lib].freeze
150
152
 
151
153
  attribute :total_score, [Float]
@@ -155,9 +157,9 @@ module Devtools
155
157
 
156
158
  # Mutant configuration
157
159
  class Mutant < self
158
- FILE = 'mutant.yml'.freeze
159
- DEFAULT_NAME = ''.freeze
160
- DEFAULT_STRATEGY = 'rspec'.freeze
160
+ FILE = 'mutant.yml'
161
+ DEFAULT_NAME = ''
162
+ DEFAULT_STRATEGY = 'rspec'
161
163
 
162
164
  attribute :name, [String], default: DEFAULT_NAME
163
165
  attribute :strategy, [String], default: DEFAULT_STRATEGY
@@ -169,7 +171,7 @@ module Devtools
169
171
 
170
172
  # Devtools configuration
171
173
  class Devtools < self
172
- FILE = 'devtools.yml'.freeze
174
+ FILE = 'devtools.yml'
173
175
  DEFAULT_UNIT_TEST_TIMEOUT = 0.1 # 100ms
174
176
 
175
177
  attribute :unit_test_timeout, [Float], default: DEFAULT_UNIT_TEST_TIMEOUT
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devtools
2
4
  module Flay
3
5
  # Measure flay mass relative to size of duplicated sexps
@@ -46,7 +48,7 @@ module Devtools
46
48
  class FileList
47
49
  include Procto.call, Concord.new(:includes, :excludes)
48
50
 
49
- GLOB = '**/*.{rb,erb}'.freeze
51
+ GLOB = '**/*.{rb,erb}'
50
52
 
51
53
  # Expand includes and filter by excludes
52
54
  #
@@ -11,7 +11,9 @@ module Devtools
11
11
  #
12
12
  # @api rpivate
13
13
  def self.call
14
- FileList.glob(RAKE_FILES_GLOB).each(&::Rake.application.method(:add_import))
14
+ FileList
15
+ .glob(RAKE_FILES_GLOB)
16
+ .each(&::Rake.application.method(:add_import))
15
17
  self
16
18
  end
17
19
 
@@ -44,7 +44,9 @@ module Devtools
44
44
  #
45
45
  def enable_unit_test_timeout
46
46
  timeout = project.devtools.unit_test_timeout
47
- RSpec.configuration.around(file_path: UNIT_TEST_PATH_REGEXP) do |example|
47
+ RSpec
48
+ .configuration
49
+ .around(file_path: UNIT_TEST_PATH_REGEXP) do |example|
48
50
  Timeout.timeout(timeout, &example)
49
51
  end
50
52
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Devtools
2
4
  module Rake
3
5
  # Flay metric runner
@@ -6,39 +8,28 @@ module Devtools
6
8
  Procto.call(:verify),
7
9
  Adamantium
8
10
 
9
- BELOW_THRESHOLD = 'Adjust flay threshold down to %d'.freeze
10
- TOTAL_MISMATCH = 'Flay total is now %d, but expected %d'.freeze
11
- ABOVE_THRESHOLD = '%d chunks have a duplicate mass > %d'.freeze
11
+ BELOW_THRESHOLD = 'Adjust flay threshold down to %<mass>d'
12
+ TOTAL_MISMATCH = 'Flay total is now %<mass>d, but expected %<expected>d'
13
+ ABOVE_THRESHOLD = '%<mass>d chunks have a duplicate mass > %<threshold>d'
12
14
 
13
15
  # Verify code specified by `files` does not violate flay expectations
14
16
  #
15
17
  # @raise [SystemExit] if a violation is found
16
18
  # @return [undefined] otherwise
17
19
  #
18
- # rubocop:disable MethodLength
19
20
  #
20
21
  # @api private
21
22
  def verify
22
23
  # Run flay first to ensure the max mass matches the threshold
23
- if below_threshold?
24
- Devtools.notify_metric_violation(
25
- BELOW_THRESHOLD % largest_mass
26
- )
27
- end
28
-
29
- if total_mismatch?
30
- Devtools.notify_metric_violation(
31
- TOTAL_MISMATCH % [total_mass, total_score]
32
- )
33
- end
24
+ below_threshold_message if below_threshold?
25
+
26
+ total_mismatch_message if total_mismatch?
34
27
 
35
28
  # Run flay a second time with the threshold set
36
29
  return unless above_threshold?
37
30
 
38
31
  restricted_flay_scale.flay_report
39
- Devtools.notify_metric_violation(
40
- ABOVE_THRESHOLD % [restricted_mass_size, threshold]
41
- )
32
+ above_threshold_message
42
33
  end
43
34
 
44
35
  private
@@ -79,6 +70,40 @@ module Devtools
79
70
  !total_mass.equal?(total_score)
80
71
  end
81
72
 
73
+ # Above threshold message
74
+ #
75
+ # @return [String]
76
+ #
77
+ # @api private
78
+ def above_threshold_message
79
+ format_values = { mass: restricted_mass_size, threshold: threshold }
80
+ Devtools.notify_metric_violation(
81
+ format(ABOVE_THRESHOLD, format_values)
82
+ )
83
+ end
84
+
85
+ # Below threshold message
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @api private
90
+ def below_threshold_message
91
+ Devtools.notify_metric_violation(
92
+ format(BELOW_THRESHOLD, mass: largest_mass)
93
+ )
94
+ end
95
+
96
+ # Total mismatch message
97
+ #
98
+ # @return [String]
99
+ #
100
+ # @api private
101
+ def total_mismatch_message
102
+ Devtools.notify_metric_violation(
103
+ format(TOTAL_MISMATCH, mass: total_mass, expected: total_score)
104
+ )
105
+ end
106
+
82
107
  # Size of mass measured by `Flay::Scale` and filtered by `threshold`
83
108
  #
84
109
  # @return [Integer]
@@ -1,7 +1,8 @@
1
1
  shared_examples_for 'an idempotent method' do
2
2
  it 'is idempotent' do
3
3
  first = subject
4
- fail 'RSpec not configured for threadsafety' unless RSpec.configuration.threadsafe?
4
+ error = 'RSpec not configured for threadsafety'
5
+ fail error unless RSpec.configuration.threadsafe?
5
6
  mutex = __memoized.instance_variable_get(:@mutex)
6
7
  memoized = __memoized.instance_variable_get(:@memoized)
7
8
  mutex.synchronize { memoized.delete(:subject) }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  describe Devtools::Rake::Flay, '#verify' do
2
4
  let(:tempfile) { Tempfile.new(%w[file .rb], Dir.mktmpdir) }
3
5
  let(:file) { Pathname(tempfile.path) }
@@ -29,7 +31,7 @@ describe Devtools::Rake::Flay, '#verify' do
29
31
 
30
32
  context 'reporting' do
31
33
  let(:options) do
32
- { threshold: 3, total_score: 3, lib_dirs: directories, excludes: [] }.freeze
34
+ { threshold: 3, total_score: 3, lib_dirs: directories, excludes: [] }
33
35
  end
34
36
 
35
37
  let(:instance) { described_class.new(options) }
@@ -49,7 +51,12 @@ describe Devtools::Rake::Flay, '#verify' do
49
51
 
50
52
  context 'when theshold is too low' do
51
53
  let(:instance) do
52
- described_class.new(threshold: 0, total_score: 0, lib_dirs: directories, excludes: [])
54
+ described_class.new(
55
+ threshold: 0,
56
+ total_score: 0,
57
+ lib_dirs: directories,
58
+ excludes: []
59
+ )
53
60
  end
54
61
 
55
62
  specify do
@@ -61,7 +68,12 @@ describe Devtools::Rake::Flay, '#verify' do
61
68
 
62
69
  context 'when threshold is too high' do
63
70
  let(:instance) do
64
- described_class.new(threshold: 1000, total_score: 0, lib_dirs: directories, excludes: [])
71
+ described_class.new(
72
+ threshold: 1000,
73
+ total_score: 0,
74
+ lib_dirs: directories,
75
+ excludes: []
76
+ )
65
77
  end
66
78
 
67
79
  specify do
@@ -73,7 +85,12 @@ describe Devtools::Rake::Flay, '#verify' do
73
85
 
74
86
  context 'when total is too high' do
75
87
  let(:instance) do
76
- described_class.new(threshold: 3, total_score: 50, lib_dirs: directories, excludes: [])
88
+ described_class.new(
89
+ threshold: 3,
90
+ total_score: 50,
91
+ lib_dirs: directories,
92
+ excludes: []
93
+ )
77
94
  end
78
95
 
79
96
  specify do
@@ -105,10 +122,16 @@ Similar code found in :defn (mass = 10)
105
122
  #{file}:1
106
123
  #{file}:5
107
124
  REPORT
125
+ # rubocop:enable Layout/IndentHeredoc
108
126
  end
109
127
 
110
128
  let(:instance) do
111
- described_class.new(threshold: 3, total_score: 5, lib_dirs: directories, excludes: [])
129
+ described_class.new(
130
+ threshold: 3,
131
+ total_score: 5,
132
+ lib_dirs: directories,
133
+ excludes: []
134
+ )
112
135
  end
113
136
 
114
137
  specify do
@@ -144,7 +167,12 @@ REPORT
144
167
  end
145
168
 
146
169
  let(:instance) do
147
- described_class.new(threshold: 5, total_score: 8, lib_dirs: directories, excludes: [])
170
+ described_class.new(
171
+ threshold: 5,
172
+ total_score: 8,
173
+ lib_dirs: directories,
174
+ excludes: []
175
+ )
148
176
  end
149
177
 
150
178
  it 'sums masses for total' do
@@ -155,7 +183,12 @@ REPORT
155
183
  context 'when no duplication masses' do
156
184
  let(:ruby) { '' }
157
185
  let(:instance) do
158
- described_class.new(threshold: 0, total_score: 0, lib_dirs: directories, excludes: [])
186
+ described_class.new(
187
+ threshold: 0,
188
+ total_score: 0,
189
+ lib_dirs: directories,
190
+ excludes: []
191
+ )
159
192
  end
160
193
 
161
194
  specify do
@@ -3,9 +3,8 @@ require 'tempfile'
3
3
  require 'tmpdir'
4
4
 
5
5
  if ENV['COVERAGE'] == 'true'
6
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
- SimpleCov::Formatter::HTMLFormatter,
8
- ]
6
+ formatter = [SimpleCov::Formatter::HTMLFormatter]
7
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(formatter)
9
8
 
10
9
  SimpleCov.start do
11
10
  command_name 'spec:unit'
@@ -1,7 +1,7 @@
1
1
  describe Devtools::Flay::Scale, '#measure' do
2
2
  subject(:measure) { instance.measure }
3
3
 
4
- let(:minimum_mass) { 0 }
4
+ let(:minimum_mass) { 0 }
5
5
  let(:files) { [instance_double(File)] }
6
6
  let(:flay_masses) { { 0 => 5, 1 => 10 } }
7
7
 
@@ -5,7 +5,8 @@ RSpec.describe Devtools::Project do
5
5
  subject { object.init_rspec }
6
6
 
7
7
  it 'calls the rspec initializer' do
8
- expect(Devtools::Project::Initializer::Rspec).to receive(:call).with(Devtools.project)
8
+ expect(Devtools::Project::Initializer::Rspec)
9
+ .to receive(:call).with(Devtools.project)
9
10
  expect(subject).to be(object)
10
11
  end
11
12
  end
@@ -4,6 +4,7 @@ namespace :metrics do
4
4
  begin
5
5
  # rubocop:disable Style/ParallelAssignment
6
6
  original, ENV['COVERAGE'] = ENV['COVERAGE'], 'true'
7
+ # rubocop:enable Style/ParallelAssignment
7
8
  Rake::Task['spec:unit'].execute
8
9
  ensure
9
10
  ENV['COVERAGE'] = original
@@ -40,3 +40,4 @@ namespace :metrics do
40
40
  end
41
41
  end
42
42
  end
43
+ # rubocop:enable Metrics/BlockLength
@@ -40,3 +40,4 @@ namespace :metrics do
40
40
  end
41
41
  end
42
42
  end
43
+ # rubocop:enable Metrics/BlockLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devtools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.19
4
+ version: 0.1.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-17 00:00:00.000000000 Z
11
+ date: 2018-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: abstract_type
@@ -142,14 +142,14 @@ dependencies:
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 12.0.0
145
+ version: 12.3.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 12.0.0
152
+ version: 12.3.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: reek
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -212,42 +212,42 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 0.51.0
215
+ version: 0.52.1
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 0.51.0
222
+ version: 0.52.1
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: simplecov
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
227
  - - "~>"
228
228
  - !ruby/object:Gem::Version
229
- version: 0.14.0
229
+ version: 0.15.1
230
230
  type: :runtime
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
- version: 0.14.0
236
+ version: 0.15.1
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: yard
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
241
  - - "~>"
242
242
  - !ruby/object:Gem::Version
243
- version: 0.9.9
243
+ version: 0.9.12
244
244
  type: :runtime
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
- version: 0.9.9
250
+ version: 0.9.12
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: yardstick
253
253
  requirement: !ruby/object:Gem::Requirement
@@ -334,7 +334,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
334
334
  requirements:
335
335
  - - ">="
336
336
  - !ruby/object:Gem::Version
337
- version: '2.1'
337
+ version: '2.3'
338
338
  required_rubygems_version: !ruby/object:Gem::Requirement
339
339
  requirements:
340
340
  - - ">="
@@ -342,7 +342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
342
342
  version: '0'
343
343
  requirements: []
344
344
  rubyforge_project:
345
- rubygems_version: 2.6.13
345
+ rubygems_version: 2.7.3
346
346
  signing_key:
347
347
  specification_version: 4
348
348
  summary: A metagem wrapping development tools