Skip to content

Commit

Permalink
add rubocop and bump capybara-webkit
Browse files Browse the repository at this point in the history
This add rubocop and a ruleset that mostly matches canvas's to rollcall
as well as bumping capybara-webkit so it'll compile on modern macs

test plan:
 - specs pass

Change-Id: I29bf968a9f3daa58b51ad05976ccbff668c29e8e
Reviewed-on: https://gerrit.instructure.com/c/rollcall-attendance/+/221883
Reviewed-by: Spencer Olson <[email protected]>
Reviewed-by: Gary Mei <[email protected]>
Tested-by: Service Cloud Jenkins <[email protected]>
QA-Review: Keith Garner <[email protected]>
Product-Review: Keith Garner <[email protected]>
  • Loading branch information
ktgeek committed Jan 2, 2020
1 parent 555e95b commit a35ba28
Show file tree
Hide file tree
Showing 3 changed files with 297 additions and 4 deletions.
272 changes: 272 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,272 @@
require:
- rubocop-rspec

AllCops:
TargetRubyVersion: 2.3

# our style changes: disabling style rules we aren't interested in
Layout/AlignParameters:
Enabled: false
Layout/ElseAlignment:
Enabled: false
Layout/EmptyLines:
Enabled: false
Layout/EmptyLinesAroundAccessModifier:
Enabled: false
Layout/EmptyLinesAroundArguments:
Enabled: false
Layout/EmptyLinesAroundBlockBody:
Enabled: false
Layout/EmptyLinesAroundClassBody:
Enabled: false
Layout/EmptyLinesAroundMethodBody:
Enabled: false
Layout/EmptyLinesAroundModuleBody:
Enabled: false
Layout/IndentHash:
Enabled: false
Layout/IndentationConsistency:
Enabled: false
Layout/IndentationWidth:
Enabled: false
Layout/MultilineOperationIndentation:
Enabled: false
Layout/SpaceAfterColon:
Enabled: false
Layout/SpaceAfterComma:
Enabled: false
Layout/SpaceAroundEqualsInParameterDefault:
Enabled: false
Layout/SpaceAroundOperators:
Enabled: false
Layout/SpaceBeforeBlockBraces:
Enabled: false
Layout/SpaceBeforeFirstArg:
Enabled: false
Layout/SpaceInLambdaLiteral:
Enabled: false
Layout/SpaceInsideArrayLiteralBrackets:
Enabled: false
Layout/SpaceInsideBlockBraces:
Enabled: false
Layout/SpaceInsideHashLiteralBraces:
Enabled: false
Layout/SpaceInsideReferenceBrackets:
Enabled: false
Layout/TrailingBlankLines:
Enabled: false
Layout/TrailingWhitespace:
Enabled: false

Style/FormatStringToken:
Enabled: false
Style/StringLiterals:
Enabled: false
Style/SignalException:
Enabled: false
Style/NumericLiterals:
Enabled: false
Style/BracesAroundHashParameters:
Enabled: false
Style/PercentLiteralDelimiters:
Enabled: false
Style/Documentation:
Enabled: false
Style/ClassAndModuleChildren:
Enabled: false
Style/RegexpLiteral:
Enabled: false
Style/GuardClause:
Enabled: false
Style/RedundantSelf:
Enabled: false
Style/IfUnlessModifier:
Enabled: false
Style/WordArray:
Enabled: false
Style/PercentQLiterals:
Enabled: false
Style/DoubleNegation:
Enabled: false
Style/TrailingCommaInArguments:
Enabled: false
Style/TrailingCommaInLiteral:
Enabled: false
Style/MethodCallWithoutArgsParentheses:
Enabled: false
Style/MethodCallWithArgsParentheses:
Enabled: false
Layout/DotPosition:
Enabled: true
EnforcedStyle: trailing
Layout/AlignHash:
Enabled: false
Layout/AlignParameters:
Enabled: false
Style/Lambda:
Enabled: false
Style/WhileUntilModifier:
Enabled: false
Style/ParallelAssignment:
Enabled: false
Style/ZeroLengthPredicate:
Enabled: false
Style/NumericPredicate:
Enabled: false
Naming/VariableNumber:
Enabled: false
Style/Dir:
Enabled: false
Style/ReturnNil:
Enabled: false
Style/StderrPuts:
Enabled: false
Style/DateTime:
Enabled: false
Style/SymbolArray:
Enabled: false
# We may want to enable this when we start working toward Ruby 3
Style/FrozenStringLiteralComment:
Enabled: false
Style/AsciiComments:
Enabled: false
Style/BlockDelimiters:
Enabled: true
Exclude:
- spec/**/*_spec.rb
- spec/shared_examples/**/*.rb

