rubocop-discourse 2.6.0 → 3.0.1

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: d323501481e0e731a79b93e81cb53e5a2b67d0761aebf7ac6ed8088d607bf912
4
- data.tar.gz: 8ab7c331ea82087f6a2f8a626ac9de4192a231aff5a58ca853938903d16bfc37
3
+ metadata.gz: f3d65cb32d6a544fd2b03dee2c2b423d865bf3b9c1957087038beb1ec1de1e08
4
+ data.tar.gz: 7beaaa46315bf22a20a11eed14e1ee8a787cf23026a974be936533cbee6e3da8
5
5
  SHA512:
6
- metadata.gz: 567ae9f6c1175704e4146fdb1d24ec8220560edc5f438fb4ac8cb4be655f90f92cc5fbc0b2b9a1a2992bd8861725681d0e860be73d16288e34298e61e41d85b1
7
- data.tar.gz: 38f89b89b1d18efd564afd9c2dc5de3830ace80aa8908e0430697f32436d6a3c91ffd87ec4f467da43f87df5132f1adb34d9161a93da8bc5882c5292fba71337
6
+ metadata.gz: d1126149b306f738ef8874dbe94cd4f9c816fc9b3d50617a1677ce3b1755950e72f21d436e0f6896817c91fcfa044c597ac230c5a37b1c787132d9d1f4c9ac9e
7
+ data.tar.gz: 5b3f747371f9eecd0f26ec04c0158eda78be9539d03a7e1a7a6893b6383f14884a7ae29ea3e858bbd08e32522d04ab637bbcc22d661a8186d2bd12b33a8a96bf
@@ -4,25 +4,20 @@ on:
4
4
  pull_request:
5
5
  push:
6
6
  branches:
7
- - master
8
7
  - main
8
+
9
9
  jobs:
10
10
  build:
11
11
  runs-on: ubuntu-latest
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v1
14
+ - uses: actions/checkout@v3
15
15
 
16
16
  - name: Setup ruby
17
- uses: actions/setup-ruby@v1
17
+ uses: ruby/setup-ruby@v1
18
18
  with:
19
- ruby-version: 2.6
20
-
21
- - name: Setup bundler
22
- run: gem install bundler
23
-
24
- - name: Setup gems
25
- run: bundle install
19
+ ruby-version: '2.6'
20
+ bundler-cache: true
26
21
 
27
22
  - name: Rubocop
28
23
  run: bundle exec rubocop
@@ -31,12 +26,12 @@ jobs:
31
26
  run: bundle exec rspec spec
32
27
 
33
28
  publish:
34
- if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
29
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
35
30
  needs: build
36
31
  runs-on: ubuntu-latest
37
32
 
38
33
  steps:
39
- - uses: actions/checkout@v2
34
+ - uses: actions/checkout@v3
40
35
 
41
36
  - name: Release Gem
42
37
  uses: discourse/publish-rubygems-action@v2
data/default.yml CHANGED
@@ -1,21 +1,6 @@
1
- require:
2
- - rubocop-discourse
3
-
4
1
  inherit_from:
5
- - ./rubocop-core.yml
6
- - ./rubocop-rspec.yml
7
-
8
- AllCops:
9
- TargetRubyVersion: 2.6
10
- DisabledByDefault: true
11
- Exclude:
12
- - "db/schema.rb"
13
- - "bundle/**/*"
14
- - "vendor/**/*"
15
- - "**/node_modules/**/*"
16
- - "public/**/*"
17
- - "plugins/**/gems/**/*"
18
- - "plugins/**/vendor/**/*"
2
+ - ./stree-compat.yml
3
+ - ./rubocop-layout.yml
19
4
 
20
- Discourse:
21
- Enabled: true
5
+ Layout/LineLength:
6
+ Enabled: false
@@ -37,7 +37,7 @@ module RuboCop
37
37
  private
38
38
 
39
39
  def timestamp_suffix?(property)
40
- property =~ /_at$/
40
+ property.is_a?(Symbol) && property =~ /_at$/
41
41
  end
42
42
 
43
43
  def not_nil?(expression)
data/rubocop-core.yml CHANGED
@@ -38,83 +38,6 @@ Style/GlobalVars:
38
38
  - 'spec/**/*.rb'
39
39
  - 'plugins/*/spec/**/*'
40
40
 
