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.
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.