salsify_rubocop 0.48.1 → 0.52.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1168006be538d22e3437ab541c048e7b6d16502e
4
- data.tar.gz: 1f27eaee901f052080f61c69d6fe10f00e6908e9
2
+ SHA256:
3
+ metadata.gz: 711fd8590c32360212eb79475aed75fa3c9005be72bd22c2a65c4499ed0a9eb5
4
+ data.tar.gz: 8dedaaccd58cdffb7943dbbcf32e6454bcb77d99a95f2428066ebcdb8008ea32
5
5
  SHA512:
6
- metadata.gz: b0c8afbcf2b7ff19fa513446155e97bc27182d75244e2652ab52f557123d1539cd160720d659452fded8b9836f5d4eed9945d7f50cab7f79263a5d335dcdcf00
7
- data.tar.gz: be74e32b09f5499e75f2bdad040966f7166fb1bbcd00198f25e852596c0a54217e2fc06c880962f4cbff006d46737848322de87b90f516ec1e702297a81b32a6
6
+ metadata.gz: c471766fc309ae3115177dce42b057c5fa18a6bffd1f0f47dc88b5b4cdb906d8ecac815873d4c6a9f6a204cfa898585db3588cff32b71d1340b7ac8714169c78
7
+ data.tar.gz: 1ef6635f33167b36b2e0b72995939a9e31f0c97dba606290eac0c76c0eb195a599a6870b3226d9551a98d87a7d5a43252ca1fd14b8571747fcf640092d743629
data/.travis.yml CHANGED
@@ -1,8 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.4.0
4
- - 2.3.3
5
- - 2.2.6
3
+ - 2.5.0
4
+ - 2.4.3
5
+ - 2.3.6
6
+ - 2.2.9
6
7
  before_install:
7
8
  # Workaround for https://github.com/sickill/rainbow/issues/48
8
9
  - gem update --system
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # salsify_rubocop
2
2
 
3
+ ## v0.52.1
4
+ - Update to `rubocop` v0.52.1 and `rubocop-rspec` v1.21.0.
5
+
3
6
  ## v0.48.1
4
7
  - Add `Salsify/RailsApplicationMailer` cop.
5
8
 
data/conf/rubocop.yml CHANGED
@@ -34,3 +34,6 @@ RSpec/MultipleExpectations:
34
34
 
35
35
  RSpec/NestedGroups:
36
36
  Enabled: false
37
+
38
+ RSpec/ContextWording:
39
+ Enabled: false
@@ -22,7 +22,7 @@ Performance/RedundantMerge:
22
22
  Style/Alias:
23
23
  EnforcedStyle: prefer_alias_method
24
24
 
25
- Style/AlignHash:
25
+ Layout/AlignHash:
26
26
  Enabled: false
27
27
 
28
28
  Style/Documentation:
@@ -39,19 +39,19 @@ Style/EachForSimpleLoop:
39
39
  Style/EachWithObject:
40
40
  Enabled: false
41
41
 
42
- Style/EmptyLines:
42
+ Layout/EmptyLines:
43
43
  Enabled: false
44
44
 
45
- Style/EmptyLinesAroundBlockBody:
45
+ Layout/EmptyLinesAroundBlockBody:
46
46
  Enabled: false
47
47
 
48
- Style/EmptyLinesAroundClassBody:
48
+ Layout/EmptyLinesAroundClassBody:
49
49
  Enabled: false
50
50
 
51
- Style/EmptyLinesAroundModuleBody:
51
+ Layout/EmptyLinesAroundModuleBody:
52
52
  Enabled: false
53
53
 
54
- Style/EmptyLinesAroundMethodBody:
54
+ Layout/EmptyLinesAroundMethodBody:
55
55
  Enabled: false
56
56
 
57
57
  Style/EmptyLiteral:
@@ -62,7 +62,7 @@ Style/EmptyMethod:
62
62
 
63
63
  # The Exclude list is not additive. Projects that exclude file names will
64
64
  # need to re-add Appraisals.
65
- Style/FileName:
65
+ Naming/FileName:
66
66
  Exclude:
67
67
  - 'Appraisals'
68
68
 
@@ -73,7 +73,7 @@ Style/GuardClause:
73
73
  Enabled: false
74
74
 
75
75
  # does not make sense to enable this without AlignHash
76
- Style/IndentHash:
76
+ Layout/IndentHash:
77
77
  Enabled: false
78
78
 
79
79
  Style/Lambda:
@@ -85,13 +85,13 @@ Style/ModuleFunction:
85
85
  Style/MultilineBlockChain:
86
86
  Enabled: false
87
87
 
88
- Style/MultilineMethodCallIndentation:
88
+ Layout/MultilineMethodCallIndentation:
89
89
  Enabled: false
