leftovers 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/exe/leftovers +1 -1
- data/leftovers.gemspec +5 -2
- data/lib/config/rails.yml +1 -0
- data/lib/config/ruby.yml +8 -5
- data/lib/config/{selenium.yml → selenium-webdriver.yml} +0 -0
- data/lib/leftovers.rb +22 -17
- data/lib/leftovers/argument_rule.rb +29 -19
- data/lib/leftovers/ast/builder.rb +3 -0
- data/lib/leftovers/ast/node.rb +40 -54
- data/lib/leftovers/backports.rb +8 -28
- data/lib/leftovers/cli.rb +16 -10
- data/lib/leftovers/collector.rb +4 -4
- data/lib/leftovers/config.rb +38 -11
- data/lib/leftovers/core_ext.rb +7 -5
- data/lib/leftovers/definition.rb +7 -7
- data/lib/leftovers/definition_set.rb +0 -4
- data/lib/leftovers/file.rb +1 -1
- data/lib/leftovers/file_collector.rb +13 -16
- data/lib/leftovers/file_list.rb +9 -14
- data/lib/leftovers/haml.rb +9 -12
- data/lib/leftovers/hash_rule.rb +12 -10
- data/lib/leftovers/merged_config.rb +9 -8
- data/lib/leftovers/name_rule.rb +62 -17
- data/lib/leftovers/rake_task.rb +3 -3
- data/lib/leftovers/reporter.rb +1 -1
- data/lib/leftovers/rule.rb +22 -14
- data/lib/leftovers/transform_rule.rb +21 -23
- data/lib/leftovers/value_rule.rb +5 -4
- data/lib/leftovers/version.rb +1 -1
- metadata +49 -7
data/lib/leftovers/hash_rule.rb
CHANGED
@@ -6,34 +6,36 @@ require_relative 'name_rule'
|
|
6
6
|
|
7
7
|
module Leftovers
|
8
8
|
class HashRule
|
9
|
-
|
9
|
+
# :nocov:
|
10
|
+
using ::Leftovers::SetCaseEq if defined?(::Leftovers::SetCaseEq)
|
11
|
+
# :nocov:
|
12
|
+
|
13
|
+
def initialize(patterns) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
10
14
|
keys = []
|
11
15
|
pairs = []
|
12
16
|
Leftovers.each_or_self(patterns) do |pat|
|
13
17
|
if pat.is_a?(Hash) && pat[:value]
|
14
18
|
pairs << [
|
15
|
-
|
16
|
-
|
19
|
+
NameRule.wrap(pat[:keyword] || pat[:index]),
|
20
|
+
ValueRule.new(pat[:value])
|
17
21
|
]
|
18
22
|
else
|
19
|
-
keys << NameRule.
|
23
|
+
keys << NameRule.wrap(pat)
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
23
|
-
@keys =
|
27
|
+
@keys = NameRule.wrap(keys, false)
|
24
28
|
|
25
29
|
@pairs = (pairs unless pairs.empty?)
|
26
30
|
|
27
31
|
freeze
|
28
32
|
end
|
29
33
|
|
30
|
-
def match_pair?(
|
31
|
-
return true if @keys
|
34
|
+
def match_pair?(key, value_node)
|
35
|
+
return true if @keys === key
|
32
36
|
|
33
37
|
@pairs&.any? do |(key_rule, value_rule)|
|
34
|
-
|
35
|
-
|
36
|
-
(!value_rule || value_rule.match?(value_node))
|
38
|
+
key_rule === key && value_rule.match?(value_node)
|
37
39
|
end
|
38
40
|
end
|
39
41
|
end
|
@@ -9,18 +9,19 @@ module Leftovers
|
|
9
9
|
def initialize
|
10
10
|
@configs = []
|
11
11
|
@loaded_configs = Set.new
|
12
|
-
self
|
13
|
-
self
|
12
|
+
self << :ruby
|
13
|
+
self << project_config
|
14
14
|
load_bundled_gem_config
|
15
15
|
end
|
16
16
|
|
17
|
-
def <<(config)
|
17
|
+
def <<(config) # rubocop:disable Metrics/MethodLength
|
18
|
+
config = Leftovers::Config.new(config) unless config.is_a?(Leftovers::Config)
|
18
19
|
return if @loaded_configs.include?(config.name)
|
19
20
|
|
20
21
|
unmemoize
|
21
22
|
@configs << config
|
22
23
|
@loaded_configs << config.name
|
23
|
-
config.gems.each { |gem| self
|
24
|
+
config.gems.each { |gem| self << gem }
|
24
25
|
end
|
25
26
|
|
26
27
|
def project_config
|
@@ -45,7 +46,8 @@ module Leftovers
|
|
45
46
|
def test_paths
|
46
47
|
@test_paths ||= FastIgnore.new(
|
47
48
|
include_rules: @configs.flat_map(&:test_paths),
|
48
|
-
gitignore: false
|
49
|
+
gitignore: false,
|
50
|
+
root: Leftovers.pwd
|
49
51
|
)
|
50
52
|
end
|
51
53
|
|
@@ -60,11 +62,10 @@ module Leftovers
|
|
60
62
|
private
|
61
63
|
|
62
64
|
def load_bundled_gem_config
|
63
|
-
Leftovers.try_require('bundler')
|
64
|
-
return unless defined?(Bundler)
|
65
|
+
return unless Leftovers.try_require('bundler')
|
65
66
|
|
66
67
|
Bundler.locked_gems.specs.each do |spec|
|
67
|
-
self
|
68
|
+
self << spec.name
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|
data/lib/leftovers/name_rule.rb
CHANGED
@@ -3,51 +3,96 @@
|
|
3
3
|
require 'set'
|
4
4
|
module Leftovers
|
5
5
|
class NameRule
|
6
|
-
|
6
|
+
# :nocov:
|
7
|
+
using ::Leftovers::SetCaseEq if defined?(::Leftovers::SetCaseEq)
|
8
|
+
# :nocov:
|
7
9
|
|
8
|
-
|
10
|
+
module TrueReturner
|
11
|
+
def self.===(_value)
|
12
|
+
true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module FalseReturner
|
17
|
+
def self.===(_value)
|
18
|
+
false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :syms, :regexp
|
23
|
+
|
24
|
+
def self.wrap(patterns, default = true) # rubocop:disable Metrics/PerceivedComplexity, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/AbcSize
|
9
25
|
regexps = []
|
10
26
|
syms = Set.new
|
11
|
-
|
27
|
+
|
28
|
+
Leftovers.each_or_self(patterns) do |pat| # rubocop:disable Metrics/BlockLength
|
29
|
+
# can't have these as part of the case statement because case equality
|
30
|
+
next if pat == Leftovers::NameRule::TrueReturner
|
31
|
+
next if pat == Leftovers::NameRule::FalseReturner
|
32
|
+
|
12
33
|
case pat
|
34
|
+
when nil
|
35
|
+
nil # do nothing
|
13
36
|
when Leftovers::NameRule
|
14
|
-
syms.merge(pat.
|
15
|
-
|
16
|
-
regexps.concat(pat.regexp) if pat.regexp
|
37
|
+
pat.syms.is_a?(Set) ? syms.merge(pat.syms) : syms << pat.syms
|
38
|
+
regexps << pat.regexp
|
17
39
|
when String
|
18
40
|
syms.merge(pat.split(/\s+/).map(&:to_sym))
|
41
|
+
when Symbol
|
42
|
+
syms << pat
|
43
|
+
when Integer
|
44
|
+
syms << pat
|
45
|
+
when Set
|
46
|
+
syms.merge(pat)
|
47
|
+
when Regexp
|
48
|
+
regexps << pat
|
19
49
|
when Hash
|
20
50
|
if pat[:match]
|
21
|
-
regexps << /\A#{
|
51
|
+
regexps << /\A#{pat[:match]}\z/
|
52
|
+
elsif pat[:matches]
|
53
|
+
regexps << /\A#{pat[:matches]}\z/
|
22
54
|
elsif pat[:has_prefix] && pat[:has_suffix]
|
23
55
|
regexps << /\A#{Regexp.escape(pat[:has_prefix])}.*#{Regexp.escape(pat[:has_suffix])}\z/
|
24
56
|
elsif pat[:has_prefix]
|
25
57
|
regexps << /\A#{Regexp.escape(pat[:has_prefix])}/
|
26
58
|
elsif pat[:has_suffix]
|
27
59
|
regexps << /#{Regexp.escape(pat[:has_suffix])}\z/
|
60
|
+
else
|
61
|
+
raise Leftovers::ConfigError, "Invalid value for name #{pat}, "\
|
62
|
+
'valid keys are matches, has_prefix, has_suffix'
|
28
63
|
end
|
64
|
+
else
|
65
|
+
raise Leftovers::ConfigError, "Invalid value type for name #{pat}, "\
|
66
|
+
'valid types are a String, or an object with keys matches, has_prefix, has_suffix'
|
29
67
|
end
|
30
68
|
end
|
31
69
|
|
32
|
-
if syms.length <=
|
33
|
-
|
34
|
-
|
70
|
+
syms = syms.first if syms.length <= 1
|
71
|
+
|
72
|
+
regexp = if regexps.empty?
|
73
|
+
nil
|
35
74
|
else
|
36
|
-
|
37
|
-
@syms = syms
|
75
|
+
Regexp.union(regexps).freeze
|
38
76
|
end
|
39
77
|
|
40
|
-
|
41
|
-
|
78
|
+
if syms && regexp
|
79
|
+
new(syms, regexp)
|
42
80
|
else
|
43
|
-
|
81
|
+
syms || regexp || (
|
82
|
+
default ? ::Leftovers::NameRule::TrueReturner : ::Leftovers::NameRule::FalseReturner
|
83
|
+
)
|
44
84
|
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def initialize(syms, regexp)
|
88
|
+
@syms = syms
|
89
|
+
@regexp = regexp
|
45
90
|
|
46
91
|
freeze
|
47
92
|
end
|
48
93
|
|
49
|
-
def
|
50
|
-
@
|
94
|
+
def ===(sym)
|
95
|
+
@syms === sym || @regexp === sym
|
51
96
|
end
|
52
97
|
end
|
53
98
|
end
|
data/lib/leftovers/rake_task.rb
CHANGED
@@ -49,9 +49,9 @@ module Leftovers
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def run(argv)
|
52
|
-
Leftovers::CLI.new(argv: argv)
|
53
|
-
|
54
|
-
|
52
|
+
exitstatus = Leftovers::CLI.new(argv: argv).run
|
53
|
+
|
54
|
+
exit exitstatus unless exitstatus == 0
|
55
55
|
end
|
56
56
|
|
57
57
|
def argv_or_default(task_argv)
|
data/lib/leftovers/reporter.rb
CHANGED
@@ -4,7 +4,7 @@ module Leftovers
|
|
4
4
|
class Reporter
|
5
5
|
def call(definition)
|
6
6
|
Leftovers.puts(
|
7
|
-
"\e[36m#{definition.full_location}\e[0m #{definition
|
7
|
+
"\e[36m#{definition.full_location}\e[0m #{definition} \e[2m#{definition.highlighted_source("\e[33m", "\e[0;2m")}\e[0m" # rubocop:disable Layout/LineLength
|
8
8
|
)
|
9
9
|
end
|
10
10
|
end
|
data/lib/leftovers/rule.rb
CHANGED
@@ -6,6 +6,10 @@ require 'fast_ignore'
|
|
6
6
|
|
7
7
|
module Leftovers
|
8
8
|
class Rule
|
9
|
+
# :nocov:
|
10
|
+
using ::Leftovers::SetCaseEq if defined?(::Leftovers::SetCaseEq)
|
11
|
+
# :nocov:
|
12
|
+
|
9
13
|
def self.wrap(rules)
|
10
14
|
case rules
|
11
15
|
when Array then rules.flat_map { |r| wrap(r) }
|
@@ -28,29 +32,33 @@ module Leftovers
|
|
28
32
|
path: nil,
|
29
33
|
paths: nil
|
30
34
|
)
|
31
|
-
raise
|
32
|
-
raise
|
33
|
-
raise
|
34
|
-
raise
|
35
|
-
if skip && (defines || calls)
|
36
|
-
raise
|
35
|
+
raise Leftovers::ConfigError, 'Only use one of name/names' if name && names
|
36
|
+
raise Leftovers::ConfigError, 'Only use one of path/paths' if path && paths
|
37
|
+
raise Leftovers::ConfigError, 'Only use one of call/calls' if call && calls
|
38
|
+
raise Leftovers::ConfigError, 'Only use one of define/defines' if define && defines
|
39
|
+
if skip && (defines || calls || define || call)
|
40
|
+
raise Leftovers::ConfigError, "skip can't exist with defines or calls"
|
37
41
|
end
|
38
42
|
|
39
|
-
@name_matcher = NameRule.
|
40
|
-
|
43
|
+
@name_matcher = NameRule.wrap(name || names)
|
44
|
+
if path || paths
|
45
|
+
@path = FastIgnore.new(include_rules: path || paths, gitignore: false, root: Leftovers.pwd)
|
46
|
+
end
|
41
47
|
@skip = skip
|
42
48
|
|
43
49
|
begin
|
44
50
|
@calls = ArgumentRule.wrap(calls)
|
45
|
-
rescue ArgumentError => e
|
46
|
-
raise e, "#{e.message} for calls
|
51
|
+
rescue ArgumentError, Leftovers::ConfigError => e
|
52
|
+
raise e, "#{e.message} for calls", e.backtrace
|
47
53
|
end
|
48
54
|
|
49
55
|
begin
|
50
56
|
@defines = ArgumentRule.wrap(defines, definer: true)
|
51
|
-
rescue ArgumentError => e
|
52
|
-
raise e, "#{e.message} for defines
|
57
|
+
rescue ArgumentError, Leftovers::ConfigError => e
|
58
|
+
raise e, "#{e.message} for defines", e.backtrace
|
53
59
|
end
|
60
|
+
rescue ArgumentError, Leftovers::ConfigError => e
|
61
|
+
raise e, "#{e.message} for #{Array(name || names).map(&:to_s).join(', ')}", e.backtrace
|
54
62
|
end
|
55
63
|
|
56
64
|
def filename?(file)
|
@@ -59,8 +67,8 @@ module Leftovers
|
|
59
67
|
@path.allowed?(file)
|
60
68
|
end
|
61
69
|
|
62
|
-
def match?(name,
|
63
|
-
@name_matcher
|
70
|
+
def match?(name, file)
|
71
|
+
@name_matcher === name && filename?(file)
|
64
72
|
end
|
65
73
|
|
66
74
|
def calls(node)
|
@@ -37,9 +37,7 @@ module Leftovers
|
|
37
37
|
replace_with
|
38
38
|
}.freeze
|
39
39
|
|
40
|
-
VALID_TRANSFORMS =
|
41
|
-
# more possible transformations
|
42
|
-
# gsub sub tr tr_s
|
40
|
+
VALID_TRANSFORMS = CUSTOM_TRANSFORMS + RUBY_STRING_METHODS + ACTIVESUPPORT_STRING_METHODS
|
43
41
|
def initialize(transforms)
|
44
42
|
@transforms = prepare_transforms(transforms)
|
45
43
|
|
@@ -58,9 +56,9 @@ module Leftovers
|
|
58
56
|
def prepare_transforms(transforms) # rubocop:disable Metrics/MethodLength
|
59
57
|
transforms.map do |key, value|
|
60
58
|
unless VALID_TRANSFORMS.include?(key)
|
61
|
-
raise
|
62
|
-
invalid transform key: (#{key}: #{value})
|
63
|
-
Valid transform keys are #{
|
59
|
+
raise Leftovers::ConfigError, <<~MESSAGE
|
60
|
+
invalid transform key: (#{key}: #{value})
|
61
|
+
Valid transform keys are #{VALID_TRANSFORMS.join(', ')}
|
64
62
|
MESSAGE
|
65
63
|
end
|
66
64
|
|
@@ -74,18 +72,18 @@ module Leftovers
|
|
74
72
|
HASH_VALUE_TRANSFORMS = %i{add_prefix add_suffix}.freeze
|
75
73
|
HASH_VALUE_KEYS = %i{from_argument joiner}.freeze
|
76
74
|
def prepare_hash_value(method, hash) # rubocop:disable Metrics/MethodLength
|
77
|
-
raise
|
78
|
-
invalid transform value (#{
|
79
|
-
Hash values are only valid for #{HASH_VALUE_TRANSFORMS}
|
75
|
+
raise Leftovers::ConfigError, <<~MESSAGE unless HASH_VALUE_TRANSFORMS.include?(method)
|
76
|
+
invalid transform value (#{method}: #{hash.inspect}).
|
77
|
+
Hash values are only valid for #{HASH_VALUE_TRANSFORMS.join(', ')}
|
80
78
|
MESSAGE
|
81
79
|
|
82
80
|
hash = hash.map do |k, v|
|
83
|
-
raise
|
81
|
+
raise Leftovers::ConfigError, <<~MESSAGE unless HASH_VALUE_KEYS.include?(k)
|
84
82
|
invalid transform value argument (#{method}: { #{k}: #{v} }).
|
85
|
-
|
83
|
+
Valid keys are #{HASH_VALUE_KEYS.join(', ')}
|
86
84
|
MESSAGE
|
87
85
|
|
88
|
-
[k, v.to_sym]
|
86
|
+
[k, (v.respond_to?(:to_sym) ? v.to_sym : v)]
|
89
87
|
end.to_h
|
90
88
|
|
91
89
|
["#{method}_dynamic", hash]
|
@@ -143,26 +141,26 @@ module Leftovers
|
|
143
141
|
end
|
144
142
|
|
145
143
|
def add_prefix_dynamic(string, method_node)
|
146
|
-
|
144
|
+
prefix = dynamic_value(@add_prefix_dynamic, method_node)
|
145
|
+
"#{prefix}#{@add_prefix_dynamic[:joiner] if prefix}#{string}"
|
147
146
|
end
|
148
147
|
|
149
148
|
def add_suffix_dynamic(string, method_node)
|
150
|
-
|
149
|
+
suffix = dynamic_value(@add_suffix_dynamic, method_node)
|
150
|
+
"#{string}#{@add_suffix_dynamic[:joiner] if suffix}#{suffix}"
|
151
151
|
end
|
152
152
|
|
153
153
|
def dynamic_value(value, method_node)
|
154
|
-
method_node
|
154
|
+
method_node[value[:from_argument]] if value[:from_argument]
|
155
155
|
end
|
156
156
|
|
157
157
|
def activesupport_available?(method) # rubocop:disable Metrics/MethodLength
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
)
|
165
|
-
|
158
|
+
message = <<~MESSAGE
|
159
|
+
Tried transforming a string using an activesupport method (#{method}), but the activesupport gem was not available
|
160
|
+
`gem install activesupport`
|
161
|
+
MESSAGE
|
162
|
+
Leftovers.try_require('active_support/core_ext/string', message: message)
|
163
|
+
Leftovers.try_require('active_support/inflections', message: message)
|
166
164
|
Leftovers.try_require(::File.join(Leftovers.pwd, 'config', 'initializers', 'inflections.rb'))
|
167
165
|
|
168
166
|
defined?(ActiveSupport)
|
data/lib/leftovers/value_rule.rb
CHANGED
@@ -9,19 +9,20 @@ module Leftovers
|
|
9
9
|
Leftovers.each_or_self(values) do |value|
|
10
10
|
case value
|
11
11
|
when Hash
|
12
|
-
raise
|
12
|
+
raise Leftovers::ConfigError, "invalid value #{value.inspect}" unless value[:type]
|
13
13
|
|
14
14
|
value_types.merge(
|
15
15
|
Array(value[:type]).map do |v|
|
16
16
|
case v
|
17
|
-
when 'String'
|
18
|
-
when 'Symbol'
|
17
|
+
when 'String' then :str
|
18
|
+
when 'Symbol' then :sym
|
19
|
+
when 'Integer' then :int
|
19
20
|
else v.to_s.downcase.to_sym
|
20
21
|
end
|
21
22
|
end
|
22
23
|
)
|
23
24
|
else
|
24
|
-
|
25
|
+
literal_values << value
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
data/lib/leftovers/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leftovers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dana Sherson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
103
|
+
version: '0.82'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
110
|
+
version: '0.82'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rubocop-performance
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,48 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '1.35'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: simplecov
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 0.18.5
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.18.5
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov-console
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: tty_string
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.2.1
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.2.1
|
139
181
|
- !ruby/object:Gem::Dependency
|
140
182
|
name: spellr
|
141
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,14 +198,14 @@ dependencies:
|
|
156
198
|
requirements:
|
157
199
|
- - ">="
|
158
200
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
201
|
+
version: 0.11.0
|
160
202
|
type: :runtime
|
161
203
|
prerelease: false
|
162
204
|
version_requirements: !ruby/object:Gem::Requirement
|
163
205
|
requirements:
|
164
206
|
- - ">="
|
165
207
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
208
|
+
version: 0.11.0
|
167
209
|
- !ruby/object:Gem::Dependency
|
168
210
|
name: parallel
|
169
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,7 +268,7 @@ files:
|
|
226
268
|
- lib/config/rollbar.yml
|
227
269
|
- lib/config/rspec.yml
|
228
270
|
- lib/config/ruby.yml
|
229
|
-
- lib/config/selenium.yml
|
271
|
+
- lib/config/selenium-webdriver.yml
|
230
272
|
- lib/config/sidekiq.yml
|
231
273
|
- lib/config/simplecov.yml
|
232
274
|
- lib/config/will_paginate.yml
|