# RSpec cops we don't care about
RSpec/MessageSpies:
Enabled: false
RSpec/HookArgument:
Enabled: false
RSpec/VerifiedDoubles:
Enabled: false
RSpec/NamedSubject:
Enabled: false
RSpec/NotToNot:
Enabled: false
# RSpec cops we care extra about
RSpec/EmptyExampleGroup:
Severity: error
RSpec/RepeatedDescription:
Severity: error
RSpec/ExpectChange:
Enabled: false

# this isn't good for us because of how we pin dependencies
Bundler/OrderedGems:
Enabled: false
Gemspec/OrderedDependencies:
Enabled: false
Gemspec/RequiredRubyVersion:
Enabled: false

# Rails style changes
Rails:
Enabled: true
Rails/TimeZone:
Enabled: false
# accessors are often defined in terms of read_attribute
Rails/ReadWriteAttribute:
Enabled: false
# we never bothered creating an ApplicationRecord
Rails/ApplicationRecord:
Enabled: false
Rails/HasManyOrHasOneDependent:
Enabled: false
# It whines about update_all too much, which we use a lot specifically to
# bypass validations and any other AR-ness
Rails/SkipsModelValidations:
Enabled: false

# Lint changes
Lint/AmbiguousRegexpLiteral:
Severity: convention
Lint/AmbiguousBlockAssociation:
Exclude:
- spec/**/*
Lint/UselessAssignment:
Severity: convention
Lint/Debugger:
Severity: error
Lint/EndAlignment:
EnforcedStyleAlignWith: variable
Severity: convention

# Performance changes
Performance/Detect:
Severity: warning
Performance/TimesMap:
Exclude:
- spec/**/*

# these need better configuration than the default:
Style/AndOr:
EnforcedStyle: conditionals
Style/RescueModifier:
Severity: warning
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented
Layout/IndentArray:
EnforcedStyle: consistent

# these don't make sense pre-Rails 4
Rails/FindBy:
Enabled: false
Rails/ActionFilter:
Enabled: false

# these are invalid pre-Rails 5
Rails/HttpPositionalArguments:
Enabled: false

# these are invalid pre-Ruby 2.4
Performance/RegexpMatch:
Enabled: false

# Things we may want to tighten down later
Metrics/AbcSize:
Enabled: false
Metrics/LineLength:
Max: 160
Metrics/MethodLength:
Max: 100
Metrics/ClassLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
Metrics/BlockLength:
Max: 50
Exclude:
- gems/*/spec/**/*.rb
- gems/plugins/*/spec_canvas/**/*.rb
- spec/**/*.rb
- pact/spec/**/*_spec.rb
Metrics/CyclomaticComplexity:
Max: 28
Metrics/PerceivedComplexity:
Max: 28
RSpec/InstanceVariable:
Enabled: false
RSpec/ExampleWording:
Enabled: false
RSpec/ContextWording:
Enabled: false
RSpec/ExampleLength:
Max: 48
RSpec/NestedGroups:
Max: 5
RSpec/DescribedClass:
Enabled: false
RSpec/DescribeClass:
Enabled: false
Style/HashSyntax:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/ScatteredSetup:
Enabled: false
Style/RescueStandardError:
Enabled: false
4 changes: 3 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ group :development, :test do
gem 'phantomjs', '1.9.7.1'
gem 'guard-jasmine', '~> 2.0'
gem 'brakeman', require: false
gem 'rubocop', '0.52.1', require: false
gem 'rubocop-rspec', '1.22.2', require: false
end

