rubocop-minitest 0.22.2 → 0.32.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +5 -5
- data/config/default.yml +82 -1
- data/lib/rubocop/cop/generator.rb +1 -1
- data/lib/rubocop/cop/minitest/assert_instance_of.rb +18 -2
- data/lib/rubocop/cop/minitest/assert_match.rb +4 -1
- data/lib/rubocop/cop/minitest/assert_operator.rb +58 -0
- data/lib/rubocop/cop/minitest/assert_output.rb +1 -2
- data/lib/rubocop/cop/minitest/assert_path_exists.rb +9 -4
- data/lib/rubocop/cop/minitest/assert_same.rb +26 -0
- data/lib/rubocop/cop/minitest/assert_truthy.rb +10 -0
- data/lib/rubocop/cop/minitest/assert_with_expected_argument.rb +7 -1
- data/lib/rubocop/cop/minitest/empty_line_before_assertion_methods.rb +101 -0
- data/lib/rubocop/cop/minitest/global_expectations.rb +3 -1
- data/lib/rubocop/cop/minitest/lifecycle_hooks_order.rb +100 -0
- data/lib/rubocop/cop/minitest/literal_as_actual_argument.rb +16 -5
- data/lib/rubocop/cop/minitest/multiple_assertions.rb +23 -4
- data/lib/rubocop/cop/minitest/no_assertions.rb +1 -8
- data/lib/rubocop/cop/minitest/no_test_cases.rb +35 -0
- data/lib/rubocop/cop/minitest/non_public_test_method.rb +55 -0
- data/lib/rubocop/cop/minitest/refute_equal.rb +2 -3
- data/lib/rubocop/cop/minitest/refute_false.rb +11 -1
- data/lib/rubocop/cop/minitest/refute_instance_of.rb +18 -2
- data/lib/rubocop/cop/minitest/refute_match.rb +4 -1
- data/lib/rubocop/cop/minitest/refute_operator.rb +58 -0
- data/lib/rubocop/cop/minitest/refute_path_exists.rb +9 -4
- data/lib/rubocop/cop/minitest/refute_same.rb +26 -0
- data/lib/rubocop/cop/minitest/return_in_test_method.rb +44 -0
- data/lib/rubocop/cop/minitest/skip_without_reason.rb +66 -0
- data/lib/rubocop/cop/minitest/test_file_name.rb +46 -0
- data/lib/rubocop/cop/minitest/test_method_name.rb +1 -12
- data/lib/rubocop/cop/minitest/useless_assertion.rb +75 -0
- data/lib/rubocop/cop/minitest_cops.rb +16 -3
- data/lib/rubocop/cop/mixin/argument_range_helper.rb +0 -6
- data/lib/rubocop/cop/mixin/instance_of_assertion_handleable.rb +48 -0
- data/lib/rubocop/cop/mixin/minitest_cop_rule.rb +16 -5
- data/lib/rubocop/cop/mixin/minitest_exploration_helpers.rb +32 -11
- data/lib/rubocop/cop/mixin/predicate_assertion_handleable.rb +1 -1
- data/lib/rubocop/minitest/assert_offense.rb +47 -6
- data/lib/rubocop/minitest/version.rb +1 -1
- metadata +20 -21
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require_relative 'mixin/argument_range_helper'
|
4
4
|
require_relative 'mixin/in_delta_mixin'
|
5
|
+
require_relative 'mixin/instance_of_assertion_handleable'
|
5
6
|
require_relative 'mixin/minitest_cop_rule'
|
6
7
|
require_relative 'mixin/minitest_exploration_helpers'
|
7
8
|
require_relative 'mixin/nil_assertion_handleable'
|
@@ -10,6 +11,7 @@ require_relative 'minitest/assert_empty'
|
|
10
11
|
require_relative 'minitest/assert_empty_literal'
|
11
12
|
require_relative 'minitest/assert_equal'
|
12
13
|
require_relative 'minitest/assert_in_delta'
|
14
|
+
require_relative 'minitest/assert_operator'
|
13
15
|
require_relative 'minitest/assert_predicate'
|
14
16
|
require_relative 'minitest/assert_raises_compound_body'
|
15
17
|
require_relative 'minitest/assert_raises_with_regexp_argument'
|
@@ -23,26 +25,37 @@ require_relative 'minitest/assert_match'
|
|
23
25
|
require_relative 'minitest/assert_output'
|
24
26
|
require_relative 'minitest/assert_path_exists'
|
25
27
|
require_relative 'minitest/assert_respond_to'
|
28
|
+
require_relative 'minitest/assert_same'
|
26
29
|
require_relative 'minitest/assert_silent'
|
27
30
|
require_relative 'minitest/assert_truthy'
|
28
31
|
require_relative 'minitest/duplicate_test_run'
|
32
|
+
require_relative 'minitest/empty_line_before_assertion_methods'
|
33
|
+
require_relative 'minitest/return_in_test_method'
|
34
|
+
require_relative 'minitest/test_file_name'
|
29
35
|
require_relative 'minitest/global_expectations'
|
36
|
+
require_relative 'minitest/lifecycle_hooks_order'
|
30
37
|
require_relative 'minitest/literal_as_actual_argument'
|
31
38
|
require_relative 'minitest/multiple_assertions'
|
32
39
|
require_relative 'minitest/no_assertions'
|
40
|
+
require_relative 'minitest/no_test_cases'
|
41
|
+
require_relative 'minitest/non_public_test_method'
|
33
42
|
require_relative 'minitest/refute_empty'
|
34
43
|
require_relative 'minitest/refute_false'
|
35
44
|
require_relative 'minitest/refute_equal'
|
36
45
|
require_relative 'minitest/refute_in_delta'
|
37
|
-
require_relative 'minitest/refute_kind_of'
|
38
|
-
require_relative 'minitest/refute_nil'
|
39
46
|
require_relative 'minitest/refute_includes'
|
40
|
-
require_relative 'minitest/refute_match'
|
41
47
|
require_relative 'minitest/refute_instance_of'
|
48
|
+
require_relative 'minitest/refute_kind_of'
|
49
|
+
require_relative 'minitest/refute_match'
|
50
|
+
require_relative 'minitest/refute_nil'
|
51
|
+
require_relative 'minitest/refute_operator'
|
42
52
|
require_relative 'minitest/refute_path_exists'
|
43
53
|
require_relative 'minitest/refute_predicate'
|
44
54
|
require_relative 'minitest/refute_respond_to'
|
55
|
+
require_relative 'minitest/refute_same'
|
45
56
|
require_relative 'minitest/skip_ensure'
|
57
|
+
require_relative 'minitest/skip_without_reason'
|
46
58
|
require_relative 'minitest/test_method_name'
|
47
59
|
require_relative 'minitest/unreachable_assertion'
|
48
60
|
require_relative 'minitest/unspecified_exception'
|
61
|
+
require_relative 'minitest/useless_assertion'
|
@@ -9,12 +9,6 @@ module RuboCop
|
|
9
9
|
|
10
10
|
private
|
11
11
|
|
12
|
-
def first_argument_range(node)
|
13
|
-
first_argument = node.first_argument
|
14
|
-
|
15
|
-
range_between(first_argument.source_range.begin_pos, first_argument.source_range.end_pos)
|
16
|
-
end
|
17
|
-
|
18
12
|
def first_and_second_arguments_range(node)
|
19
13
|
first_argument = node.first_argument
|
20
14
|
second_argument = node.arguments[1]
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Minitest
|
6
|
+
# Common functionality for `Minitest/AssertInstanceOf` and `Minitest/RefuteInstanceOf` cops.
|
7
|
+
# @api private
|
8
|
+
module InstanceOfAssertionHandleable
|
9
|
+
include ArgumentRangeHelper
|
10
|
+
|
11
|
+
MSG = 'Prefer using `%<prefer>s`.'
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def investigate(node, assertion_type)
|
16
|
+
return unless (first_capture, second_capture, message = instance_of_assertion?(node))
|
17
|
+
|
18
|
+
required_arguments = build_required_arguments(node, assertion_type, first_capture, second_capture)
|
19
|
+
full_arguments = [required_arguments, message.first&.source].compact.join(', ')
|
20
|
+
prefer = "#{assertion_type}_instance_of(#{full_arguments})"
|
21
|
+
|
22
|
+
add_offense(node, message: format(MSG, prefer: prefer)) do |corrector|
|
23
|
+
range = replacement_range(node, assertion_type)
|
24
|
+
|
25
|
+
corrector.replace(node.loc.selector, "#{assertion_type}_instance_of")
|
26
|
+
corrector.replace(range, required_arguments)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_required_arguments(node, method_name, first_capture, second_capture)
|
31
|
+
if node.method?(method_name)
|
32
|
+
[second_capture, first_capture]
|
33
|
+
else
|
34
|
+
[first_capture, second_capture]
|
35
|
+
end.map(&:source).join(', ')
|
36
|
+
end
|
37
|
+
|
38
|
+
def replacement_range(node, method_name)
|
39
|
+
if node.method?(method_name)
|
40
|
+
node.first_argument
|
41
|
+
else
|
42
|
+
first_and_second_arguments_range(node)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -13,9 +13,14 @@ module RuboCop
|
|
13
13
|
# define_rule :assert, target_method: :include?, preferred_method: :assert_includes
|
14
14
|
# define_rule :assert, target_method: :instance_of?, inverse: true
|
15
15
|
#
|
16
|
+
# @example Multiple target methods
|
17
|
+
# # `preferred_method` is required
|
18
|
+
# define_rule :assert, target_method: %i[match match? =~],
|
19
|
+
# preferred_method: :assert_match, inverse: 'regexp_type?'
|
20
|
+
#
|
16
21
|
# @param assertion_method [Symbol] Assertion method like `assert` or `refute`.
|
17
|
-
# @param target_method [Symbol] Method name offensed by assertion method arguments.
|
18
|
-
# @param preferred_method [Symbol]
|
22
|
+
# @param target_method [Symbol, Array<Symbol>] Method name(s) offensed by assertion method arguments.
|
23
|
+
# @param preferred_method [Symbol] Is required if passing multiple target methods. Custom method name replaced by
|
19
24
|
# autocorrection. The preferred method name that connects
|
20
25
|
# `assertion_method` and `target_method` with `_` is
|
21
26
|
# the default name.
|
@@ -24,7 +29,12 @@ module RuboCop
|
|
24
29
|
# @api private
|
25
30
|
#
|
26
31
|
def define_rule(assertion_method, target_method:, preferred_method: nil, inverse: false)
|
27
|
-
|
32
|
+
target_methods = Array(target_method)
|
33
|
+
if target_methods.size > 1 && preferred_method.nil?
|
34
|
+
raise ArgumentError, '`:preferred_method` keyword argument must be used if using more than one target method.'
|
35
|
+
end
|
36
|
+
|
37
|
+
preferred_method = "#{assertion_method}_#{target_methods.first.to_s.delete('?')}" if preferred_method.nil?
|
28
38
|
|
29
39
|
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
30
40
|
include ArgumentRangeHelper
|
@@ -37,7 +47,8 @@ module RuboCop
|
|
37
47
|
return unless node.method?(:#{assertion_method})
|
38
48
|
return unless (arguments = peel_redundant_parentheses_from(node.arguments))
|
39
49
|
return unless arguments.first&.call_type?
|
40
|
-
return if arguments.first.arguments.empty? ||
|
50
|
+
return if arguments.first.arguments.empty? ||
|
51
|
+
#{target_methods}.none? { |target_method| arguments.first.method?(target_method) }
|
41
52
|
|
42
53
|
add_offense(node, message: offense_message(arguments)) do |corrector|
|
43
54
|
autocorrect(corrector, node, arguments)
|
@@ -53,7 +64,7 @@ module RuboCop
|
|
53
64
|
new_arguments = '(' + new_arguments + ')'
|
54
65
|
end
|
55
66
|
|
56
|
-
corrector.replace(
|
67
|
+
corrector.replace(node.first_argument, new_arguments)
|
57
68
|
end
|
58
69
|
|
59
70
|
private
|
@@ -7,18 +7,21 @@ module RuboCop
|
|
7
7
|
# Helper methods for different explorations against test files and test cases.
|
8
8
|
# @api private
|
9
9
|
module MinitestExplorationHelpers
|
10
|
+
include DefNode
|
10
11
|
extend NodePattern::Macros
|
11
12
|
|
12
13
|
ASSERTION_PREFIXES = %w[assert refute].freeze
|
13
14
|
|
14
|
-
|
15
|
+
LIFECYCLE_HOOK_METHODS_IN_ORDER = %i[
|
15
16
|
before_setup
|
16
17
|
setup
|
17
18
|
after_setup
|
18
19
|
before_teardown
|
19
20
|
teardown
|
20
21
|
after_teardown
|
21
|
-
].
|
22
|
+
].freeze
|
23
|
+
|
24
|
+
LIFECYCLE_HOOK_METHODS = LIFECYCLE_HOOK_METHODS_IN_ORDER.to_set.freeze
|
22
25
|
|
23
26
|
private
|
24
27
|
|
@@ -27,20 +30,33 @@ module RuboCop
|
|
27
30
|
end
|
28
31
|
|
29
32
|
def test_case?(node)
|
30
|
-
return false unless node&.def_type? &&
|
33
|
+
return false unless (node&.def_type? && test_method?(node)) ||
|
34
|
+
(node&.block_type? && test_block?(node))
|
31
35
|
|
32
36
|
class_ancestor = node.each_ancestor(:class).first
|
33
|
-
test_class?(class_ancestor)
|
37
|
+
class_ancestor && test_class?(class_ancestor)
|
34
38
|
end
|
35
39
|
|
36
|
-
def test_cases(class_node)
|
37
|
-
|
40
|
+
def test_cases(class_node, visibility_check: true)
|
41
|
+
test_methods = class_def_nodes(class_node).select do |def_node|
|
42
|
+
test_method?(def_node, visibility_check: visibility_check)
|
43
|
+
end
|
38
44
|
|
39
45
|
# Support Active Support's `test 'example' { ... }` method.
|
40
46
|
# https://api.rubyonrails.org/classes/ActiveSupport/Testing/Declarative.html
|
41
|
-
test_blocks = class_node.each_descendant(:block).select { |block_node|
|
47
|
+
test_blocks = class_node.each_descendant(:block).select { |block_node| test_block?(block_node) }
|
48
|
+
|
49
|
+
test_methods + test_blocks
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_method?(def_node, visibility_check: true)
|
53
|
+
return false if visibility_check && non_public?(def_node)
|
42
54
|
|
43
|
-
|
55
|
+
test_case_name?(def_node.method_name) && !def_node.arguments?
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_block?(block_node)
|
59
|
+
block_node.method?(:test) || block_node.method?(:it)
|
44
60
|
end
|
45
61
|
|
46
62
|
def lifecycle_hooks(class_node)
|
@@ -77,14 +93,19 @@ module RuboCop
|
|
77
93
|
send_nodes.select { |send_node| assertion_method?(send_node) }
|
78
94
|
end
|
79
95
|
|
96
|
+
def assertions_count(node)
|
97
|
+
node.each_descendant(:send).count do |send_node|
|
98
|
+
assertion_method?(send_node)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
80
102
|
def assertion_method?(node)
|
81
|
-
return false
|
103
|
+
return false if !node.send_type? && !node.block_type? && !node.numblock_type?
|
82
104
|
|
83
105
|
ASSERTION_PREFIXES.any? do |prefix|
|
84
106
|
method_name = node.method_name
|
85
107
|
|
86
|
-
|
87
|
-
method_name.to_s.start_with?(prefix) || node.method?(:flunk)
|
108
|
+
method_name.start_with?(prefix) || node.method?(:flunk)
|
88
109
|
end
|
89
110
|
end
|
90
111
|
|
@@ -10,7 +10,7 @@ module RuboCop
|
|
10
10
|
#
|
11
11
|
# This mixin makes it easier to specify strict offense assertions
|
12
12
|
# in a declarative and visual fashion. Just type out the code that
|
13
|
-
# should generate
|
13
|
+
# should generate an offense, annotate code by writing '^'s
|
14
14
|
# underneath each character that should be highlighted, and follow
|
15
15
|
# the carets with a string (separated by a space) that is the
|
16
16
|
# message of the offense. You can include multiple offenses in
|
@@ -70,13 +70,26 @@ module RuboCop
|
|
70
70
|
# RUBY
|
71
71
|
#
|
72
72
|
# assert_no_corrections
|
73
|
+
#
|
74
|
+
# rubocop:disable Metrics/ModuleLength
|
73
75
|
module AssertOffense
|
74
76
|
private
|
75
77
|
|
76
78
|
def setup
|
77
79
|
cop_name = self.class.to_s.delete_suffix('Test')
|
80
|
+
return unless RuboCop::Cop::Minitest.const_defined?(cop_name)
|
81
|
+
|
82
|
+
@cop = RuboCop::Cop::Minitest.const_get(cop_name).new(configuration)
|
83
|
+
end
|
78
84
|
|
79
|
-
|
85
|
+
def format_offense(source, **replacements)
|
86
|
+
replacements.each do |keyword, value|
|
87
|
+
value = value.to_s
|
88
|
+
source = source.gsub("%{#{keyword}}", value)
|
89
|
+
.gsub("^{#{keyword}}", '^' * value.size)
|
90
|
+
.gsub("_{#{keyword}}", ' ' * value.size)
|
91
|
+
end
|
92
|
+
source
|
80
93
|
end
|
81
94
|
|
82
95
|
def assert_no_offenses(source, file = nil)
|
@@ -90,11 +103,12 @@ module RuboCop
|
|
90
103
|
assert_equal(source, actual_annotations.to_s)
|
91
104
|
end
|
92
105
|
|
93
|
-
def assert_offense(source, file = nil)
|
106
|
+
def assert_offense(source, file = nil, **replacements)
|
94
107
|
setup_assertion
|
95
108
|
|
96
109
|
@cop.instance_variable_get(:@options)[:autocorrect] = true
|
97
110
|
|
111
|
+
source = format_offense(source, **replacements)
|
98
112
|
expected_annotations = RuboCop::RSpec::ExpectOffense::AnnotatedSource.parse(source)
|
99
113
|
if expected_annotations.plain_source == source
|
100
114
|
raise 'Use `assert_no_offenses` to assert that no offenses are found'
|
@@ -110,7 +124,7 @@ module RuboCop
|
|
110
124
|
end
|
111
125
|
|
112
126
|
def _investigate(cop, processed_source)
|
113
|
-
team = RuboCop::Cop::Team.new([cop],
|
127
|
+
team = RuboCop::Cop::Team.new([cop], configuration, raise_error: true)
|
114
128
|
report = team.investigate(processed_source)
|
115
129
|
@last_corrector = report.correctors.first || RuboCop::Cop::Corrector.new(processed_source)
|
116
130
|
report.offenses
|
@@ -172,12 +186,39 @@ module RuboCop
|
|
172
186
|
file = file.path
|
173
187
|
end
|
174
188
|
|
175
|
-
RuboCop::ProcessedSource.new(source, ruby_version, file)
|
189
|
+
processed_source = RuboCop::ProcessedSource.new(source, ruby_version, file)
|
190
|
+
|
191
|
+
# Follow up https://github.com/rubocop/rubocop/pull/10987.
|
192
|
+
# When support for RuboCop 1.37.1 ends, this condition can be removed.
|
193
|
+
if processed_source.respond_to?(:config) && processed_source.respond_to?(:registry)
|
194
|
+
processed_source.config = configuration
|
195
|
+
processed_source.registry = registry
|
196
|
+
end
|
197
|
+
|
198
|
+
processed_source
|
199
|
+
end
|
200
|
+
|
201
|
+
def configuration
|
202
|
+
@configuration ||= if defined?(config)
|
203
|
+
config
|
204
|
+
else
|
205
|
+
RuboCop::Config.new({}, "#{Dir.pwd}/.rubocop.yml")
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def registry
|
210
|
+
@registry ||= begin
|
211
|
+
cops = configuration.keys.map { |cop| RuboCop::Cop::Registry.global.find_by_cop_name(cop) }
|
212
|
+
cops << cop_class if defined?(cop_class) && !cops.include?(cop_class)
|
213
|
+
cops.compact!
|
214
|
+
RuboCop::Cop::Registry.new(cops)
|
215
|
+
end
|
176
216
|
end
|
177
217
|
|
178
218
|
def ruby_version
|
179
|
-
|
219
|
+
RuboCop::TargetRuby::DEFAULT_VERSION
|
180
220
|
end
|
181
221
|
end
|
222
|
+
# rubocop:enable Metrics/ModuleLength
|
182
223
|
end
|
183
224
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-minitest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.32.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2023-09-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubocop
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '1.39'
|
22
22
|
- - "<"
|
23
23
|
- !ruby/object:Gem::Version
|
24
24
|
version: '2.0'
|
@@ -28,24 +28,10 @@ dependencies:
|
|
28
28
|
requirements:
|
29
29
|
- - ">="
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: '
|
31
|
+
version: '1.39'
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '2.0'
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: minitest
|
37
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '5.11'
|
42
|
-
type: :development
|
43
|
-
prerelease: false
|
44
|
-
version_requirements: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - "~>"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '5.11'
|
49
35
|
description: |
|
50
36
|
Automatic Minitest code style checking tool.
|
51
37
|
A RuboCop extension focused on enforcing Minitest best practices and coding conventions.
|
@@ -68,21 +54,27 @@ files:
|
|
68
54
|
- lib/rubocop/cop/minitest/assert_kind_of.rb
|
69
55
|
- lib/rubocop/cop/minitest/assert_match.rb
|
70
56
|
- lib/rubocop/cop/minitest/assert_nil.rb
|
57
|
+
- lib/rubocop/cop/minitest/assert_operator.rb
|
71
58
|
- lib/rubocop/cop/minitest/assert_output.rb
|
72
59
|
- lib/rubocop/cop/minitest/assert_path_exists.rb
|
73
60
|
- lib/rubocop/cop/minitest/assert_predicate.rb
|
74
61
|
- lib/rubocop/cop/minitest/assert_raises_compound_body.rb
|
75
62
|
- lib/rubocop/cop/minitest/assert_raises_with_regexp_argument.rb
|
76
63
|
- lib/rubocop/cop/minitest/assert_respond_to.rb
|
64
|
+
- lib/rubocop/cop/minitest/assert_same.rb
|
77
65
|
- lib/rubocop/cop/minitest/assert_silent.rb
|
78
66
|
- lib/rubocop/cop/minitest/assert_truthy.rb
|
79
67
|
- lib/rubocop/cop/minitest/assert_with_expected_argument.rb
|
80
68
|
- lib/rubocop/cop/minitest/assertion_in_lifecycle_hook.rb
|
81
69
|
- lib/rubocop/cop/minitest/duplicate_test_run.rb
|
70
|
+
- lib/rubocop/cop/minitest/empty_line_before_assertion_methods.rb
|
82
71
|
- lib/rubocop/cop/minitest/global_expectations.rb
|
72
|
+
- lib/rubocop/cop/minitest/lifecycle_hooks_order.rb
|
83
73
|
- lib/rubocop/cop/minitest/literal_as_actual_argument.rb
|
84
74
|
- lib/rubocop/cop/minitest/multiple_assertions.rb
|
85
75
|
- lib/rubocop/cop/minitest/no_assertions.rb
|
76
|
+
- lib/rubocop/cop/minitest/no_test_cases.rb
|
77
|
+
- lib/rubocop/cop/minitest/non_public_test_method.rb
|
86
78
|
- lib/rubocop/cop/minitest/refute_empty.rb
|
87
79
|
- lib/rubocop/cop/minitest/refute_equal.rb
|
88
80
|
- lib/rubocop/cop/minitest/refute_false.rb
|
@@ -92,16 +84,23 @@ files:
|
|
92
84
|
- lib/rubocop/cop/minitest/refute_kind_of.rb
|
93
85
|
- lib/rubocop/cop/minitest/refute_match.rb
|
94
86
|
- lib/rubocop/cop/minitest/refute_nil.rb
|
87
|
+
- lib/rubocop/cop/minitest/refute_operator.rb
|
95
88
|
- lib/rubocop/cop/minitest/refute_path_exists.rb
|
96
89
|
- lib/rubocop/cop/minitest/refute_predicate.rb
|
97
90
|
- lib/rubocop/cop/minitest/refute_respond_to.rb
|
91
|
+
- lib/rubocop/cop/minitest/refute_same.rb
|
92
|
+
- lib/rubocop/cop/minitest/return_in_test_method.rb
|
98
93
|
- lib/rubocop/cop/minitest/skip_ensure.rb
|
94
|
+
- lib/rubocop/cop/minitest/skip_without_reason.rb
|
95
|
+
- lib/rubocop/cop/minitest/test_file_name.rb
|
99
96
|
- lib/rubocop/cop/minitest/test_method_name.rb
|
100
97
|
- lib/rubocop/cop/minitest/unreachable_assertion.rb
|
101
98
|
- lib/rubocop/cop/minitest/unspecified_exception.rb
|
99
|
+
- lib/rubocop/cop/minitest/useless_assertion.rb
|
102
100
|
- lib/rubocop/cop/minitest_cops.rb
|
103
101
|
- lib/rubocop/cop/mixin/argument_range_helper.rb
|
104
102
|
- lib/rubocop/cop/mixin/in_delta_mixin.rb
|
103
|
+
- lib/rubocop/cop/mixin/instance_of_assertion_handleable.rb
|
105
104
|
- lib/rubocop/cop/mixin/minitest_cop_rule.rb
|
106
105
|
- lib/rubocop/cop/mixin/minitest_exploration_helpers.rb
|
107
106
|
- lib/rubocop/cop/mixin/nil_assertion_handleable.rb
|
@@ -118,7 +117,7 @@ metadata:
|
|
118
117
|
homepage_uri: https://docs.rubocop.org/rubocop-minitest/
|
119
118
|
changelog_uri: https://github.com/rubocop/rubocop-minitest/blob/master/CHANGELOG.md
|
120
119
|
source_code_uri: https://github.com/rubocop/rubocop-minitest
|
121
|
-
documentation_uri: https://docs.rubocop.org/rubocop-minitest/0.
|
120
|
+
documentation_uri: https://docs.rubocop.org/rubocop-minitest/0.32
|
122
121
|
bug_tracker_uri: https://github.com/rubocop/rubocop-minitest/issues
|
123
122
|
rubygems_mfa_required: 'true'
|
124
123
|
post_install_message:
|
@@ -129,14 +128,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
129
128
|
requirements:
|
130
129
|
- - ">="
|
131
130
|
- !ruby/object:Gem::Version
|
132
|
-
version: 2.
|
131
|
+
version: 2.7.0
|
133
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
133
|
requirements:
|
135
134
|
- - ">="
|
136
135
|
- !ruby/object:Gem::Version
|
137
136
|
version: '0'
|
138
137
|
requirements: []
|
139
|
-
rubygems_version: 3.
|
138
|
+
rubygems_version: 3.4.19
|
140
139
|
signing_key:
|
141
140
|
specification_version: 4
|
142
141
|
summary: Automatic Minitest code style checking tool.
|