90
90
 
91
- Style/MultilineOperationIndentation:
91
+ Layout/MultilineOperationIndentation:
92
92
  Enabled: false
93
93
 
94
- Style/MultilineBlockLayout:
94
+ Layout/MultilineBlockLayout:
95
95
  Enabled: false
96
96
 
97
97
  # This cop complains about values like 05.
@@ -126,7 +126,7 @@ Style/SingleLineBlockParams:
126
126
 
127
127
  # This cop doesn't work properly if you a have a block with
128
128
  # arguments split across multiple lines
129
- Style/SpaceAroundBlockParameters:
129
+ Layout/SpaceAroundBlockParameters:
130
130
  Enabled: false
131
131
 
132
132
  Style/StringLiterals:
@@ -138,7 +138,7 @@ Style/StringLiterals:
138
138
  Style/SymbolArray:
139
139
  Enabled: false
140
140
 
141
- Style/VariableNumber:
141
+ Naming/VariableNumber:
142
142
  Enabled: false
143
143
 
144
144
  Metrics/AbcSize:
@@ -1,11 +1,7 @@
1
- # encoding: utf-8
2
-
3
- require 'rubocop'
4
-
5
1
  module RuboCop
6
2
  module Cop
7
3
  module Salsify
8
- # Check that mailers subclass ApplicationMailer with Rails 5.0
4
+ # Check that mailers subclass ApplicationMailer with Rails 5.0.
9
5
  #
10
6
  # @example
11
7
  #
@@ -19,34 +15,19 @@ module RuboCop
19
15
  # ...
20
16
  # end
21
17
  class RailsApplicationMailer < Cop
18
+ extend TargetRailsVersion
22
19
 
