rubocop-minitest 0.36.0 → 0.38.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ad79ea9356e7da6ffabb9e38d689691f31a87b3bffc156e77c071290d20aec1
4
- data.tar.gz: c142cdc5b3e0855e1d54bd6899d5a01c87b9efcc7abb60ebb6c4852c763a1199
3
+ metadata.gz: 7bd6b6a1346ed5b630ee67a043672d05c5503f55fe6d104f002193140856c1b3
4
+ data.tar.gz: 80c6c476bf82f3b285974d3516f95695957a1806f616fb4de0ad5aa0d7ba2ac7
5
5
  SHA512:
6
- metadata.gz: fda798b03c1883da9465da94ec0d70e3170f5d71a624dc29a73559f14a9888e1b43c78f1e888ef2e0e2c40a05d6f6b5cb6d2a9b5315a48136fc02b172e6b72f4
7
- data.tar.gz: daa8a4405a1815cfafd52809fce1f6cff4ac68b8af4b63038fab69da0594e8c84a8a60b2a5df40e2c89f16a04df578674e82060745ebad949297558d4b933ddc
6
+ metadata.gz: 1b6546efa373b0e0d922ef620e0bceb64047f017eabc26cdc55558f6258dd1dbd469c63a96961f8b377594d82eae0104bcfdeb19b80e4d748bf986ca96d8fd7b
7
+ data.tar.gz: 70247d05b6b0c83398307b877f27c0ddc88e88820f3efcd0e223b1f19fd052fd0ffa76c433a27f87edc55af2c28c68da6b40b4ce828553d8337a3cf172ec9314
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019-2023 Bozhidar Batsov, Jonas Arvidsson, Koichi ITO
3
+ Copyright (c) 2019-2025 Bozhidar Batsov, Jonas Arvidsson, Koichi ITO
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -30,13 +30,13 @@ ways to do this:
30
30
  Put this into your `.rubocop.yml`.
31
31
 
32
32
  ```yaml
33
- require: rubocop-minitest
33
+ plugins: rubocop-minitest
34
34
  ```
35
35
 
36
36
  Alternatively, use the following array notation when specifying multiple extensions.
37
37
 
38
38
  ```yaml
39
- require:
39
+ plugins:
40
40
  - rubocop-other-extension
41
41
  - rubocop-minitest
42
42
  ```
@@ -44,10 +44,13 @@ require:
44
44
  Now you can run `rubocop` and it will automatically load the RuboCop Minitest
45
45
  cops together with the standard cops.
46
46
 
47
+ > [!NOTE]
48
+ > The plugin system is supported in RuboCop 1.72+. In earlier versions, use `require` instead of `plugins`.
49
+
47
50
  ### Command line
48
51
 
49
52
  ```sh
50
- $ rubocop --require rubocop-minitest
53
+ $ rubocop --plugin rubocop-minitest
51
54
  ```
52
55
 
53
56
  ### Rake task
@@ -56,7 +59,7 @@ $ rubocop --require rubocop-minitest
56
59
  require 'rubocop/rake_task'
57
60
 
58
61
  RuboCop::RakeTask.new do |task|
59
- task.requires << 'rubocop-minitest'
62
+ task.plugins << 'rubocop-minitest'
60
63
  end