41
- # Align `when` with `case`.
42
- Layout/CaseIndentation:
43
- Enabled: true
44
-
45
- # Align comments with method definitions.
46
- Layout/CommentIndentation:
47
- Enabled: true
48
-
49
- # No extra empty lines.
50
- Layout/EmptyLines:
51
- Enabled: true
52
-
53
- # Two spaces, no tabs (for indentation).
54
- Layout/IndentationWidth:
55
- Enabled: true
56
-
57
- Layout/SpaceAfterColon:
58
- Enabled: true
59
-
60
- Layout/SpaceAfterComma:
61
- Enabled: true
62
-
63
- Layout/SpaceAroundEqualsInParameterDefault:
64
- Enabled: true
65
-
66
- Layout/SpaceAroundKeyword:
67
- Enabled: true
68
-
69
- Layout/SpaceAroundOperators:
70
- Enabled: true
71
-
72
- Layout/SpaceBeforeFirstArg:
73
- Enabled: true
74
-
75
- # Use `foo {}` not `foo{}`.
76
- Layout/SpaceBeforeBlockBraces:
77
- Enabled: true
78
-
79
- # Use `foo { bar }` not `foo {bar}`.
80
- Layout/SpaceInsideBlockBraces:
81
- Enabled: true
82
-
83
- # Use `{ a: 1 }` not `{a:1}`.
84
- Layout/SpaceInsideHashLiteralBraces:
85
- Enabled: true
86
-
87
- Layout/SpaceInsideParens:
88
- Enabled: true
89
-
90
- # Detect hard tabs, no hard tabs.
91
- Layout/IndentationStyle:
92
- Enabled: true
93
-
94
- # Blank lines should not have any spaces.
95
- Layout/TrailingEmptyLines:
96
- Enabled: true
97
-
98
- # No trailing whitespace.
99
- Layout/TrailingWhitespace:
100
- Enabled: true
101
-
102
- Layout/BlockAlignment:
103
- Enabled: true
104
-
105
- # Align `end` with the matching keyword or starting expression except for
106
- # assignments, where it should be aligned with the LHS.
107
- Layout/EndAlignment:
108
- Enabled: true
109
- EnforcedStyleAlignWith: variable
110
-
111
- Layout/MultilineMethodCallIndentation:
112
- Enabled: true
113
- EnforcedStyle: indented
114
-
115
- Layout/HashAlignment:
116
- Enabled: true
117
-
118
41
  Lint/Debugger:
119
42
  Enabled: true
120
43
 
@@ -127,3 +50,10 @@ Lint/ShadowingOuterLocalVariable:
127
50
 
128
51
  Bundler/OrderedGems:
129
52
  Enabled: false
53
+
54
+ # Enable Layout/LineLength because certain cops that most projects use
55
+ # (e.g. Style/IfUnlessModifier) require Layout/LineLength to be enabled.
56
+ # By leaving it disabled, those rules will mis-fire.
57
+ Layout/LineLength:
58
+ Enabled: true
59
+ Max: 240
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubocop-discourse"
5
- s.version = "2.6.0"
5
+ s.version = "3.0.1"
6
6
  s.summary = "Custom rubocop cops used by Discourse"
7
7
  s.authors = ["Discourse Team"]
8
8
  s.license = "MIT"
