mavenlint 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mavenlint.rb +3 -2
- data/lib/rubocop/cop/mavenlint/{unsafe-mass-assignment.rb → unsafe_mass_assignment.rb} +1 -1
- data/lib/rubocop/cop/mavenlint/{use-application-record.rb → use_application_record.rb} +0 -0
- data/lib/rubocop/cop/mavenlint/use_fast_capybara_matchers.rb +46 -0
- data/rubocop.yml +6 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcfc99e4f4f3972ef1b8f710e2f038061810051d
|
4
|
+
data.tar.gz: 6fecb9a506040fdc6242c96dde6f719f7f778a9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3035ed08d6026916007c04c77978c75465d26de511ccf4737c403524fef221acbcbf8343d577978d8df30329989239a82b715e36e26d3072fb0270802dbc7ae9
|
7
|
+
data.tar.gz: 55cdf4ed75294698ee27061f7777f54191adbaf3f5e500be35a8b70f24ba0a8402e2c12a94ff0f8c60f911468227b8bbd34a5ffb035077ae5cf3be4c16ee8a24
|
data/lib/mavenlint.rb
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
require 'rubocop/cop/mavenlint/
|
2
|
-
require 'rubocop/cop/mavenlint/
|
1
|
+
require 'rubocop/cop/mavenlint/unsafe_mass_assignment'
|
2
|
+
require 'rubocop/cop/mavenlint/use_application_record'
|
3
|
+
require 'rubocop/cop/mavenlint/use_fast_capybara_matchers'
|
@@ -15,7 +15,7 @@ module RuboCop
|
|
15
15
|
# or updated through a publicly accessible endpoint, because the associated model isn't
|
16
16
|
# necessarily loaded and ran through security checks.
|
17
17
|
class UnsafeMassAssignment < RuboCop::Cop::Cop
|
18
|
-
MSG = "Do not allow mass-assignment of foreign key columns. See
|
18
|
+
MSG = "Do not allow mass-assignment of foreign key columns. See https://github.com/mavenlink/welcome/wiki/Lint-Errors#unsafemassassignment".freeze
|
19
19
|
|
20
20
|
def on_send(node)
|
21
21
|
return unless node.command?(:attr_accessible)
|
File without changes
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rubocop'
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Mavenlint
|
6
|
+
# Identify usages of `to_not` with a Capybara matcher, which will be really slow.
|
7
|
+
#
|
8
|
+
# For example
|
9
|
+
#
|
10
|
+
# expect(page).to_not have_text('Hi')
|
11
|
+
#
|
12
|
+
# Writing an assertion this way will first try to find the text 'Hi'. If not present,
|
13
|
+
# Capybara will wait for the full timeout (often 30 seconds) before then inverting with
|
14
|
+
# `to_not` and passing.
|
15
|
+
#
|
16
|
+
# Instead, we should do something like:
|
17
|
+
#
|
18
|
+
# expect(page).to have_no_text('Hi')
|
19
|
+
#
|
20
|
+
# Which will pass as soon as the text is not detected without any timeout.
|
21
|
+
class UseFastCapybaraMatchers < RuboCop::Cop::Cop
|
22
|
+
MSG = 'Use a `to have_no_*` selector. See https://github.com/mavenlink/welcome/wiki/Lint-Errors#usefastcapybaramatchers'.freeze
|
23
|
+
CAPYBARA_MATCHERS = %i(have_button have_checked_field have_content have_css have_field have_link have_select have_selector have_table have_text have_unchecked_field have_xpath)
|
24
|
+
|
25
|
+
def_node_matcher :slow_capybara_matcher?, <<~PATTERN
|
26
|
+
(send
|
27
|
+
(send nil? :expect _)
|
28
|
+
:to_not
|
29
|
+
(send nil? #capybara? ...))
|
30
|
+
PATTERN
|
31
|
+
|
32
|
+
def on_send(node)
|
33
|
+
return unless slow_capybara_matcher?(node)
|
34
|
+
|
35
|
+
add_offense(node)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def capybara?(symbol)
|
41
|
+
CAPYBARA_MATCHERS.include?(symbol)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/rubocop.yml
CHANGED
@@ -56,3 +56,9 @@ Layout/EmptyLinesAroundMethodBody:
|
|
56
56
|
# Ensure that two spaces are used for indentation.
|
57
57
|
Layout/IndentationWidth:
|
58
58
|
Enabled: true
|
59
|
+
|
60
|
+
# Only run our Capybara checks in directories that will have Capybara tests.
|
61
|
+
Mavenlint/UseFastCapybaraMatchers:
|
62
|
+
Include:
|
63
|
+
- spec/selenium/**/*.rb
|
64
|
+
- spec/features/**/*.rb
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mavenlint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mavenlnk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -60,8 +60,9 @@ extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
62
|
- lib/mavenlint.rb
|
63
|
-
- lib/rubocop/cop/mavenlint/
|
64
|
-
- lib/rubocop/cop/mavenlint/
|
63
|
+
- lib/rubocop/cop/mavenlint/unsafe_mass_assignment.rb
|
64
|
+
- lib/rubocop/cop/mavenlint/use_application_record.rb
|
65
|
+
- lib/rubocop/cop/mavenlint/use_fast_capybara_matchers.rb
|
65
66
|
- rubocop.yml
|
66
67
|
homepage: https://github.com/mavenlink/mavenlint
|
67
68
|
licenses:
|