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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +5 -5
  4. data/config/default.yml +82 -1
  5. data/lib/rubocop/cop/generator.rb +1 -1
  6. data/lib/rubocop/cop/minitest/assert_instance_of.rb +18 -2
  7. data/lib/rubocop/cop/minitest/assert_match.rb +4 -1
  8. data/lib/rubocop/cop/minitest/assert_operator.rb +58 -0
  9. data/lib/rubocop/cop/minitest/assert_output.rb +1 -2
  10. data/lib/rubocop/cop/minitest/assert_path_exists.rb +9 -4
  11. data/lib/rubocop/cop/minitest/assert_same.rb +26 -0
  12. data/lib/rubocop/cop/minitest/assert_truthy.rb +10 -0
  13. data/lib/rubocop/cop/minitest/assert_with_expected_argument.rb +7 -1
  14. data/lib/rubocop/cop/minitest/empty_line_before_assertion_methods.rb +101 -0
  15. data/lib/rubocop/cop/minitest/global_expectations.rb +3 -1
  16. data/lib/rubocop/cop/minitest/lifecycle_hooks_order.rb +100 -0
  17. data/lib/rubocop/cop/minitest/literal_as_actual_argument.rb +16 -5
  18. data/lib/rubocop/cop/minitest/multiple_assertions.rb +23 -4
  19. data/lib/rubocop/cop/minitest/no_assertions.rb +1 -8
  20. data/lib/rubocop/cop/minitest/no_test_cases.rb +35 -0
  21. data/lib/rubocop/cop/minitest/non_public_test_method.rb +55 -0
  22. data/lib/rubocop/cop/minitest/refute_equal.rb +2 -3
  23. data/lib/rubocop/cop/minitest/refute_false.rb +11 -1
  24. data/lib/rubocop/cop/minitest/refute_instance_of.rb +18 -2
  25. data/lib/rubocop/cop/minitest/refute_match.rb +4 -1
  26. data/lib/rubocop/cop/minitest/refute_operator.rb +58 -0
  27. data/lib/rubocop/cop/minitest/refute_path_exists.rb +9 -4
  28. data/lib/rubocop/cop/minitest/refute_same.rb +26 -0
  29. data/lib/rubocop/cop/minitest/return_in_test_method.rb +44 -0
  30. data/lib/rubocop/cop/minitest/skip_without_reason.rb +66 -0
  31. data/lib/rubocop/cop/minitest/test_file_name.rb +46 -0
  32. data/lib/rubocop/cop/minitest/test_method_name.rb +1 -12
  33. data/lib/rubocop/cop/minitest/useless_assertion.rb +75 -0
  34. data/lib/rubocop/cop/minitest_cops.rb +16 -3
  35. data/lib/rubocop/cop/mixin/argument_range_helper.rb +0 -6
  36. data/lib/rubocop/cop/mixin/instance_of_assertion_handleable.rb +48 -0
  37. data/lib/rubocop/cop/mixin/minitest_cop_rule.rb +16 -5
  38. data/lib/rubocop/cop/mixin/minitest_exploration_helpers.rb +32 -11
  39. data/lib/rubocop/cop/mixin/predicate_assertion_handleable.rb +1 -1
  40. data/lib/rubocop/minitest/assert_offense.rb +47 -6
  41. data/lib/rubocop/minitest/version.rb +1 -1
  42. 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] An optional param. Custom method name replaced by
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
- preferred_method = "#{assertion_method}_#{target_method.to_s.delete('?')}" if preferred_method.nil?
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? || !arguments.first.method?(:#{target_method})
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(first_argument_range(node), new_arguments)
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
- LIFECYCLE_HOOK_METHODS = %i[
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
- ].to_set.freeze
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? && test_case_name?(node.method_name)
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
- test_cases = class_def_nodes(class_node).select { |def_node| test_case_name?(def_node.method_name) }
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| block_node.method?(:test) }
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
- test_cases + test_blocks
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 unless node.send_type?
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
- # TODO: Remove the fllowing `to_s` since Ruby 2.7 that supports `Symbol#start_with?`.
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
 
@@ -28,7 +28,7 @@ module RuboCop
28
28
 
29
29
  new_arguments = new_arguments(arguments).join(', ')
30
30
 
31
- corrector.replace(first_argument_range(node), new_arguments)
31
+ corrector.replace(node.first_argument, new_arguments)
32
32
  end
33
33
 
34
34
  private
@@ -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 a offense, annotate code by writing '^'s
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
- @cop = RuboCop::Cop::Minitest.const_get(cop_name).new
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], nil, raise_error: true)
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
- 2.6
219
+ RuboCop::TargetRuby::DEFAULT_VERSION
180
220
  end
181
221
  end
222
+ # rubocop:enable Metrics/ModuleLength
182
223
  end
183
224
  end
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Minitest
5
5
  # This module holds the RuboCop Minitest version information.
6
6
  module Version
7
- STRING = '0.22.2'
7
+ STRING = '0.32.2'
8
8
 
9
9
  def self.document_version
10
10
  STRING.match('\d+\.\d+').to_s
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.22.2
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: 2022-10-01 00:00:00.000000000 Z
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: '0.90'
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: '0.90'
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.22
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.6.0
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.3.7
138
+ rubygems_version: 3.4.19
140
139
  signing_key:
141
140
  specification_version: 4
142
141
  summary: Automatic Minitest code style checking tool.