ezcater_rubocop 0.49.7 → 0.50.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 +5 -5
- data/.circleci/config.yml +3 -3
- data/.ruby-version +1 -1
- data/CHANGELOG.md +5 -19
- data/README.md +0 -3
- data/config/default.yml +0 -14
- data/ezcater_rubocop.gemspec +2 -4
- data/lib/ezcater_rubocop.rb +0 -3
- data/lib/ezcater_rubocop/version.rb +1 -1
- data/lib/rubocop/cop/ezcater/rspec_dot_not_self_dot.rb +1 -3
- data/lib/rubocop/cop/ezcater/rspec_require_browser_mock.rb +2 -2
- data/lib/rubocop/cop/ezcater/rspec_require_feature_flag_mock.rb +1 -1
- data/lib/rubocop/cop/ezcater/style_dig.rb +4 -10
- metadata +7 -10
- data/lib/rubocop/cop/ezcater/rails_configuration.rb +0 -26
- data/lib/rubocop/cop/ezcater/require_gql_error_helpers.rb +0 -35
- data/lib/rubocop/cop/ezcater/rspec_require_http_status_matcher.rb +0 -37
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 506db29e071d65b4cdb7f397b5b5d4a9251ec56f
|
|
4
|
+
data.tar.gz: ae1917de476959e962b786408bf788bae33ad31d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 02aed155f78cda26fdf898a66aae1e798bb77dca7b6aa29ab975d855ff1dbab87baacf20509dd234bbe8be7e7e87a60c68ef31d559bfd14a88e5766b60e80917
|
|
7
|
+
data.tar.gz: 1b5e49ff7b0cf8c3f66d597b02f26bc85dedbbe7a8e7e02bcf7f30c1dc746c2534f43f0c4beea6cf2bbcb361273afec8622a6044bdb833a71e459d26de34c0ed
|
data/.circleci/config.yml
CHANGED
|
@@ -4,15 +4,15 @@ jobs:
|
|
|
4
4
|
parallelism: 1
|
|
5
5
|
working_directory: ~/ezcater
|
|
6
6
|
docker:
|
|
7
|
-
- image: circleci/ruby:2.
|
|
7
|
+
- image: circleci/ruby:2.4.1
|
|
8
8
|
steps:
|
|
9
9
|
- checkout
|
|
10
10
|
|
|
11
11
|
# Restore bundle cache
|
|
12
12
|
- restore_cache:
|
|
13
13
|
keys:
|
|
14
|
-
- ruby-cache-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "ezcater_rubocop.gemspec" }}
|
|
15
|
-
- ruby-cache-{{ .Branch }}-
|
|
14
|
+
- ruby-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "ezcater_rubocop.gemspec" }}
|
|
15
|
+
- ruby-cache-{{ arch }}-{{ .Branch }}-
|
|
16
16
|
- ruby-cache-
|
|
17
17
|
|
|
18
18
|
# Bundle install dependencies
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.4.1
|
data/CHANGELOG.md
CHANGED
|
@@ -1,27 +1,13 @@
|
|
|
1
1
|
# ezcater_rubocop
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
-
|
|
3
|
+
# v0.50.0
|
|
4
|
+
- Update to rubocop v0.50.0 and rubocop-rspec v1.18.0.
|
|
5
|
+
- Do not apply `Ezcater/StyleDig` to assignments with nested access.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
- Rename `Ezcater/RspecRequireGqlErrorHelpers` cop to `Ezcater/RequireGqlErrorHelpers`.
|
|
8
|
-
|
|
9
|
-
## v0.49.5
|
|
10
|
-
- Add `Ezcater/RailsConfiguration` cop.
|
|
11
|
-
|
|
12
|
-
## v0.49.4
|
|
13
|
-
- Add `Ezcater/RspecRequireGqlErrorHelpers` cop.
|
|
14
|
-
|
|
15
|
-
## v0.49.3
|
|
16
|
-
- Do not apply `Ezcater/StyleDig` to access using a range.
|
|
17
|
-
|
|
18
|
-
## v0.49.2
|
|
19
|
-
- Do not apply `Ezcater/StyleDig` to assignments to with nested access.
|
|
20
|
-
|
|
21
|
-
## v0.49.1
|
|
7
|
+
# v0.49.1
|
|
22
8
|
- Add `Ezcater/RspecRequireBrowserMock` cop.
|
|
23
9
|
|
|
24
|
-
|
|
10
|
+
# v0.49.0
|
|
25
11
|
- Initial release.
|
|
26
12
|
- Add `Ezcater/RspecRequireFeatureFlagMock` cop.
|
|
27
13
|
- Add `Ezcater/RspecDotNotSelfDot` cop.
|
data/README.md
CHANGED
|
@@ -47,12 +47,9 @@ the latest compatible version each time that the MAJOR.MINOR version of `rubocop
|
|
|
47
47
|
is updated.
|
|
48
48
|
|
|
49
49
|
## Custom Cops
|
|
50
|
-
1. [RailsConfiguration](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/rails_configuration.rb) - Enforce use of `Rails.configuration` instead of `Rails.application.config`.
|
|
51
|
-
1. [RequireGqlErrorHelpers](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/require_gql_error_helpers.rb) - Use the helpers provided by `GQLErrors` instead of raising `GraphQL::ExecutionError` directly.
|
|
52
50
|
1. [RspecDotNotSelfDot](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/rspec_dot_not_self_dot.rb) - Enforce ".<class method>" instead of "self.<class method>" for example group description.
|
|
53
51
|
1. [RspecRequireBrowserMock](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/rspec_require_browser_mock.rb) - Enforce use of `mock_ezcater_app`, `mock_chrome_browser` & `mock_custom_browser` helpers instead of mocking `Browser` or `EzBrowser` directly.
|
|
54
52
|
1. [RspecRequireFeatureFlagMock](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/rspec_require_feature_flag_mock.rb) - Enforce use of `mock_feature_flag` helper instead of mocking `FeatureFlag.is_active?` directly.
|
|
55
|
-
1. [RspecRequireHttpStatusMatcher](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/rspec_require_http_status_matcher.rb) - Use the HTTP status code matcher, like `expect(response).to have_http_status :bad_request`, rather than `expect(response.code).to eq 400`
|
|
56
53
|
1. [StyleDig](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/style_dig.rb) - Recommend `dig` for deeply nested access.
|
|
57
54
|
|
|
58
55
|
## Development
|
data/config/default.yml
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
Ezcater/RailsConfiguration:
|
|
2
|
-
Description: 'Enforce the use of `Rails.configuration` instead of `Rails.application.config`.'
|
|
3
|
-
Enabled: true
|
|
4
|
-
|
|
5
1
|
Ezcater/RspecDotNotSelfDot:
|
|
6
2
|
Description: 'Enforce ".<class method>" instead of "self.<class method>" for example group description.'
|
|
7
3
|
Enabled: true
|
|
@@ -20,16 +16,6 @@ Ezcater/RspecRequireFeatureFlagMock:
|
|
|
20
16
|
Include:
|
|
21
17
|
- '**/*_spec.rb'
|
|
22
18
|
|
|
23
|
-
Ezcater/RspecRequireHttpStatusMatcher:
|
|
24
|
-
Description: 'Use the HTTP status code matcher, like `expect(response).to have_http_status :bad_request`, rather than `expect(response.code).to eq 400`'
|
|
25
|
-
Enabled: true
|
|
26
|
-
Include:
|
|
27
|
-
- '**/*_spec.rb'
|
|
28
|
-
|
|
29
|
-
Ezcater/RequireGqlErrorHelpers:
|
|
30
|
-
Description: 'Use the helpers provided by `GQLErrors` instead of raising `GraphQL::ExecutionError` directly.'
|
|
31
|
-
Enabled: true
|
|
32
|
-
|
|
33
19
|
Ezcater/StyleDig:
|
|
34
20
|
Description: 'Recommend `dig` for deeply nested access.'
|
|
35
21
|
Enabled: true
|
data/ezcater_rubocop.gemspec
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
lib = File.expand_path("../lib", __FILE__)
|
|
4
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
3
|
require "ezcater_rubocop/version"
|
|
@@ -37,6 +35,6 @@ Gem::Specification.new do |spec|
|
|
|
37
35
|
spec.add_development_dependency "rspec_junit_formatter"
|
|
38
36
|
spec.add_development_dependency "pry-byebug"
|
|
39
37
|
|
|
40
|
-
spec.add_runtime_dependency "rubocop", "~> 0.
|
|
41
|
-
spec.add_runtime_dependency "rubocop-rspec", "~> 1.
|
|
38
|
+
spec.add_runtime_dependency "rubocop", "~> 0.50.0"
|
|
39
|
+
spec.add_runtime_dependency "rubocop-rspec", "~> 1.18.0"
|
|
42
40
|
end
|
data/lib/ezcater_rubocop.rb
CHANGED
|
@@ -12,10 +12,7 @@ puts "configuration from #{DEFAULT_FILES}" if RuboCop::ConfigLoader.debug?
|
|
|
12
12
|
config = RuboCop::ConfigLoader.merge_with_default(config, path)
|
|
13
13
|
RuboCop::ConfigLoader.instance_variable_set(:@default_configuration, config)
|
|
14
14
|
|
|
15
|
-
require "rubocop/cop/ezcater/rails_configuration"
|
|
16
|
-
require "rubocop/cop/ezcater/require_gql_error_helpers"
|
|
17
15
|
require "rubocop/cop/ezcater/rspec_require_browser_mock"
|
|
18
16
|
require "rubocop/cop/ezcater/rspec_require_feature_flag_mock"
|
|
19
|
-
require "rubocop/cop/ezcater/rspec_require_http_status_matcher"
|
|
20
17
|
require "rubocop/cop/ezcater/rspec_dot_not_self_dot"
|
|
21
18
|
require "rubocop/cop/ezcater/style_dig"
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
1
|
module RuboCop
|
|
4
2
|
module Cop
|
|
5
3
|
module Ezcater
|
|
@@ -27,7 +25,7 @@ module RuboCop
|
|
|
27
25
|
|
|
28
26
|
def on_send(node)
|
|
29
27
|
example_group_match(node) do |doc|
|
|
30
|
-
add_offense(doc, :expression, MSG) if
|
|
28
|
+
add_offense(doc, :expression, MSG) if doc.source.match?(SELF_DOT_REGEXP)
|
|
31
29
|
end
|
|
32
30
|
end
|
|
33
31
|
|
|
@@ -21,7 +21,7 @@ module RuboCop
|
|
|
21
21
|
MSG = "Use the mocks provided by `BrowserHelpers` instead of mocking `%s`".freeze
|
|
22
22
|
|
|
23
23
|
def_node_matcher :browser_const?, <<~PATTERN
|
|
24
|
-
(const _ {:Browser
|
|
24
|
+
(const _ {:Browser :EzBrowser})
|
|
25
25
|
PATTERN
|
|
26
26
|
|
|
27
27
|
def on_const(node)
|
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def allow_send_node?(node)
|
|
50
|
-
node
|
|
50
|
+
node&.send_type? && node.method_name == :allow
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
end
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
1
|
module RuboCop
|
|
4
2
|
module Cop
|
|
5
3
|
module Ezcater
|
|
@@ -24,7 +22,7 @@ module RuboCop
|
|
|
24
22
|
MSG = "Use `dig` for nested access.".freeze
|
|
25
23
|
|
|
26
24
|
def_node_matcher :nested_access_match, <<-PATTERN
|
|
27
|
-
(send (send (send _receiver !:[]) :[]
|
|
25
|
+
(send (send (send _receiver !:[]) :[] _) :[] _)
|
|
28
26
|
PATTERN
|
|
29
27
|
|
|
30
28
|
def on_send(node)
|
|
@@ -37,10 +35,10 @@ module RuboCop
|
|
|
37
35
|
|
|
38
36
|
def autocorrect(node)
|
|
39
37
|
access_node = node
|
|
40
|
-
source_args = [access_node.
|
|
38
|
+
source_args = [access_node.first_argument.source]
|
|
41
39
|
while access_node?(access_node.children.first)
|
|
42
40
|
access_node = access_node.children.first
|
|
43
|
-
source_args << access_node.
|
|
41
|
+
source_args << access_node.first_argument.source
|
|
44
42
|
end
|
|
45
43
|
root_node = access_node.children.first
|
|
46
44
|
|
|
@@ -59,11 +57,7 @@ module RuboCop
|
|
|
59
57
|
end
|
|
60
58
|
|
|
61
59
|
def access_node?(node)
|
|
62
|
-
node
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def range?(node)
|
|
66
|
-
node.irange_type? || node.erange_type?
|
|
60
|
+
node&.send_type? && node.method_name == :[]
|
|
67
61
|
end
|
|
68
62
|
end
|
|
69
63
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ezcater_rubocop
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.50.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ezCater, Inc
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-10-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -86,28 +86,28 @@ dependencies:
|
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0.
|
|
89
|
+
version: 0.50.0
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0.
|
|
96
|
+
version: 0.50.0
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: rubocop-rspec
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 1.
|
|
103
|
+
version: 1.18.0
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 1.
|
|
110
|
+
version: 1.18.0
|
|
111
111
|
description: ezCater custom cops and shared configuration
|
|
112
112
|
email:
|
|
113
113
|
- engineering@ezcater.com
|
|
@@ -133,12 +133,9 @@ files:
|
|
|
133
133
|
- ezcater_rubocop.gemspec
|
|
134
134
|
- lib/ezcater_rubocop.rb
|
|
135
135
|
- lib/ezcater_rubocop/version.rb
|
|
136
|
-
- lib/rubocop/cop/ezcater/rails_configuration.rb
|
|
137
|
-
- lib/rubocop/cop/ezcater/require_gql_error_helpers.rb
|
|
138
136
|
- lib/rubocop/cop/ezcater/rspec_dot_not_self_dot.rb
|
|
139
137
|
- lib/rubocop/cop/ezcater/rspec_require_browser_mock.rb
|
|
140
138
|
- lib/rubocop/cop/ezcater/rspec_require_feature_flag_mock.rb
|
|
141
|
-
- lib/rubocop/cop/ezcater/rspec_require_http_status_matcher.rb
|
|
142
139
|
- lib/rubocop/cop/ezcater/style_dig.rb
|
|
143
140
|
- lib/rubocop/rspec/language/each_selector.rb
|
|
144
141
|
homepage: https://github.com/ezcater/ezcater_rubocop
|
|
@@ -162,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
162
159
|
version: '0'
|
|
163
160
|
requirements: []
|
|
164
161
|
rubyforge_project:
|
|
165
|
-
rubygems_version: 2.
|
|
162
|
+
rubygems_version: 2.6.13
|
|
166
163
|
signing_key:
|
|
167
164
|
specification_version: 4
|
|
168
165
|
summary: ezCater custom cops and shared configuration
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module RuboCop
|
|
2
|
-
module Cop
|
|
3
|
-
module Ezcater
|
|
4
|
-
class RailsConfiguration < Cop
|
|
5
|
-
MSG = "Use `Rails.configuration` instead of `Rails.application.config`.".freeze
|
|
6
|
-
RAILS_CONFIGURATION = "Rails.configuration".freeze
|
|
7
|
-
|
|
8
|
-
def_node_matcher "rails_application_config", <<-PATTERN
|
|
9
|
-
(send (send (const _ :Rails) :application) :config)
|
|
10
|
-
PATTERN
|
|
11
|
-
|
|
12
|
-
def on_send(node)
|
|
13
|
-
rails_application_config(node) do
|
|
14
|
-
add_offense(node, :expression, MSG)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def autocorrect(node)
|
|
19
|
-
lambda do |corrector|
|
|
20
|
-
corrector.replace(node.source_range, RAILS_CONFIGURATION)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module RuboCop
|
|
2
|
-
module Cop
|
|
3
|
-
module Ezcater
|
|
4
|
-
# Enforce use of GQLErrors helpers instead of throwing
|
|
5
|
-
# GraphQL::ExecutionErrors directly
|
|
6
|
-
#
|
|
7
|
-
# @example
|
|
8
|
-
#
|
|
9
|
-
# # good
|
|
10
|
-
# GQLErrors.summary_error("An error occurred")
|
|
11
|
-
# GQLErrors.request_error("You can't access this", 401)
|
|
12
|
-
# GQLErrors.field_error("is invalid", :first_name, "First Name")
|
|
13
|
-
# GQLErrors.field_errors_for(my_model, context)
|
|
14
|
-
# GQLErrors.field_errors_for(my_model, context, summary_error: "An error occurred")
|
|
15
|
-
# GQLErrors.field_errors_for(my_model, context, field_mapping: { first: :first_name })
|
|
16
|
-
#
|
|
17
|
-
# # bad
|
|
18
|
-
# GraphQL::ExecutionError.new("An error occurred")
|
|
19
|
-
# GraphQL::ExecutionError.new("You can't access this", options: { status_code: 401 })
|
|
20
|
-
class RequireGqlErrorHelpers < Cop
|
|
21
|
-
MSG = "Use the helpers provided by `GQLErrors` instead of raising `GraphQL::ExecutionError` directly.".freeze
|
|
22
|
-
|
|
23
|
-
def_node_matcher :graphql_const?, <<~PATTERN
|
|
24
|
-
(const (const _ :GraphQL) :ExecutionError)
|
|
25
|
-
PATTERN
|
|
26
|
-
|
|
27
|
-
def on_const(node)
|
|
28
|
-
return unless graphql_const?(node)
|
|
29
|
-
|
|
30
|
-
add_offense(node, :expression, MSG)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module RuboCop
|
|
4
|
-
module Cop
|
|
5
|
-
module Ezcater
|
|
6
|
-
# Enforce use of HTTP status code matchers rather than asserting on on random numbers.
|
|
7
|
-
#
|
|
8
|
-
# @example
|
|
9
|
-
#
|
|
10
|
-
# # good
|
|
11
|
-
# expect(response).to have_http_status :created
|
|
12
|
-
# expect(response).to have_http_status :bad_request
|
|
13
|
-
#
|
|
14
|
-
# # bad
|
|
15
|
-
# expect(response.code).to eq 201
|
|
16
|
-
# expect(response.code).to eq 400
|
|
17
|
-
class RspecRequireHttpStatusMatcher < Cop
|
|
18
|
-
MSG = "Use the `have_http_status` matcher, like `expect(response).to have_http_status :bad_request`, "\
|
|
19
|
-
"rather than `%<node_source>s`"
|
|
20
|
-
|
|
21
|
-
def_node_matcher :response_status_assertion, <<~PATTERN
|
|
22
|
-
(send (send _ :expect (send (send _ :response) :status)) :to (send _ :eq (int _)))
|
|
23
|
-
PATTERN
|
|
24
|
-
|
|
25
|
-
def_node_matcher :response_code_assertion, <<~PATTERN
|
|
26
|
-
(send (send _ :expect (send (send _ :response) :code)) :to (send _ :eq (str _)))
|
|
27
|
-
PATTERN
|
|
28
|
-
|
|
29
|
-
def on_send(node)
|
|
30
|
-
return if !response_status_assertion(node) && !response_code_assertion(node)
|
|
31
|
-
|
|
32
|
-
add_offense(node, :expression, format(MSG, node_source: node.source))
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|