rubocop-minitest 0.2.1
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 +7 -0
- data/.circleci/config.yml +43 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +18 -0
- data/.gitignore +61 -0
- data/.rubocop.yml +85 -0
- data/.rubocop_todo.yml +23 -0
- data/CHANGELOG.md +30 -0
- data/CONTRIBUTING.md +68 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +82 -0
- data/Rakefile +38 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/config/default.yml +33 -0
- data/lib/rubocop-minitest.rb +14 -0
- data/lib/rubocop/cop/minitest/assert_empty.rb +50 -0
- data/lib/rubocop/cop/minitest/assert_includes.rb +60 -0
- data/lib/rubocop/cop/minitest/assert_nil.rb +45 -0
- data/lib/rubocop/cop/minitest/assert_truthy.rb +46 -0
- data/lib/rubocop/cop/minitest/refute_nil.rb +45 -0
- data/lib/rubocop/cop/minitest_cops.rb +7 -0
- data/lib/rubocop/minitest.rb +12 -0
- data/lib/rubocop/minitest/inject.rb +18 -0
- data/lib/rubocop/minitest/version.rb +7 -0
- data/manual/cops.md +10 -0
- data/manual/cops_minitest.md +123 -0
- data/manual/index.md +1 -0
- data/manual/installation.md +11 -0
- data/manual/usage.md +27 -0
- data/mkdocs.yml +13 -0
- data/readthedocs.yml +5 -0
- data/rubocop-minitest.gemspec +39 -0
- data/tasks/cops_documentation.rake +312 -0
- metadata +114 -0
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
require 'bundler/gem_tasks'
|
5
|
+
|
6
|
+
Dir['tasks/**/*.rake'].each { |t| load t }
|
7
|
+
|
8
|
+
begin
|
9
|
+
Bundler.setup(:default, :development)
|
10
|
+
rescue Bundler::BundlerError => e
|
11
|
+
warn e.message
|
12
|
+
warn 'Run `bundle install` to install missing gems'
|
13
|
+
exit e.status_code
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'rubocop/rake_task'
|
17
|
+
require 'rake/testtask'
|
18
|
+
|
19
|
+
Rake::TestTask.new do |t|
|
20
|
+
t.libs << 'test'
|
21
|
+
t.libs << 'lib'
|
22
|
+
t.test_files = FileList['test/**/*_test.rb']
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'Run RuboCop over itself'
|
26
|
+
RuboCop::RakeTask.new(:internal_investigation).tap do |task|
|
27
|
+
if RUBY_ENGINE == 'ruby' &&
|
28
|
+
RbConfig::CONFIG['host_os'] !~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
29
|
+
task.options = %w[--parallel]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
task default: %i[
|
34
|
+
documentation_syntax_check
|
35
|
+
generate_cops_documentation
|
36
|
+
test
|
37
|
+
internal_investigation
|
38
|
+
]
|
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'rubocop/minitest'
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require 'irb'
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/config/default.yml
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
Minitest:
|
2
|
+
Include:
|
3
|
+
- '**/test/**/*'
|
4
|
+
|
5
|
+
Minitest/AssertNil:
|
6
|
+
Description: 'Check if your test uses `assert_nil` instead of `assert_equal(nil, something)`.'
|
7
|
+
StyleGuide: 'https://github.com/rubocop-hq/minitest-style-guide#assert-nil'
|
8
|
+
Enabled: true
|
9
|
+
VersionAdded: '0.1'
|
10
|
+
|
11
|
+
Minitest/AssertEmpty:
|
12
|
+
Description: 'Check if your test uses `assert_empty` instead of `assert(actual.empty?)`.'
|
13
|
+
StyleGuide: 'https://github.com/rubocop-hq/minitest-style-guide#assert-empty'
|
14
|
+
Enabled: true
|
15
|
+
VersionAdded: '0.2'
|
16
|
+
|
17
|
+
Minitest/AssertIncludes:
|
18
|
+
Description: 'Check if your test uses `assert_includes` instead of `assert(collection.includes?(actual))`.'
|
19
|
+
StyleGuide: 'https://github.com/rubocop-hq/minitest-style-guide#assert-includes'
|
20
|
+
Enabled: true
|
21
|
+
VersionAdded: '0.2'
|
22
|
+
|
23
|
+
Minitest/AssertTruthy:
|
24
|
+
Description: 'Check if your test uses `assert(actual)` instead of `assert_equal(true, actual)`.'
|
25
|
+
StyleGuide: 'https://github.com/rubocop-hq/minitest-style-guide#assert-truthy'
|
26
|
+
Enabled: true
|
27
|
+
VersionAdded: '0.2'
|
28
|
+
|
29
|
+
Minitest/RefuteNil:
|
30
|
+
Description: 'Check if your test uses `refute_nil` instead of `refute_equal(nil, something)`.'
|
31
|
+
StyleGuide: 'https://github.com/rubocop-hq/minitest-style-guide#refute-nil'
|
32
|
+
Enabled: true
|
33
|
+
VersionAdded: '0.2'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'yaml'
|
5
|
+
|
6
|
+
require 'rubocop'
|
7
|
+
|
8
|
+
require_relative 'rubocop/minitest'
|
9
|
+
require_relative 'rubocop/minitest/version'
|
10
|
+
require_relative 'rubocop/minitest/inject'
|
11
|
+
|
12
|
+
RuboCop::Minitest::Inject.defaults!
|
13
|
+
|
14
|
+
require_relative 'rubocop/cop/minitest_cops'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Minitest
|
6
|
+
# Check if your test uses `assert_empty` instead of `assert(actual.empty?)`.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# assert(actual.empty?)
|
11
|
+
# assert(actual.empty?, 'the message')
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# assert_empty(actual)
|
15
|
+
# assert_empty(actual, 'the message')
|
16
|
+
#
|
17
|
+
class AssertEmpty < Cop
|
18
|
+
MSG = 'Prefer using `assert_empty(%<arguments>s)` over ' \
|
19
|
+
'`assert(%<receiver>s)`.'
|
20
|
+
|
21
|
+
def_node_matcher :assert_with_empty, <<~PATTERN
|
22
|
+
(send nil? :assert $(send $_ :empty?) $...)
|
23
|
+
PATTERN
|
24
|
+
|
25
|
+
def on_send(node)
|
26
|
+
assert_with_empty(node) do |first_receiver_arg, actual, rest_receiver_arg|
|
27
|
+
message = rest_receiver_arg.first
|
28
|
+
|
29
|
+
arguments = [actual.source, message&.source].compact.join(', ')
|
30
|
+
receiver = [first_receiver_arg.source, message&.source].compact.join(', ')
|
31
|
+
|
32
|
+
offense_message = format(MSG, arguments: arguments, receiver: receiver)
|
33
|
+
add_offense(node, message: offense_message)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def autocorrect(node)
|
38
|
+
lambda do |corrector|
|
39
|
+
assert_with_empty(node) do |_first_receiver_arg, actual, rest_receiver_arg|
|
40
|
+
message = rest_receiver_arg.first
|
41
|
+
|
42
|
+
replacement = [actual.source, message&.source].compact.join(', ')
|
43
|
+
corrector.replace(node.loc.expression, "assert_empty(#{replacement})")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Minitest
|
6
|
+
# Check if your test uses `assert_includes`
|
7
|
+
# instead of `assert(collection.includes?(actual))`.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # bad
|
11
|
+
# assert(collection.includes?(actual))
|
12
|
+
# assert(collection.includes?(actual), 'the message')
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# assert_includes(collection, actual)
|
16
|
+
# assert_includes(collection, actual, 'the message')
|
17
|
+
#
|
18
|
+
class AssertIncludes < Cop
|
19
|
+
MSG = 'Prefer using `assert_includes(%<arguments>s)` over ' \
|
20
|
+
'`assert(%<receiver>s)`.'
|
21
|
+
|
22
|
+
def_node_matcher :assert_with_includes, <<~PATTERN
|
23
|
+
(send nil? :assert $(send $_ :includes? $_) $...)
|
24
|
+
PATTERN
|
25
|
+
|
26
|
+
def on_send(node)
|
27
|
+
assert_with_includes(node) do
|
28
|
+
|first_receiver_arg, collection, actual, rest_receiver_arg|
|
29
|
+
|
30
|
+
message = rest_receiver_arg.first
|
31
|
+
arguments = node_arguments(collection, actual, message)
|
32
|
+
receiver = [first_receiver_arg.source, message&.source].compact.join(', ')
|
33
|
+
|
34
|
+
offense_message = format(MSG, arguments: arguments, receiver: receiver)
|
35
|
+
|
36
|
+
add_offense(node, message: offense_message)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def autocorrect(node)
|
41
|
+
lambda do |corrector|
|
42
|
+
assert_with_includes(node) do
|
43
|
+
|_receiver, collection, actual, rest_receiver_arg|
|
44
|
+
|
45
|
+
message = rest_receiver_arg.first
|
46
|
+
replacement = node_arguments(collection, actual, message)
|
47
|
+
corrector.replace(node.loc.expression, "assert_includes(#{replacement})")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def node_arguments(collection, actual, message)
|
55
|
+
[collection.source, actual.source, message&.source].compact.join(', ')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Minitest
|
6
|
+
# Check if your test uses `assert_nil` instead of `assert_equal(nil, something)`.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# assert_equal(nil, actual)
|
11
|
+
# assert_equal(nil, actual, 'the message')
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# assert_nil(actual)
|
15
|
+
# assert_nil(actual, 'the message')
|
16
|
+
#
|
17
|
+
class AssertNil < Cop
|
18
|
+
MSG = 'Prefer using `assert_nil(%<arguments>s)` over ' \
|
19
|
+
'`assert_equal(nil, %<arguments>s)`.'
|
20
|
+
|
21
|
+
def_node_matcher :assert_equal_with_nil, <<~PATTERN
|
22
|
+
(send nil? :assert_equal nil $_ $...)
|
23
|
+
PATTERN
|
24
|
+
|
25
|
+
def on_send(node)
|
26
|
+
assert_equal_with_nil(node) do |actual, message|
|
27
|
+
message = message.first
|
28
|
+
|
29
|
+
arguments = [actual.source, message&.source].compact.join(', ')
|
30
|
+
|
31
|
+
add_offense(node, message: format(MSG, arguments: arguments))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def autocorrect(node)
|
36
|
+
lambda do |corrector|
|
37
|
+
arguments = node.arguments.reject(&:nil_type?)
|
38
|
+
replacement = arguments.map(&:source).join(', ')
|
39
|
+
corrector.replace(node.loc.expression, "assert_nil(#{replacement})")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Minitest
|
6
|
+
# Check if your test uses `assert(actual)`
|
7
|
+
# instead of `assert_equal(true, actual)`.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # bad
|
11
|
+
# assert_equal(true, actual)
|
12
|
+
# assert_equal(true, actual, 'the message')
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# assert(actual)
|
16
|
+
# assert(actual, 'the message')
|
17
|
+
#
|
18
|
+
class AssertTruthy < Cop
|
19
|
+
MSG = 'Prefer using `assert(%<arguments>s)` over ' \
|
20
|
+
'`assert_equal(true, %<arguments>s)`.'
|
21
|
+
|
22
|
+
def_node_matcher :assert_equal_with_truthy, <<~PATTERN
|
23
|
+
(send nil? :assert_equal true $_ $...)
|
24
|
+
PATTERN
|
25
|
+
|
26
|
+
def on_send(node)
|
27
|
+
assert_equal_with_truthy(node) do |actual, rest_receiver_arg|
|
28
|
+
message = rest_receiver_arg.first
|
29
|
+
|
30
|
+
arguments = [actual.source, message&.source].compact.join(', ')
|
31
|
+
|
32
|
+
add_offense(node, message: format(MSG, arguments: arguments))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def autocorrect(node)
|
37
|
+
lambda do |corrector|
|
38
|
+
arguments = node.arguments.reject(&:true_type?)
|
39
|
+
replacement = arguments.map(&:source).join(', ')
|
40
|
+
corrector.replace(node.loc.expression, "assert(#{replacement})")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Minitest
|
6
|
+
# Check if your test uses `refute_nil` instead of `refute_equal(nil, something)`.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# refute_equal(nil, actual)
|
11
|
+
# refute_equal(nil, actual, 'the message')
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# refute_nil(actual)
|
15
|
+
# refute_nil(actual, 'the message')
|
16
|
+
#
|
17
|
+
class RefuteNil < Cop
|
18
|
+
MSG = 'Prefer using `refute_nil(%<arguments>s)` over ' \
|
19
|
+
'`refute_equal(nil, %<arguments>s)`.'
|
20
|
+
|
21
|
+
def_node_matcher :refute_equal_with_nil, <<~PATTERN
|
22
|
+
(send nil? :refute_equal nil $_ $...)
|
23
|
+
PATTERN
|
24
|
+
|
25
|
+
def on_send(node)
|
26
|
+
refute_equal_with_nil(node) do |actual, message|
|
27
|
+
message = message.first
|
28
|
+
|
29
|
+
arguments = [actual.source, message&.source].compact.join(', ')
|
30
|
+
|
31
|
+
add_offense(node, message: format(MSG, arguments: arguments))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def autocorrect(node)
|
36
|
+
lambda do |corrector|
|
37
|
+
arguments = node.arguments.reject(&:nil_type?)
|
38
|
+
replacement = arguments.map(&:source).join(', ')
|
39
|
+
corrector.replace(node.loc.expression, "refute_nil(#{replacement})")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
# RuboCop minitest project namespace
|
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
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,18 @@
|
|
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)
|
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
|
data/manual/cops.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
<!-- START_COP_LIST -->
|
2
|
+
#### Department [Minitest](cops_minitest.md)
|
3
|
+
|
4
|
+
* [Minitest/AssertEmpty](cops_minitest.md#minitestassertempty)
|
5
|
+
* [Minitest/AssertIncludes](cops_minitest.md#minitestassertincludes)
|
6
|
+
* [Minitest/AssertNil](cops_minitest.md#minitestassertnil)
|
7
|
+
* [Minitest/AssertTruthy](cops_minitest.md#minitestasserttruthy)
|
8
|
+
* [Minitest/RefuteNil](cops_minitest.md#minitestrefutenil)
|
9
|
+
|
10
|
+
<!-- END_COP_LIST -->
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# Minitest
|
2
|
+
|
3
|
+
## Minitest/AssertEmpty
|
4
|
+
|
5
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
6
|
+
--- | --- | --- | --- | ---
|
7
|
+
Enabled | Yes | Yes | 0.2 | -
|
8
|
+
|
9
|
+
Check if your test uses `assert_empty` instead of `assert(actual.empty?)`.
|
10
|
+
|
11
|
+
### Examples
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
# bad
|
15
|
+
assert(actual.empty?)
|
16
|
+
assert(actual.empty?, 'the message')
|
17
|
+
|
18
|
+
# good
|
19
|
+
assert_empty(actual)
|
20
|
+
assert_empty(actual, 'the message')
|
21
|
+
```
|
22
|
+
|
23
|
+
### References
|
24
|
+
|
25
|
+
* [https://github.com/rubocop-hq/minitest-style-guide#assert-empty](https://github.com/rubocop-hq/minitest-style-guide#assert-empty)
|
26
|
+
|
27
|
+
## Minitest/AssertIncludes
|
28
|
+
|
29
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
30
|
+
--- | --- | --- | --- | ---
|
31
|
+
Enabled | Yes | Yes | 0.2 | -
|
32
|
+
|
33
|
+
Check if your test uses `assert_includes`
|
34
|
+
instead of `assert(collection.includes?(actual))`.
|
35
|
+
|
36
|
+
### Examples
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
# bad
|
40
|
+
assert(collection.includes?(actual))
|
41
|
+
assert(collection.includes?(actual), 'the message')
|
42
|
+
|
43
|
+
# good
|
44
|
+
assert_includes(collection, actual)
|
45
|
+
assert_includes(collection, actual, 'the message')
|
46
|
+
```
|
47
|
+
|
48
|
+
### References
|
49
|
+
|
50
|
+
* [https://github.com/rubocop-hq/minitest-style-guide#assert-includes](https://github.com/rubocop-hq/minitest-style-guide#assert-includes)
|
51
|
+
|
52
|
+
## Minitest/AssertNil
|
53
|
+
|
54
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
55
|
+
--- | --- | --- | --- | ---
|
56
|
+
Enabled | Yes | Yes | 0.1 | -
|
57
|
+
|
58
|
+
Check if your test uses `assert_nil` instead of `assert_equal(nil, something)`.
|
59
|
+
|
60
|
+
### Examples
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
# bad
|
64
|
+
assert_equal(nil, actual)
|
65
|
+
assert_equal(nil, actual, 'the message')
|
66
|
+
|
67
|
+
# good
|
68
|
+
assert_nil(actual)
|
69
|
+
assert_nil(actual, 'the message')
|
70
|
+
```
|
71
|
+
|
72
|
+
### References
|
73
|
+
|
74
|
+
* [https://github.com/rubocop-hq/minitest-style-guide#assert-nil](https://github.com/rubocop-hq/minitest-style-guide#assert-nil)
|
75
|
+
|
76
|
+
## Minitest/AssertTruthy
|
77
|
+
|
78
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
79
|
+
--- | --- | --- | --- | ---
|
80
|
+
Enabled | Yes | Yes | 0.2 | -
|
81
|
+
|
82
|
+
Check if your test uses `assert(actual)`
|
83
|
+
instead of `assert_equal(true, actual)`.
|
84
|
+
|
85
|
+
### Examples
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
# bad
|
89
|
+
assert_equal(true, actual)
|
90
|
+
assert_equal(true, actual, 'the message')
|
91
|
+
|
92
|
+
# good
|
93
|
+
assert(actual)
|
94
|
+
assert(actual, 'the message')
|
95
|
+
```
|
96
|
+
|
97
|
+
### References
|
98
|
+
|
99
|
+
* [https://github.com/rubocop-hq/minitest-style-guide#assert-truthy](https://github.com/rubocop-hq/minitest-style-guide#assert-truthy)
|
100
|
+
|
101
|
+
## Minitest/RefuteNil
|
102
|
+
|
103
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
104
|
+
--- | --- | --- | --- | ---
|
105
|
+
Enabled | Yes | Yes | 0.2 | -
|
106
|
+
|
107
|
+
Check if your test uses `refute_nil` instead of `refute_equal(nil, something)`.
|
108
|
+
|
109
|
+
### Examples
|
110
|
+
|
111
|
+
```ruby
|
112
|
+
# bad
|
113
|
+
refute_equal(nil, actual)
|
114
|
+
refute_equal(nil, actual, 'the message')
|
115
|
+
|
116
|
+
# good
|
117
|
+
refute_nil(actual)
|
118
|
+
refute_nil(actual, 'the message')
|
119
|
+
```
|
120
|
+
|
121
|
+
### References
|
122
|
+
|
123
|
+
* [https://github.com/rubocop-hq/minitest-style-guide#refute-nil](https://github.com/rubocop-hq/minitest-style-guide#refute-nil)
|