@@ -0,0 +1,76 @@
1
+ # Align `when` with `case`.
2
+ Layout/CaseIndentation:
3
+ Enabled: true
4
+
5
+ # Align comments with method definitions.
6
+ Layout/CommentIndentation:
7
+ Enabled: true
8
+
9
+ # No extra empty lines.
10
+ Layout/EmptyLines:
11
+ Enabled: true
12
+
13
+ # Two spaces, no tabs (for indentation).
14
+ Layout/IndentationWidth:
15
+ Enabled: true
16
+
17
+ Layout/SpaceAfterColon:
18
+ Enabled: true
19
+
20
+ Layout/SpaceAfterComma:
21
+ Enabled: true
22
+
23
+ Layout/SpaceAroundEqualsInParameterDefault:
24
+ Enabled: true
25
+
26
+ Layout/SpaceAroundKeyword:
27
+ Enabled: true
28
+
29
+ Layout/SpaceAroundOperators:
30
+ Enabled: true
31
+
32
+ Layout/SpaceBeforeFirstArg:
33
+ Enabled: true
34
+
35
+ # Use `foo {}` not `foo{}`.
36
+ Layout/SpaceBeforeBlockBraces:
37
+ Enabled: true
38
+
39
+ # Use `foo { bar }` not `foo {bar}`.
40
+ Layout/SpaceInsideBlockBraces:
41
+ Enabled: true
42
+
43
+ # Use `{ a: 1 }` not `{a:1}`.
44
+ Layout/SpaceInsideHashLiteralBraces:
45
+ Enabled: true
46
+
47
+ Layout/SpaceInsideParens:
48
+ Enabled: true
49
+
50
+ # Detect hard tabs, no hard tabs.
51
+ Layout/IndentationStyle:
52
+ Enabled: true
53
+
54
+ # Blank lines should not have any spaces.
55
+ Layout/TrailingEmptyLines:
56
+ Enabled: true
57
+
58
+ # No trailing whitespace.
59
+ Layout/TrailingWhitespace:
60
+ Enabled: true
61
+
62
+ Layout/BlockAlignment:
63
+ Enabled: true
64
+
65
+ # Align `end` with the matching keyword or starting expression except for
66
+ # assignments, where it should be aligned with the LHS.
67
+ Layout/EndAlignment:
68
+ Enabled: true
69
+ EnforcedStyleAlignWith: variable
70
+
71
+ Layout/MultilineMethodCallIndentation:
72
+ Enabled: true
73
+ EnforcedStyle: indented
74
+
75
+ Layout/HashAlignment:
76
+ Enabled: true
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RuboCop::Cop::Discourse::TimeEqMatcher, :config do
6
+ subject(:cop) { described_class.new(config) }
7
+
8
+ let(:config) do
9
+ RuboCop::Config.new
10
+ end
11
+
12
+ it "raises an offense if a timestamp is compared using `eq`" do
13
+ inspect_source(<<~RUBY)
14
+ expect(user.created_at).to eq(Time.zone.now)
15
+ RUBY
16
+
17
+ expect(cop.offenses.first.message).to eq(described_class::MSG)
18
+ end
19
+
20
+ it "passes if a timestamp is compared using `eq_time`" do
21
+ inspect_source(<<~RUBY)
22
+ expect(user.created_at).to eq_time(Time.zone.now)
23
+ RUBY
24
+
25
+ expect(cop.offenses).to be_empty
26
+ end
27
+ end
data/stree-compat.yml ADDED
@@ -0,0 +1,21 @@
1
+ require:
2
+ - rubocop-discourse
3
+
4
+ inherit_from:
5
+ - ./rubocop-core.yml
6
+ - ./rubocop-rspec.yml
7
+
8
+ AllCops:
9
+ TargetRubyVersion: 2.6
10
+ DisabledByDefault: true
11
+ Exclude:
12
+ - "db/schema.rb"
13
+ - "bundle/**/*"
14
+ - "vendor/**/*"
15
+ - "**/node_modules/**/*"
16
+ - "public/**/*"
17
+ - "plugins/**/gems/**/*"
18
+ - "plugins/**/vendor/**/*"
19
+
20
+ Discourse:
21
+ Enabled: true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-discourse
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Discourse Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-26 00:00:00.000000000 Z
11
+ date: 2022-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -99,13 +99,16 @@ files:
99
99
  - lib/rubocop/discourse/inject.rb
100
100
  - rubocop-core.yml
101
101
  - rubocop-discourse.gemspec
102
+ - rubocop-layout.yml
102
103
  - rubocop-rspec.yml
103
104
  - spec/lib/rubocop/cop/no_add_reference_active_record_migrations_spec.rb
104
105
  - spec/lib/rubocop/cop/no_mixing_multisite_and_standard_specs_spec.rb
105
106
  - spec/lib/rubocop/cop/no_mocking_jobs_enqueue_spec.rb
106
107
  - spec/lib/rubocop/cop/no_reset_column_information_migrations_spec.rb
107
108
  - spec/lib/rubocop/cop/only_top_level_multisite_specs_spec.rb
109
+ - spec/lib/rubocop/cop/time_eq_matcher_spec.rb
108
110
  - spec/spec_helper.rb
111
+ - stree-compat.yml
109
112
  homepage: https://github.com/discourse/rubocop-discourse
110
113
  licenses:
111
114
  - MIT