rubocop-minitest 0.22.2 → 0.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|