sevencop 0.38.0 → 0.40.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9dc6aed08986989bb0d31d172c6c08426a9581f2aac31c85a9730ba4ba2f5ea8
4
- data.tar.gz: 62a2bdf5a54bf07578bcb40c6accb56075f85ff6ff56a45435efde1836413e42
3
+ metadata.gz: 01427c343e05de1b3f41b169f44ab8e7343cbff90b7d843281f5b2a8f9ea1485
4
+ data.tar.gz: b5ba91998a6cd7f993c44205d553227e5f146c51bafe73cd0210b7a4a90dbb52
5
5
  SHA512:
6
- metadata.gz: 236dab0fff5322449648b6a99223b5800d2d9444bcaf02f0e69b1cee63c2fb0fb91b3ad792407c9ef8a79cac502e3099f460955f01e93c7da412291214e44cb6
7
- data.tar.gz: 4066d32b53e2618e2d3e138742ba0b23652c266561b36ba34670519401f4d823654a0f25f4d06b3dc3f38345cb960d69bed51e37d2025b31624d0f34d89a2675
6
+ metadata.gz: ff51acef6e03fcb4da1d5e53802150e055f8066270e742691920a66f42b3245d62689fe76c680930d53a1361741733132653ce1f134cc1ecbcbc9185367f92f8
7
+ data.tar.gz: 20dc6769ffeb7b03dc262aa720120d2b1f35de0c61b8617dafbdc7d54f8b25085118b3b01d97630525064befc99126be4d8224474a28d7c888a830e9ff5f3986
data/.rubocop.yml CHANGED
@@ -39,6 +39,7 @@ RSpec/FilePath:
39
39
  RSpecDescribeHttpEndpoint: rspec_describe_http_endpoint
40
40
  RSpecEmptyLineAfterLet: rspec_empty_line_after_let
41
41
  RSpecExamplesInSameGroup: rspec_examples_in_same_group
42
+ RSpecMatcherConsistentParentheses: rspec_matcher_consistent_parentheses
42
43
  RSpecMemoizedHelperBlockDelimiter: rspec_memoized_helper_block_delimiter
43
44
  RSpecRailsHaveHttpStatus: rspec_rails_have_http_status
44
45
 
@@ -50,6 +51,7 @@ RSpec/SpecFilePathFormat:
50
51
  RSpecDescribeHttpEndpoint: rspec_describe_http_endpoint
51
52
  RSpecEmptyLineAfterLet: rspec_empty_line_after_let
52
53
  RSpecExamplesInSameGroup: rspec_examples_in_same_group
54
+ RSpecMatcherConsistentParentheses: rspec_matcher_consistent_parentheses
53
55
  RSpecMemoizedHelperBlockDelimiter: rspec_memoized_helper_block_delimiter
54
56
  RSpecRailsHaveHttpStatus: rspec_rails_have_http_status
55
57
 
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sevencop (0.38.0)
4
+ sevencop (0.40.0)
5
5
  activesupport
6
6
  rubocop
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (7.1.3)
11
+ activesupport (7.1.3.2)
12
12
  base64
13
13
  bigdecimal
14
14
  concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -20,17 +20,16 @@ GEM
20
20
  tzinfo (~> 2.0)
21
21
  ast (2.4.2)
22
22
  base64 (0.2.0)
23
- bigdecimal (3.1.6)
23
+ bigdecimal (3.1.8)
24
24
  concurrent-ruby (1.2.3)
25
25
  connection_pool (2.4.1)
26
26
  diff-lcs (1.5.0)
27
- drb (2.2.0)
28
- ruby2_keywords
29
- i18n (1.14.1)
27
+ drb (2.2.1)
28
+ i18n (1.14.5)
30
29
  concurrent-ruby (~> 1.0)
31
30
  json (2.7.1)
32
31
  language_server-protocol (3.17.0.3)
33
- minitest (5.22.2)
32
+ minitest (5.22.3)
34
33
  mutex_m (0.2.0)
35
34
  parallel (1.24.0)
36
35
  parser (3.3.0.5)
@@ -81,7 +80,6 @@ GEM
81
80
  rubocop-capybara (~> 2.17)
82
81
  rubocop-factory_bot (~> 2.22)
83
82
  ruby-progressbar (1.13.0)
84
- ruby2_keywords (0.0.5)
85
83
  tzinfo (2.0.6)
86
84
  concurrent-ruby (~> 1.0)
87
85
  unicode-display_width (2.5.0)
data/README.md CHANGED
@@ -47,6 +47,7 @@ Note that all cops are `Enabled: false` by default.
47
47
  - [Sevencop/RSpecDescribeHttpEndpoint](lib/rubocop/cop/sevencop/rspec_describe_http_endpoint.rb)
48
48
  - [Sevencop/RSpecEmptyLineAfterLet](lib/rubocop/cop/sevencop/rspec_empty_line_after_let.rb)
49
49
  - [Sevencop/RSpecExamplesInSameGroup](lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb)
