From 2d31a14789f00243d75e368cb781e6944a61b16f Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Wed, 6 May 2020 17:22:25 +0200 Subject: [PATCH] Revert "DEV: Move rubocop config to rubocop-discourse (#9616)" This reverts commit e23f1a907134d5241101109401b2a097132c81ee. Reverting as this currently breaks our plugin linting job in GithHub Action and Jenkins. Will re-revert after all the plugins get the latest rubocop config and/or a (potential) rubocop issue is fixed. --- .rubocop.yml | 359 ++++++++++++++++++++++++++++++++++++++++++++++++++- Gemfile | 2 + Gemfile.lock | 2 + 3 files changed, 361 insertions(+), 2 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index d46296cf883..0cb02e3e975 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,2 +1,357 @@ -inherit_gem: - rubocop-discourse: default.yml +require: + - rubocop-discourse + - rubocop-rspec + +AllCops: + TargetRubyVersion: 2.6 + DisabledByDefault: true + Exclude: + - "db/schema.rb" + - "bundle/**/*" + - "vendor/**/*" + - "node_modules/**/*" + - "public/**/*" + - "plugins/**/gems/**/*" + +Discourse: + Enabled: true + +Discourse/NoChdir: + Exclude: + - 'spec/**/*' # Specs are run sequentially, so chdir can be used + - 'plugins/*/spec/**/*' + +# Prefer &&/|| over and/or. +Style/AndOr: + Enabled: true + +Style/FrozenStringLiteralComment: + Enabled: true + +# Align `when` with `case`. +Layout/CaseIndentation: + Enabled: true + +# Align comments with method definitions. +Layout/CommentIndentation: + Enabled: true + +# No extra empty lines. +Layout/EmptyLines: + Enabled: true + +# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }. +Style/HashSyntax: + Enabled: true + +# Two spaces, no tabs (for indentation). +Layout/IndentationWidth: + Enabled: true + +Layout/SpaceAfterColon: + Enabled: true + +Layout/SpaceAfterComma: + Enabled: true + +Layout/SpaceAroundEqualsInParameterDefault: + Enabled: true + +Layout/SpaceAroundKeyword: + Enabled: true + +Layout/SpaceAroundOperators: + Enabled: true + +Layout/SpaceBeforeFirstArg: + Enabled: true + +# Defining a method with parameters needs parentheses. +Style/MethodDefParentheses: + Enabled: true + +# Use `foo {}` not `foo{}`. +Layout/SpaceBeforeBlockBraces: + Enabled: true + +# Use `foo { bar }` not `foo {bar}`. +Layout/SpaceInsideBlockBraces: + Enabled: true + +# Use `{ a: 1 }` not `{a:1}`. +Layout/SpaceInsideHashLiteralBraces: + Enabled: true + +Layout/SpaceInsideParens: + Enabled: true + +# Detect hard tabs, no hard tabs. +Layout/IndentationStyle: + Enabled: true + +# Blank lines should not have any spaces. +Layout/TrailingEmptyLines: + Enabled: true + +# No trailing whitespace. +Layout/TrailingWhitespace: + Enabled: true + +Lint/Debugger: + Enabled: true + +Layout/BlockAlignment: + Enabled: true + +# Align `end` with the matching keyword or starting expression except for +# assignments, where it should be aligned with the LHS. +Layout/EndAlignment: + Enabled: true + EnforcedStyleAlignWith: variable + +# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg. +Lint/RequireParentheses: + Enabled: true + +Lint/ShadowingOuterLocalVariable: + Enabled: true + +Layout/MultilineMethodCallIndentation: + Enabled: true + EnforcedStyle: indented + +Layout/HashAlignment: + Enabled: true + +Bundler/OrderedGems: + Enabled: false + +Style/SingleLineMethods: + Enabled: true + +Style/Semicolon: + Enabled: true + AllowAsExpressionSeparator: true + +Style/RedundantReturn: + Enabled: true + +Style/GlobalVars: + Enabled: true + Severity: warning + Exclude: + - 'lib/tasks/**/*' + - 'script/**/*' + - 'spec/**/*.rb' + - 'plugins/*/spec/**/*' + +# Specs + +RSpec/AnyInstance: + Enabled: false # To be decided + +RSpec/AroundBlock: + Enabled: true + +RSpec/BeforeAfterAll: + Enabled: false # To be decided + +RSpec/ContextMethod: + Enabled: false # TODO + +RSpec/ContextWording: + Enabled: false # To be decided + +RSpec/DescribeClass: + Enabled: false # To be decided + +RSpec/DescribeMethod: + Enabled: true + +RSpec/DescribeSymbol: + Enabled: false # To be decided + +RSpec/DescribedClass: + Enabled: false # To be decided + +RSpec/DescribedClassModuleWrapping: + Enabled: false # To be decided + +RSpec/EmptyExampleGroup: + Enabled: true + Exclude: + - 'spec/requests/api/*' + +RSpec/EmptyLineAfterExample: + Enabled: false # TODO + +RSpec/EmptyLineAfterExampleGroup: + Enabled: false # TODO + +RSpec/EmptyLineAfterFinalLet: + Enabled: false # TODO + +RSpec/EmptyLineAfterHook: + Enabled: false # TODO + +RSpec/EmptyLineAfterSubject: + Enabled: false # TODO + +RSpec/ExampleLength: + Enabled: false # To be decided + +RSpec/ExampleWithoutDescription: + Enabled: true + +RSpec/ExampleWording: + Enabled: false # TODO + +RSpec/ExpectActual: + Enabled: true + +RSpec/ExpectChange: + Enabled: false # To be decided + +RSpec/ExpectInHook: + Enabled: false # To be decided + +RSpec/ExpectOutput: + Enabled: true + +RSpec/FilePath: + Enabled: false # To be decided + +RSpec/Focus: + Enabled: true + +RSpec/HookArgument: + Enabled: false # TODO + +RSpec/HooksBeforeExamples: + Enabled: false # TODO + +RSpec/ImplicitBlockExpectation: + Enabled: true + +RSpec/ImplicitExpect: + Enabled: false # To be decided + +RSpec/ImplicitSubject: + Enabled: false # To be decided + +RSpec/InstanceSpy: + Enabled: true + +RSpec/InstanceVariable: + Enabled: false # TODO + +RSpec/InvalidPredicateMatcher: + Enabled: true + +RSpec/ItBehavesLike: + Enabled: true + +RSpec/IteratedExpectation: + Enabled: false # To be decided + +RSpec/LeadingSubject: + Enabled: false # TODO + +RSpec/LeakyConstantDeclaration: + Enabled: false # To be decided + +RSpec/LetBeforeExamples: + Enabled: false # TODO + +RSpec/LetSetup: + Enabled: false # TODO + +RSpec/MessageChain: + Enabled: true + +RSpec/MessageSpies: + Enabled: true + +RSpec/MissingExampleGroupArgument: + Enabled: true + +RSpec/MultipleDescribes: + Enabled: false # TODO + +RSpec/MultipleSubjects: + Enabled: true + +RSpec/NamedSubject: + Enabled: false # To be decided + +RSpec/NestedGroups: + Enabled: false # To be decided + +RSpec/OverwritingSetup: + Enabled: true + +RSpec/ReceiveCounts: + Enabled: true + +RSpec/ReceiveNever: + Enabled: true + +RSpec/RepeatedDescription: + Enabled: false # TODO + +RSpec/RepeatedExample: + Enabled: false # TODO + +RSpec/RepeatedExampleGroupBody: + Enabled: false # TODO + +RSpec/RepeatedExampleGroupDescription: + Enabled: false # TODO + +RSpec/ReturnFromStub: + Enabled: true + +RSpec/ScatteredSetup: + Enabled: false # TODO + +RSpec/SharedContext: + Enabled: true + +RSpec/SharedExamples: + Enabled: true + +RSpec/SingleArgumentMessageChain: + Enabled: true + +RSpec/SubjectStub: + Enabled: true + +RSpec/UnspecifiedException: + Enabled: true + +RSpec/VerifiedDoubles: + Enabled: true + +RSpec/VoidExpect: + Enabled: true + +RSpec/Yield: + Enabled: true + +Capybara/CurrentPathExpectation: + Enabled: true + +Capybara/FeatureMethods: + Enabled: true + +FactoryBot/AttributeDefinedStatically: + Enabled: true + +FactoryBot/CreateList: + Enabled: true + +FactoryBot/FactoryClassName: + Enabled: true + +Rails/HttpStatus: + Enabled: true diff --git a/Gemfile b/Gemfile index 039acc6a2ad..742bf82d0b7 100644 --- a/Gemfile +++ b/Gemfile @@ -172,7 +172,9 @@ group :test, :development do gem 'shoulda-matchers', require: false gem 'rspec-html-matchers' gem 'byebug', require: ENV['RM_INFO'].nil?, platform: :mri + gem 'rubocop', require: false gem "rubocop-discourse", require: false + gem "rubocop-rspec", require: false gem 'parallel_tests' gem 'rswag-specs' diff --git a/Gemfile.lock b/Gemfile.lock index 6d97e8a504e..839f58f1487 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -528,7 +528,9 @@ DEPENDENCIES rspec-rails rswag-specs rtlit + rubocop rubocop-discourse + rubocop-rspec ruby-prof ruby-readability rubyzip