23
- MSG = 'Mailers must subclass ApplicationMailer'.freeze
24
- APPLICATION_MAILER = 'ApplicationMailer'.freeze
25
- ACTIVE_MAILER_BASE_PATTERN = '(const (const nil :ActionMailer) :Base)'.freeze
26
-
27
- def_node_matcher :mailer_class_definition, <<-PATTERN
28
- (class (const _ !:ApplicationMailer) #{ACTIVE_MAILER_BASE_PATTERN} ...)
29
- PATTERN
30
-
31
- def_node_matcher :class_new_definition, <<-PATTERN
32
- [!^(casgn nil :ApplicationMailer ...) (send (const nil :Class) :new #{ACTIVE_MAILER_BASE_PATTERN})]
33
- PATTERN
20
+ minimum_target_rails_version 5.0
34
21
 
35
- def on_class(node)
36
- mailer_class_definition(node) do
37
- add_offense(node.children[1], :expression, MSG)
38
- end
39
- end
22
+ MSG = 'Mailers should subclass `ApplicationMailer`.'.freeze
23
+ SUPERCLASS = 'ApplicationMailer'.freeze
24
+ BASE_PATTERN = '(const (const nil? :ActionMailer) :Base)'.freeze
40
25
 
41
- def on_send(node)
42
- class_new_definition(node) do
43
- add_offense(node.children.last, :expression, MSG)
44
- end
45
- end
26
+ include RuboCop::Cop::EnforceSuperclass
46
27
 
47
28
  def autocorrect(node)
48
29
  lambda do |corrector|
49
- corrector.replace(node.source_range, APPLICATION_MAILER)
30
+ corrector.replace(node.source_range, self.class::SUPERCLASS)
50
31
  end
51
32
  end
52
33
  end
@@ -1,40 +1,33 @@
1
- # encoding: utf-8
2
-
3
- require 'rubocop'
4
-
5
1
  module RuboCop
6
2
  module Cop
7
3
  module Salsify
8
- # Check that serializers subclass ApplicationSerializer
4
+ # Check that serializers subclass ApplicationSerializer with Rails 5.0.
5
+ #
6
+ # @example
7
+ #
8
+ # # good
9
+ # class Tesla < ApplicationSerializer
10
+ # ...
11
+ # end
12
+ #
13
+ # # bad
14
+ # class Yugo < ActiveModel::Serializer
15
+ # ...
16
+ # end
9
17
  class RailsApplicationSerializer < Cop
18
+ extend TargetRailsVersion
10
19
 
11
- MSG = 'Serializers must subclass ApplicationSerializer'.freeze
12
- APPLICATION_SERIALIZER = 'ApplicationSerializer'.freeze
13
- ACTIVE_MODEL_SERIALIZER_PATTERN = '(const (const nil :ActiveModel) :Serializer)'.freeze
14
-
15
- def_node_matcher :serializer_class_definition, <<-PATTERN
16
- (class (const _ !:ApplicationSerializer) #{ACTIVE_MODEL_SERIALIZER_PATTERN} ...)
17
- PATTERN
18
-
19
- def_node_matcher :class_new_definition, <<-PATTERN
20
- [!^(casgn nil :ApplicationSerializer ...) (send (const nil :Class) :new #{ACTIVE_MODEL_SERIALIZER_PATTERN})]
21
- PATTERN
20
+ minimum_target_rails_version 5.0
22
21
 
23
- def on_class(node)
24
- serializer_class_definition(node) do
25
- add_offense(node.children[1], :expression, MSG)
26
- end
27
- end
22
+ MSG = 'Serializers should subclass `ApplicationSerializer`.'.freeze
23
+ SUPERCLASS = 'ApplicationSerializer'.freeze
24
+ BASE_PATTERN = '(const (const nil? :ActiveModel) :Serializer)'.freeze
28
25
 
29
- def on_send(node)
30
- class_new_definition(node) do
31
- add_offense(node.children.last, :expression, MSG)
32
- end
33
- end
26
+ include RuboCop::Cop::EnforceSuperclass
34
27
 
35
28
  def autocorrect(node)
36
29
  lambda do |corrector|
37
- corrector.replace(node.source_range, APPLICATION_SERIALIZER)
30
+ corrector.replace(node.source_range, self.class::SUPERCLASS)
38
31
  end
39
32
  end
40
33
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module RuboCop
4
2
  module Cop
5
3
  module Salsify
@@ -44,14 +42,18 @@ module RuboCop
44
42
  check_quotes(args.first)
45
43
  end
46
44
 
45
+ def autocorrect(node)
46
+ StringLiteralCorrector.correct(node, style)
47
+ end
48
+
47
49
  private
48
50
 
49
51
  def check_quotes(doc_node)
50
52
  if wrong_quotes?(doc_node)
51
53
  if style == :single_quotes
52
- add_offense(doc_node, :expression, SINGLE_QUOTE_MSG)
54
+ add_offense(doc_node, message: SINGLE_QUOTE_MSG)
53
55
  else
54
- add_offense(doc_node, :expression, DOUBLE_QUOTE_MSG)
56
+ add_offense(doc_node, message: DOUBLE_QUOTE_MSG)
55
57
  end
56
58
  end
57
59
  end
@@ -65,17 +67,6 @@ module RuboCop
65
67
  src !~ /^" | \\ | \#/x
66
68
  end
67
69
  end
68
-
69
- def autocorrect(node)
70
- lambda do |corrector|
71
- str = node.str_content
72
- if style == :single_quotes
73
- corrector.replace(node.source_range, to_string_literal(str))
74
- else
75
- corrector.replace(node.source_range, str.inspect)
76
- end
77
- end
78
- end
79
70
  end
80
71
  end
81
72
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module RuboCop
4
2
  module Cop
5
3
  module Salsify
@@ -28,7 +26,7 @@ module RuboCop
28
26
 
29
27
  def on_send(node)
30
28
  example_group_match(node) do |doc|
31
- add_offense(doc, :expression, MSG) if SELF_DOT_REGEXP =~ doc.source
29
+ add_offense(doc) if SELF_DOT_REGEXP =~ doc.source
32
30
  end
33
31
  end
34
32
 
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module RuboCop
4
2
  module Cop
5
3
  module Salsify
@@ -22,9 +20,13 @@ module RuboCop
22
20
  DOUBLE_QUOTE_MSG = 'Prefer double-quoted strings unless you need ' \
23
21
  'single quotes to avoid extra backslashes for escaping.'.freeze
24
22
 
23
+ def autocorrect(node)
24
+ StringLiteralCorrector.correct(node, style)
25
+ end
26
+
25
27
  private
26
28
 
27
- def message(*)
29
+ def message(_node)
28
30
  style == :single_quotes ? SINGLE_QUOTE_MSG : DOUBLE_QUOTE_MSG
29
31
  end
30
32
 
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # This may be added in the near future to rubocop, see https://github.com/bbatsov/rubocop/issues/5332
2
2
 
3
3
  module RuboCop
4
4
  module Cop
@@ -32,16 +32,16 @@ module RuboCop
32
32
  match_node = node
33
33
  # walk to outermost access node
34
34
  match_node = match_node.parent while access_node?(match_node.parent)
35
- add_offense(match_node, :expression, MSG)
35
+ add_offense(match_node)
36
36
  end
37
37
  end
38
38
 
39
39
  def autocorrect(node)
40
40
  access_node = node
41
- source_args = [access_node.method_args.first.source]
41
+ source_args = [access_node.first_argument.source]
42
42
  while access_node?(access_node.children.first)
43
43
  access_node = access_node.children.first
44
- source_args << access_node.method_args.first.source
44
+ source_args << access_node.first_argument.source
45
45
  end
46
46
  root_node = access_node.children.first
47
47
 
@@ -15,7 +15,6 @@ RuboCop::ConfigLoader.instance_variable_set(:@default_configuration, config)
15
15
  # cops
16
16
  require 'rubocop/cop/salsify/rails_application_mailer'
17
17
  require 'rubocop/cop/salsify/rails_application_serializer'
18
- require 'rubocop/cop/salsify/rails_application_record'
19
18
  require 'rubocop/cop/salsify/rspec_doc_string'
20
19
  require 'rubocop/cop/salsify/rspec_dot_not_self_dot'
21
20
  require 'rubocop/cop/salsify/rspec_string_literals'
@@ -1,3 +1,3 @@
1
1
  module SalsifyRubocop
2
- VERSION = '0.48.1'.freeze
2
+ VERSION = '0.52.1'.freeze
3
3
  end
@@ -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 'salsify_rubocop/version'
@@ -34,6 +32,6 @@ Gem::Specification.new do |spec|
34
32
  spec.add_development_dependency 'rake', '~> 10.0'
35
33
  spec.add_development_dependency 'rspec', '~> 3.0'
36
34
 
37
- spec.add_runtime_dependency 'rubocop', '~> 0.48.1'
38
- spec.add_runtime_dependency 'rubocop-rspec', '~> 1.15.0'
35
+ spec.add_runtime_dependency 'rubocop', '~> 0.52.1'
36
+ spec.add_runtime_dependency 'rubocop-rspec', '~> 1.21.0'
39
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salsify_rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.48.1
4
+ version: 0.52.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify, Inc
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-14 00:00:00.000000000 Z
11
+ date: 2018-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.48.1
61
+ version: 0.52.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.48.1
68
+ version: 0.52.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.15.0
75
+ version: 1.21.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.15.0
82
+ version: 1.21.0
83
83
  description: Shared shared RuboCop configuration
84
84
  email:
85
85
  - engineering@salsify.com
@@ -104,7 +104,6 @@ files:
104
104
  - conf/rubocop_without_rspec.yml
105
105
  - config/default.yml
106
106
  - lib/rubocop/cop/salsify/rails_application_mailer.rb
107
- - lib/rubocop/cop/salsify/rails_application_record.rb
108
107
  - lib/rubocop/cop/salsify/rails_application_serializer.rb
109
108
  - lib/rubocop/cop/salsify/rspec_doc_string.rb
110
109
  - lib/rubocop/cop/salsify/rspec_dot_not_self_dot.rb
@@ -135,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
134
  version: '0'
136
135
  requirements: []
137
136
  rubyforge_project:
138
- rubygems_version: 2.6.11
137
+ rubygems_version: 2.7.3
139
138
  signing_key:
140
139
  specification_version: 4
141
140
  summary: Shared shared RuboCop configuration
@@ -1,55 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'rubocop'
4
-
5
- module RuboCop
6
- module Cop
7
- module Salsify
8
- # Check that models subclass ApplicationRecord with Rails 5.0
9
- #
10
- # @example
11
- #
12
- # # good
13
- # class Tesla < ApplicationRecord
14
- # ...
15
- # end
16
- #
17
- # # bad
18
- # class Yugo < ActiveRecord::Base
19
- # ...
20
- # end
21
- class RailsApplicationRecord < Cop
22
-
23
- MSG = 'Models must subclass ApplicationRecord'.freeze
24
- APPLICATION_RECORD = 'ApplicationRecord'.freeze
25
- ACTIVE_RECORD_BASE_PATTERN = '(const (const nil :ActiveRecord) :Base)'.freeze
26
-
27
- def_node_matcher :model_class_definition, <<-PATTERN
28
- (class (const _ !:ApplicationRecord) #{ACTIVE_RECORD_BASE_PATTERN} ...)
29
- PATTERN
30
-
31
- def_node_matcher :class_new_definition, <<-PATTERN
32
- [!^(casgn nil :ApplicationRecord ...) (send (const nil :Class) :new #{ACTIVE_RECORD_BASE_PATTERN})]
33
- PATTERN
34
-
35
- def on_class(node)
36
- model_class_definition(node) do
37
- add_offense(node.children[1], :expression, MSG)
38
- end
39
- end
40
-
41
- def on_send(node)
42
- class_new_definition(node) do
43
- add_offense(node.children.last, :expression, MSG)
44
- end
45
- end
46
-
47
- def autocorrect(node)
48
- lambda do |corrector|
49
- corrector.replace(node.source_range, APPLICATION_RECORD)
50
- end
51
- end
52
- end
53
- end
54
- end
55
- end