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 +5 -5
- data/Rakefile +0 -1
- data/config/flay.yml +1 -1
- data/config/flog.yml +1 -1
- data/config/rubocop.yml +10 -1
- data/devtools.gemspec +6 -7
- data/lib/devtools.rb +8 -7
- data/lib/devtools/config.rb +19 -17
- data/lib/devtools/flay.rb +3 -1
- data/lib/devtools/project/initializer/rake.rb +3 -1
- data/lib/devtools/project/initializer/rspec.rb +3 -1
- data/lib/devtools/rake/flay.rb +43 -18
- data/shared/spec/shared/idempotent_method_behavior.rb +2 -1
- data/spec/integration/devtools/rake/flay/verify_spec.rb +40 -7
- data/spec/spec_helper.rb +2 -3
- data/spec/unit/devtools/flay/scale/measure_spec.rb +1 -1
- data/spec/unit/devtools/project_spec.rb +2 -1
- data/tasks/metrics/coverage.rake +1 -0
- data/tasks/metrics/flog.rake +1 -0
- data/tasks/metrics/mutant.rake +1 -0
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0616e5015d96abe24a54140716e172d0c643937cacf4df99e7e425b9c809fcd4
|
4
|
+
data.tar.gz: 192fc5ed731193186e401fec71e4acd6dff379af89c926e76921a93f1c3868b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b51df5fdff2ce21a96f56cd8fd430e5a156818d0d1b822d0a9d2ce405a0511b56e988d57ea504ac0cda661d0a3c839860d229a47c1041978406a9978813106c2
|
7
|
+
data.tar.gz: 7ffa20c5a8eccb1a45ce67e80f1fb6227bfde2bf8ae622fc1a4f5a95cc1aa58f5dbd7badc3bbd46a7919ce81547e1b8104e28539ba143eb9cf34a47525d9d4fc
|
data/Rakefile
CHANGED
data/config/flay.yml
CHANGED
data/config/flog.yml
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
---
|
2
|
-
threshold:
|
2
|
+
threshold: 13.5
|
data/config/rubocop.yml
CHANGED
@@ -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
|
-
|
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:
|
data/devtools.gemspec
CHANGED
@@ -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.
|
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.
|
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.
|
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.
|
34
|
-
gem.add_runtime_dependency 'simplecov', '~> 0.
|
35
|
-
gem.add_runtime_dependency 'yard', '~> 0.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
|
data/lib/devtools.rb
CHANGED
@@ -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'
|
31
|
-
SPEC_DIRECTORY_NAME = 'spec'
|
32
|
-
RAKE_FILE_NAME = 'Rakefile'
|
33
|
-
SHARED_SPEC_PATTERN = '{shared,support}/**/*.rb'
|
34
|
-
UNIT_TEST_PATH_REGEXP = %r{\bspec/unit/}
|
35
|
-
DEFAULT_CONFIG_DIR_NAME = 'config'
|
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
|
|
data/lib/devtools/config.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
|
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'
|
16
|
-
CLASS_DELIM = ','
|
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'
|
104
|
+
FILE = 'rubocop.yml'
|
103
105
|
end # Rubocop
|
104
106
|
|
105
107
|
# Reek configuration
|
106
108
|
class Reek < self
|
107
|
-
FILE = 'reek.yml'
|
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'
|
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'
|
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'
|
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'
|
159
|
-
DEFAULT_NAME = ''
|
160
|
-
DEFAULT_STRATEGY = 'rspec'
|
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'
|
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
|
data/lib/devtools/flay.rb
CHANGED
@@ -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}'
|
51
|
+
GLOB = '**/*.{rb,erb}'
|
50
52
|
|
51
53
|
# Expand includes and filter by excludes
|
52
54
|
#
|
@@ -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
|
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
|
data/lib/devtools/rake/flay.rb
CHANGED
@@ -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
|
10
|
-
TOTAL_MISMATCH = 'Flay total is now
|
11
|
-
ABOVE_THRESHOLD = '
|
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
|
-
|
25
|
-
|
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
|
-
|
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
|
-
|
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: [] }
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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
|
data/spec/spec_helper.rb
CHANGED
@@ -3,9 +3,8 @@ require 'tempfile'
|
|
3
3
|
require 'tmpdir'
|
4
4
|
|
5
5
|
if ENV['COVERAGE'] == 'true'
|
6
|
-
|
7
|
-
|
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'
|
@@ -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)
|
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
|
data/tasks/metrics/coverage.rake
CHANGED
data/tasks/metrics/flog.rake
CHANGED
data/tasks/metrics/mutant.rake
CHANGED
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
345
|
+
rubygems_version: 2.7.3
|
346
346
|
signing_key:
|
347
347
|
specification_version: 4
|
348
348
|
summary: A metagem wrapping development tools
|