61
64
  ```
62
65
 
@@ -36,7 +36,7 @@ module RuboCop
36
36
 
37
37
  def on_send(node)
38
38
  assert_with_two_arguments?(node) do |_expected, message|
39
- return if message.str_type? || message.dstr_type? || MESSAGE_VARIABLES.include?(message.source)
39
+ return if message.type?(:str, :dstr) || MESSAGE_VARIABLES.include?(message.source)
40
40
 
41
41
  arguments = node.arguments.map(&:source).join(', ')
42
42
  add_offense(node, message: format(MSG, arguments: arguments))
@@ -55,8 +55,7 @@ module RuboCop
55
55
  return unless test_methods?(class_node)
56
56
  return unless parent_class_has_test_methods?(class_node)
57
57
 
58
- message = format(MSG)
59
- add_offense(class_node, message: message)
58
+ add_offense(class_node)
60
59
  end
61
60
 
62
61
  private
@@ -65,7 +65,7 @@ module RuboCop
65
65
  assertions_count_in_branches(node.branches)
66
66
  when :rescue
67
67
  assertions_count(node.body) + assertions_count_in_branches(node.branches)
68
- when :block, :numblock
68
+ when :block, :numblock, :itblock
69
69
  assertions_count(node.body)
70
70
  when *RuboCop::AST::Node::ASSIGNMENTS
71
71
  assertions_count_in_assignment(node)
@@ -36,7 +36,7 @@ module RuboCop
36
36
  private
37
37
 
38
38
  def inside_block?(node)
39
- node.ancestors.any?(&:block_type?) || node.ancestors.any?(&:numblock_type?)
39
+ node.ancestors.any?(&:any_block_type?)
40
40
  end
41
41
  end
42
42
  end
@@ -86,10 +86,10 @@ module RuboCop
86
86
 
87
87
  def valid_conditional_skip?(skip_method, ensure_node)
88
88
  if_node = skip_method.ancestors.detect(&:if_type?)
89
- return false unless ensure_node.body.if_type?
89
+ return false unless ensure_node.branch.if_type?
90
90
 
91
- match_keyword = ensure_node.body.if? ? if_node.if? : if_node.unless?
92
- match_keyword && ensure_node.body.condition == if_node.condition
91
+ match_keyword = ensure_node.branch.if? ? if_node.if? : if_node.unless?
92
+ match_keyword && ensure_node.branch.condition == if_node.condition
93
93
  end
94
94
  end
95
95
  end
@@ -49,7 +49,7 @@ module RuboCop
49
49
  def conditional_parent(node)
50
50
  return unless (parent = node.parent)
51
51
 
52
- if parent.if_type? || parent.case_type?
52
+ if parent.type?(:if, :case)
53
53
  parent
54
54
  elsif parent.when_type?
55
55
  parent.parent
@@ -67,7 +67,7 @@ module RuboCop
67
67
  def empty_composite?(node)
68
68
  return true if node.str_type? && node.value.empty?
69
69
 
70
- (node.array_type? || node.hash_type?) && node.children.empty?
70
+ node.type?(:array, :hash) && node.children.empty?
71
71
  end
72
72
  end
73
73
  end
@@ -99,11 +99,10 @@ module RuboCop
99
99
  end
100
100
  end
101
101
 
102
- # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
103
102
  def assertion_method?(node)
104
103
  return false unless node
105
104
  return assertion_method?(node.expression) if node.assignment? && node.respond_to?(:expression)
106
- return false if !node.send_type? && !node.block_type? && !node.numblock_type?
105
+ return false unless node.type?(:send, :any_block)
107
106
 
108
107
  ASSERTION_PREFIXES.any? do |prefix|
109
108
  method_name = node.method_name
@@ -111,7 +110,6 @@ module RuboCop
111
110
  method_name.start_with?(prefix) || node.method?(:flunk)
112
111
  end
113
112
  end
114
- # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
115
113
 
116
114
  def lifecycle_hook_method?(node)
117
115
  node.def_type? && LIFECYCLE_HOOK_METHODS.include?(node.method_name)
@@ -9,8 +9,7 @@ module RuboCop
9
9
  MSG = 'Prefer using `%<assertion_type>s_predicate(%<new_arguments>s)`.'
10
10
 
11
11
  def on_send(node)
12
- return unless node.first_argument
13
- return if node.first_argument.block_type? || node.first_argument.numblock_type?
12
+ return if node.first_argument&.any_block_type?
14
13
  return unless predicate_method?(node.first_argument)
15
14
  return unless node.first_argument.arguments.count.zero?
16
15
 
@@ -167,6 +167,7 @@ module RuboCop
167
167
 
168
168
  # This is just here for a pretty diff if the source actually got changed
169
169
  new_source = @last_corrector.rewrite
170
+
170
171
  assert_equal(@processed_source.buffer.source, new_source)
171
172
 
172
173
  # There is an infinite loop if a corrector is present that did not make
@@ -229,8 +230,8 @@ module RuboCop
229
230
  end
230
231
 
231
232
  def ruby_version
232
- # Prism supports parsing Ruby 3.3+.
233
- ENV['PARSER_ENGINE'] == 'parser_prism' ? 3.3 : RuboCop::TargetRuby::DEFAULT_VERSION
233
+ # Prism is the default backend parser for Ruby 3.4+.
234
+ ENV['PARSER_ENGINE'] == 'parser_prism' ? 3.4 : RuboCop::TargetRuby::DEFAULT_VERSION
234
235
  end
235
236
 
236
237
  def parser_engine
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lint_roller'
4
+
5
+ module RuboCop
6
+ module Minitest
7
+ # A plugin that integrates RuboCop Minitest with RuboCop's plugin system.
8
+ class Plugin < LintRoller::Plugin
9
+ def about
10
+ LintRoller::About.new(
11
+ name: 'rubocop-minitest',
12
+ version: Version::STRING,
13
+ homepage: 'https://github.com/rubocop/rubocop-minitest',
14
+ description: 'Automatic Minitest code style checking tool.'
15
+ )
16
+ end
17
+
18
+ def supported?(context)
19
+ context.engine == :rubocop
20
+ end
21
+
22
+ def rules(_context)
23
+ LintRoller::Rules.new(
24
+ type: :path,
25
+ config_format: :rubocop,
26
+ value: Pathname.new(__dir__).join('../../../config/default.yml')
27
+ )
28
+ end
29
+ end
30
+ end
31
+ end
@@ -3,8 +3,7 @@
3
3
  # Require this file to load code that supports testing using Minitest.
4
4
 
5
5
  require 'rubocop'
6
- require 'minitest/autorun'
7
- require 'minitest/pride'
6
+ require 'minitest'
8
7
  require_relative 'assert_offense'
9
8
 
10
9
  Minitest::Test.include RuboCop::Minitest::AssertOffense
@@ -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.36.0'
7
+ STRING = '0.38.0'
8
8
 
9
9
  def self.document_version
10
10
  STRING.match('\d+\.\d+').to_s
@@ -1,12 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RuboCop
4
- # RuboCop minitest project namespace
4
+ # RuboCop minitest project namespace.
5
5
  module Minitest
6
- PROJECT_ROOT = Pathname.new(__dir__).parent.parent.expand_path.freeze
7
- CONFIG_DEFAULT = PROJECT_ROOT.join('config', 'default.yml').freeze
8
- CONFIG = YAML.safe_load(CONFIG_DEFAULT.read).freeze
9
-
10
- private_constant(:CONFIG_DEFAULT, :PROJECT_ROOT)
11
6
  end
12
7
  end
@@ -4,8 +4,5 @@ require 'rubocop'
4
4
 
5
5
  require_relative 'rubocop/minitest'
6
6
  require_relative 'rubocop/minitest/version'
7
- require_relative 'rubocop/minitest/inject'
8
-
9
- RuboCop::Minitest::Inject.defaults!
10
-
7
+ require_relative 'rubocop/minitest/plugin'
11
8
  require_relative 'rubocop/cop/minitest_cops'
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.36.0
4
+ version: 0.38.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -10,15 +10,29 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2024-08-31 00:00:00.000000000 Z
13
+ date: 2025-04-01 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: lint_roller
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.1'
15
29
  - !ruby/object:Gem::Dependency
16
30
  name: rubocop
17
31
  requirement: !ruby/object:Gem::Requirement
18
32
  requirements:
19
33
  - - ">="
20
34
  - !ruby/object:Gem::Version
21
- version: '1.61'
35
+ version: 1.75.0
22
36
  - - "<"
23
37
  - !ruby/object:Gem::Version
24
38
  version: '2.0'
@@ -28,7 +42,7 @@ dependencies:
28
42
  requirements:
29
43
  - - ">="
30
44
  - !ruby/object:Gem::Version
31
- version: '1.61'
45
+ version: 1.75.0
32
46
  - - "<"
33
47
  - !ruby/object:Gem::Version
34
48
  version: '2.0'
@@ -38,7 +52,7 @@ dependencies:
38
52
  requirements:
39
53
  - - ">="
40
54
  - !ruby/object:Gem::Version
41
- version: 1.31.1
55
+ version: 1.38.0
42
56
  - - "<"
43
57
  - !ruby/object:Gem::Version
44
58
  version: '2.0'
@@ -48,7 +62,7 @@ dependencies:
48
62
  requirements:
49
63
  - - ">="
50
64
  - !ruby/object:Gem::Version
51
- version: 1.31.1
65
+ version: 1.38.0
52
66
  - - "<"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '2.0'
@@ -130,7 +144,7 @@ files:
130
144
  - lib/rubocop/cop/mixin/predicate_assertion_handleable.rb
131
145
  - lib/rubocop/minitest.rb
132
146
  - lib/rubocop/minitest/assert_offense.rb
133
- - lib/rubocop/minitest/inject.rb
147
+ - lib/rubocop/minitest/plugin.rb
134
148
  - lib/rubocop/minitest/support.rb
135
149
  - lib/rubocop/minitest/version.rb
136
150
  homepage:
@@ -140,9 +154,10 @@ metadata:
140
154
  homepage_uri: https://docs.rubocop.org/rubocop-minitest/
141
155
  changelog_uri: https://github.com/rubocop/rubocop-minitest/blob/master/CHANGELOG.md
142
156
  source_code_uri: https://github.com/rubocop/rubocop-minitest
143
- documentation_uri: https://docs.rubocop.org/rubocop-minitest/0.36
157
+ documentation_uri: https://docs.rubocop.org/rubocop-minitest/0.38
144
158
  bug_tracker_uri: https://github.com/rubocop/rubocop-minitest/issues
145
159
  rubygems_mfa_required: 'true'
160
+ default_lint_roller_plugin: RuboCop::Minitest::Plugin
146
161
  post_install_message:
147
162
  rdoc_options: []
148
163
  require_paths:
@@ -158,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
173
  - !ruby/object:Gem::Version
159
174
  version: '0'
160
175
  requirements: []
161
- rubygems_version: 3.5.3
176
+ rubygems_version: 3.1.6
162
177
  signing_key:
163
178
  specification_version: 4
164
179
  summary: Automatic Minitest code style checking tool.
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Minitest
5
- # Because RuboCop doesn't yet support plugins, we have to monkey patch in a
6
- # bit of our configuration.
7
- module Inject
8
- def self.defaults!
9
- path = CONFIG_DEFAULT.to_s
10
- hash = ConfigLoader.send(:load_yaml_configuration, path)
11
- config = Config.new(hash, path).tap(&:make_excludes_absolute)
12
- puts "configuration from #{path}" if ConfigLoader.debug?
13
- config = ConfigLoader.merge_with_default(config, path)
14
- ConfigLoader.instance_variable_set(:@default_configuration, config)
15
- end
16
- end
17
- end
18
- end