group :test do
Expand All @@ -84,7 +86,7 @@ group :test do
# will need to upgrade capybara-webkit as it's own commit and step up background
# dependencies (like QT & xvfb) on all platforms that run cucumber tests as part of a single
# upgrade
gem 'capybara-webkit', '1.3.1'
gem 'capybara-webkit', '1.15.1'
gem 'capybara-screenshot'
gem 'factory_bot_rails'
gem 'guard-rspec'
Expand Down
25 changes: 22 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ GEM
arel (9.0.0)
aroi (0.0.6)
rails (>= 3.2, < 5.3)
ast (2.4.0)
aws-eventstream (1.0.1)
aws-partitions (1.114.0)
aws-sdk-core (3.38.0)
Expand Down Expand Up @@ -85,8 +86,8 @@ GEM
capybara-screenshot (1.0.22)
capybara (>= 1.0, < 4)
launchy
capybara-webkit (1.3.1)
capybara (>= 2.0.2, < 2.5.0)
capybara-webkit (1.15.1)
capybara (>= 2.3, < 4.0)
json
childprocess (0.9.0)
ffi (~> 1.0, >= 1.0.11)
Expand Down Expand Up @@ -253,11 +254,15 @@ GEM
nenv (~> 0.1)
shellany (~> 0.0)
oauth (0.5.4)
parallel (1.18.0)
parser (2.6.5.0)
ast (~> 2.4.0)
paul_bunyan (1.5.3)
request_store
pg (1.1.3)
phantomjs (1.9.7.1)
power_assert (1.1.3)
powerpack (0.1.2)
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
Expand Down Expand Up @@ -299,6 +304,7 @@ GEM
method_source
rake (>= 0.8.7)
thor (>= 0.19.0, < 2.0)
rainbow (3.0.0)
rake (12.3.2)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
Expand Down Expand Up @@ -362,6 +368,16 @@ GEM
rspec-mocks (~> 3.8.0)
rspec-support (~> 3.8.0)
rspec-support (3.8.0)
rubocop (0.52.1)
parallel (~> 1.10)
parser (>= 2.4.0.2, < 3.0)
powerpack (~> 0.1)
rainbow (>= 2.2.2, < 4.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
rubocop-rspec (1.22.2)
rubocop (>= 0.52.1)
ruby-progressbar (1.10.1)
ruby_dep (1.5.0)
rufus-scheduler (3.4.2)
et-orbi (~> 1.0)
Expand Down Expand Up @@ -420,6 +436,7 @@ GEM
thread_safe (~> 0.1)
uglifier (4.1.20)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.6.0)
vegas (0.1.11)
rack (>= 1.0.0)
webmock (3.4.2)
Expand All @@ -444,7 +461,7 @@ DEPENDENCIES
byebug
canvas_oauth_engine (~> 2.1.2)
capybara-screenshot
capybara-webkit (= 1.3.1)
capybara-webkit (= 1.15.1)
chronic (~> 0.10)
coffee-rails (~> 5.0.0)
coffee-script (= 2.2.0)
Expand Down Expand Up @@ -485,6 +502,8 @@ DEPENDENCIES
rspec-collection_matchers
rspec-its
rspec-rails
rubocop (= 0.52.1)
rubocop-rspec (= 1.22.2)
rufus-scheduler (= 3.4.2)
sass-rails (~> 5.0.0)
sentry-raven (~> 2.0)
Expand Down

0 comments on commit a35ba28

Please sign in to comment.