gitlab-styles 2.2.0 → 2.3.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: a5c5dbefc4cc4e9fce7794623c0688cb4bfb145e186a0c12376e8cf973b09c1b
4
- data.tar.gz: ce47876a9ac193036759b85aea6ef23d1c2caf3037e057d640849fe2cce8b197
3
+ metadata.gz: 7c8bcbe5bc056a0c4862e87c4fb7936bd6cb257477b61bcdd2bd446e7cd2dc11
4
+ data.tar.gz: 01e72c7ddc449062470f216f166cc37e02d794c64f69758bb56d4ab2485560b1
5
5
  SHA512:
6
- metadata.gz: 3f2713efa71f126be8e9bf9b44ca4caef0c09f69bdbec2f2abc143184356891341b4b423606f742ea7d517feabec0dadd259553846adcf8c068c80dcc8e588dd
7
- data.tar.gz: 4c83cc34cebefb7b7d0bc53adeec8b733f9adefbe446c7e46cd81f60fa136de48445de38b71533edf76f32789c3fa4caf46b27860dd23177a3607377f81a6397
6
+ metadata.gz: 9a3214afbb65c6c79246a72fb4b1ac38715032e3635ed2b4c0a72bddb7a6512bc6122d432c86ddac89a3e405ce41522e0c7af8bf9015fe513b3804ed12f43c69
7
+ data.tar.gz: 70a068513cfb5a4937e59cc26a24728fcc1222a6960d3f89f59711b46281e7c3ad6adff5423ec3c334c377aed43530c242408befd2ada70ee256eed90166b46c
@@ -7,6 +7,7 @@ require 'gitlab/styles/rubocop/cop/active_record_dependent'
7
7
  require 'gitlab/styles/rubocop/cop/in_batches'
8
8
  require 'gitlab/styles/rubocop/cop/line_break_after_guard_clauses'
9
9
  require 'gitlab/styles/rubocop/cop/rspec/single_line_hook'
10
+ require 'gitlab/styles/rubocop/cop/rspec/verbose_include_metadata'
10
11
 
11
12
  module Gitlab
12
13
  module Styles
@@ -0,0 +1,76 @@
1
+ require 'rubocop-rspec'
2
+
3
+ module Gitlab
4
+ module Styles
5
+ module Rubocop
6
+ module Cop
7
+ module RSpec
8
+ # Checks for verbose include metadata used in the specs.
9
+ #
10
+ # @example
11
+ # # bad
12
+ # describe MyClass, js: true do
13
+ # end
14
+ #
15
+ # # good
16
+ # describe MyClass, :js do
17
+ # end
18
+ class VerboseIncludeMetadata < RuboCop::Cop::Cop
19
+ MSG = 'Use `%s` instead of `%s`.'.freeze
20
+
21
+ SELECTORS = %i[describe context feature example_group it specify example scenario its].freeze
22
+
23
+ def_node_matcher :include_metadata, <<-PATTERN
24
+ (send {(const nil? :RSpec) nil?} {#{SELECTORS.map(&:inspect).join(' ')}}
25
+ !const
26
+ ...
27
+ (hash $...))
28
+ PATTERN
29
+
30
+ def_node_matcher :invalid_metadata?, <<-PATTERN
31
+ (pair
32
+ (sym $...)
33
+ (true))
34
+ PATTERN
35
+
36
+ def on_send(node)
37
+ invalid_metadata_matches(node) do |match|
38
+ add_offense(node, location: :expression, message: format(MSG, good(match), bad(match)))
39
+ end
40
+ end
41
+
42
+ def autocorrect(node)
43
+ lambda do |corrector|
44
+ invalid_metadata_matches(node) do |match|
45
+ corrector.replace(match.loc.expression, good(match))
46
+ end
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def invalid_metadata_matches(node)
53
+ include_metadata(node) do |matches|
54
+ matches.select(&method(:invalid_metadata?)).each do |match|
55
+ yield match
56
+ end
57
+ end
58
+ end
59
+
60
+ def bad(match)
61
+ "#{metadata_key(match)}: true"
62
+ end
63
+
64
+ def good(match)
65
+ ":#{metadata_key(match)}"
66
+ end
67
+
68
+ def metadata_key(match)
69
+ match.children[0].source
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module Styles
3
- VERSION = '2.2.0'.freeze
3
+ VERSION = '2.3.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-styles
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-13 00:00:00.000000000 Z
11
+ date: 2018-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -125,6 +125,7 @@ files:
125
125
  - lib/gitlab/styles/rubocop/cop/polymorphic_associations.rb
126
126
  - lib/gitlab/styles/rubocop/cop/redirect_with_status.rb
127
127
  - lib/gitlab/styles/rubocop/cop/rspec/single_line_hook.rb
128
+ - lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb
128
129
  - lib/gitlab/styles/rubocop/migration_helpers.rb
129
130
  - lib/gitlab/styles/rubocop/model_helpers.rb
130
131
  - lib/gitlab/styles/version.rb