50
+ - [Sevencop/RSpecMatcherConsistentParentheses](lib/rubocop/cop/sevencop/rspec_matcher_consistent_parentheses.rb)
50
51
  - [Sevencop/RSpecMemoizedHelperBlockDelimiter](lib/rubocop/cop/sevencop/rspec_memoized_helper_block_delimiter.rb)
51
52
  - [Sevencop/RSpecRailsHaveHttpStatus](lib/rubocop/cop/sevencop/rspec_rails_have_http_status.rb)
52
53
 
data/config/default.yml CHANGED
@@ -137,6 +137,13 @@ Sevencop/RSpecExamplesInSameGroup:
137
137
  - "**/spec/controllers/**/*.rb"
138
138
  - "**/spec/requests/**/*.rb"
139
139
 
140
+ Sevencop/RSpecMatcherConsistentParentheses:
141
+ Description: |
142
+ Keep RSpec matcher parentheses style consistent.
143
+ Enabled: false
144
+ Include:
145
+ - "**/spec/**/*.rb"
146
+
140
147
  Sevencop/RSpecMemoizedHelperBlockDelimiter:
141
148
  Description: |
142
149
  Use do-end block delimiter on RSpec memoized helper.
@@ -27,6 +27,7 @@ module RuboCop
27
27
  SUPPORTED_HTTP_METHODS = %w[
28
28
  DELETE
29
29
  GET
30
+ HEAD
30
31
  PATCH
31
32
  POST
32
33
  PUT
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Sevencop
6
+ # Keep RSpec matcher parentheses style consistent.
7
+ #
8
+ # @example
9
+ # # bad
10
+ # is_expected.to eq 1
11
+ #
12
+ # # good
13
+ # is_expected.to eq(1)
14
+ class RSpecMatcherConsistentParentheses < Base
15
+ extend AutoCorrector
16
+
17
+ MSG = 'Keep matcher parentheses style consistent.'
18
+
19
+ RESTRICT_ON_SEND = %i[to].freeze
20
+
21
+ # @param [RuboCop::AST::SendNode] node
22
+ # @return [void]
23
+ def on_send(node)
24
+ return unless to?(node)
25
+
26
+ first_argument = node.first_argument
27
+ return unless inconsistent?(first_argument)
28
+
29
+ add_offense(first_argument) do |corrector|
30
+ add_parentheses(first_argument, corrector)
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ # @!method expectation?(node)
37
+ # @param [RuboCop::AST::SendNode] node
38
+ # @return [Boolean]
39
+ def_node_matcher :expectation?, <<~PATTERN
40
+ (send nil? { :is_expected :expect } ...)
41
+ PATTERN
42
+
43
+ # @param [RuboCop::AST::Node, nil] node
44
+ # @return [Boolean]
45
+ def inconsistent?(node)
46
+ node.send_type? && missing_parentheses?(node)
47
+ end
48
+
49
+ # @param [RuboCop::AST::SendNode] node
50
+ # @return [Boolean]
51
+ def missing_parentheses?(node)
52
+ !node.arguments.empty? &&
53
+ !node.operator_method? &&
54
+ !node.parenthesized?
55
+ end
56
+
57
+ # @param [RuboCop::AST::SendNode] node
58
+ # @return [Boolean]
59
+ def to?(node)
60
+ expectation?(node.receiver)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sevencop
4
- VERSION = '0.38.0'
4
+ VERSION = '0.40.0'
5
5
  end
data/lib/sevencop.rb CHANGED
@@ -23,5 +23,6 @@ require_relative 'rubocop/cop/sevencop/rails_where_not'
23
23
  require_relative 'rubocop/cop/sevencop/rspec_describe_http_endpoint'
24
24
  require_relative 'rubocop/cop/sevencop/rspec_empty_line_after_let'
25
25
  require_relative 'rubocop/cop/sevencop/rspec_examples_in_same_group'
26
+ require_relative 'rubocop/cop/sevencop/rspec_matcher_consistent_parentheses'
26
27
  require_relative 'rubocop/cop/sevencop/rspec_memoized_helper_block_delimiter'
27
28
  require_relative 'rubocop/cop/sevencop/rspec_rails_have_http_status'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sevencop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.38.0
4
+ version: 0.40.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-19 00:00:00.000000000 Z
11
+ date: 2024-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -75,6 +75,7 @@ files:
75
75
  - lib/rubocop/cop/sevencop/rspec_describe_http_endpoint.rb
76
76
  - lib/rubocop/cop/sevencop/rspec_empty_line_after_let.rb
77
77
  - lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb
78
+ - lib/rubocop/cop/sevencop/rspec_matcher_consistent_parentheses.rb
78
79
  - lib/rubocop/cop/sevencop/rspec_memoized_helper_block_delimiter.rb
79
80
  - lib/rubocop/cop/sevencop/rspec_rails_have_http_status.rb
80
81
  - lib/sevencop.rb
@@ -106,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
107
  - !ruby/object:Gem::Version
107
108
  version: '0'
108
109
  requirements: []
109
- rubygems_version: 3.3.26
110
+ rubygems_version: 3.3.27
110
111
  signing_key:
111
112
  specification_version: 4
112
113
  summary: Opinionated custom cops for RuboCop.