Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
splitice committed Sep 28, 2024
2 parents 30065a1 + c63cde1 commit f5ed320
Show file tree
Hide file tree
Showing 137 changed files with 5,450 additions and 2,208 deletions.
10 changes: 10 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120
77 changes: 52 additions & 25 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,44 @@ env:

jobs:
tests:
name: Test & lint
name: Test
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
ruby: ['2.4', '2.5', '2.6', '2.7', 'jruby', 'truffleruby']
gemfile: ['gemfiles/activerecord_4.2.0.gemfile', 'gemfiles/activerecord_5.0.2.gemfile', 'gemfiles/activerecord_5.1.0.gemfile', 'gemfiles/activerecord_5.2.2.gemfile', 'gemfiles/activerecord_6.0.0.gemfile', 'gemfiles/activerecord_6.1.0.gemfile', 'gemfiles/activerecord_master.gemfile']
exclude:
- gemfile: 'gemfiles/activerecord_4.2.0.gemfile'
ruby: '2.7' # rails 4.2 can't run on ruby 2.7 due to BigDecimal API change
- gemfile: 'gemfiles/activerecord_4.2.0.gemfile'
ruby: 'truffleruby' # TruffleRuby 21.0 targets Ruby 2.7, same as above
- gemfile: 'gemfiles/activerecord_master.gemfile'
ruby: '2.6' # rails 7+ requires ruby 3.0+
- gemfile: 'gemfiles/activerecord_master.gemfile'
ruby: '2.5' # rails 7+ requires ruby 3.0+
- gemfile: 'gemfiles/activerecord_6.0.0.gemfile'
ruby: '2.4' # rails 6+ requires ruby 2.5+
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3']
gemfile: ['gemfiles/activerecord_5.2.2.gemfile', 'gemfiles/activerecord_6.0.0.gemfile', 'gemfiles/activerecord_6.1.0.gemfile', 'gemfiles/activerecord_7.0.0.gemfile', 'gemfiles/activerecord_7.1.0.gemfile', 'gemfiles/activerecord_main.gemfile']
include:
- gemfile: 'gemfiles/activerecord_7.1.0.gemfile'
ruby: '3.3'
- gemfile: 'gemfiles/activerecord_7.1.0.gemfile'
ruby: '3.0'
- gemfile: 'gemfiles/activerecord_7.0.0.gemfile'
ruby: '3.3'
- gemfile: 'gemfiles/activerecord_7.0.0.gemfile'
ruby: '3.0'
- gemfile: 'gemfiles/activerecord_6.1.0.gemfile'
ruby: '2.4' # rails 6+ requires ruby 2.5+
- gemfile: 'gemfiles/activerecord_master.gemfile'
ruby: '2.4' # rails 6+ requires ruby 2.5+
- gemfile: 'gemfiles/activerecord_5.0.2.gemfile'
ruby: 'jruby' # this *should* work - there's a test failure; it's not incompatible like the other excludes. could be an issue in Rails 5.0.2?
ruby: '3.3'
- gemfile: 'gemfiles/activerecord_6.1.0.gemfile'
ruby: 'jruby' # this *should* work. it seems like there's an issue with rails 6 on jruby.
- gemfile: 'gemfiles/activerecord_master.gemfile'
ruby: 'jruby' # this *should* work. it seems like there's an issue with rails 6 on jruby.

ruby: '3.0'
exclude:
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
ruby: '3.0'
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
ruby: '3.1'
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
ruby: '3.2'
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
ruby: '3.3'
- gemfile: 'gemfiles/activerecord_7.0.0.gemfile'
ruby: '2.7'
- gemfile: 'gemfiles/activerecord_7.1.0.gemfile'
ruby: '2.7'
- gemfile: 'gemfiles/activerecord_main.gemfile'
ruby: '2.7'
- gemfile: 'gemfiles/activerecord_main.gemfile'
ruby: '3.0'
env:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}

Expand Down Expand Up @@ -76,7 +84,26 @@ jobs:
# run: bundle exec rubocop

- name: Run tests on sqlite
run: DB=sqlite bundle exec rake
run: DB=sqlite bundle exec rspec

- name: Run tests on postgres
run: DB=postgres bundle exec rake
run: DB=postgres bundle exec rspec

lint:
name: Lint
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: '20'

- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
bundler-cache: true

- name: Run linter
run: bundle exec rubocop
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ Gemfile.lock
.ruby-version
.ruby-gemset
/tmp
.vitepress/cache
node_modules
.vitepress/dist
16 changes: 14 additions & 2 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,32 @@
inherit_from: .rubocop_todo.yml

Style/Documentation:
Enabled: false

Style/NonNilCheck:
IncludeSemanticChanges: true

Style/RedundantInitialize:
Enabled: false

Style/EmptyMethod:
Enabled: false

Style/ClassAndModuleChildren:
Enabled: false

Metrics/LineLength:
Layout/LineLength:
Max: 120

Metrics/BlockLength:
Exclude:
- 'lib/cancan/matchers.rb'
- '**/*_spec.rb'

Metrics/ClassLength:
Exclude:
- 'lib/cancan/model_adapters/active_record_adapter.rb'

# TODO
# Offense count: 2
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
Expand All @@ -34,8 +43,11 @@ Lint/AmbiguousBlockAssociation:
Enabled: false

AllCops:
TargetRubyVersion: 2.2.0
NewCops: enable
SuggestExtensions: false
TargetRubyVersion: 3.0
Exclude:
- 'gemfiles/**/*'
- 'vendor/**/*'
- 'Appraisals'
- 'node_modules/**/*'
219 changes: 219 additions & 0 deletions .rubocop_todo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2022-03-15 14:26:54 UTC using RuboCop version 1.26.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.

# Offense count: 1
# This cop supports safe auto-correction (--auto-correct).
# Configuration parameters: Include.
# Include: **/*.gemspec
Gemspec/RequireMFA:
Exclude:
- 'cancancan.gemspec'

# Offense count: 1
# Configuration parameters: Include.
# Include: **/*.gemspec
Gemspec/RequiredRubyVersion:
Exclude:
- 'cancancan.gemspec'

# Offense count: 2
# This cop supports safe auto-correction (--auto-correct).
# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, AllowAdjacentOneLineDefs, NumberOfEmptyLines.
Layout/EmptyLineBetweenDefs:
Exclude:
- 'spec/cancan/ability_spec.rb'

# Offense count: 3
# This cop supports safe auto-correction (--auto-correct).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: aligned, indented
Layout/LineEndStringConcatenationIndentation:
Exclude:
- 'lib/cancan/ability/rules.rb'
- 'lib/cancan/rule.rb'
- 'spec/cancan/model_adapters/active_record_adapter_spec.rb'

# Offense count: 1
# This cop supports safe auto-correction (--auto-correct).
Lint/AmbiguousOperatorPrecedence:
Exclude:
- 'lib/cancan/controller_resource.rb'

# Offense count: 77
# Configuration parameters: AllowedMethods.
# AllowedMethods: enums
Lint/ConstantDefinitionInBlock:
Exclude:
- 'spec/cancan/ability_spec.rb'
- 'spec/cancan/controller_resource_spec.rb'
- 'spec/cancan/model_adapters/accessible_by_has_many_through_spec.rb'
- 'spec/cancan/model_adapters/accessible_by_integration_spec.rb'
- 'spec/cancan/model_adapters/active_record_4_adapter_spec.rb'
- 'spec/cancan/model_adapters/active_record_adapter_spec.rb'
- 'spec/cancan/model_adapters/conditions_extractor_spec.rb'
- 'spec/cancan/model_adapters/conditions_normalizer_spec.rb'
- 'spec/cancan/model_adapters/has_and_belongs_to_many_spec.rb'
- 'spec/cancan/rule_compressor_spec.rb'
- 'spec/cancan/rule_spec.rb'

# Offense count: 1
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches.
Lint/DuplicateBranch:
Exclude:
- 'spec/cancan/model_adapters/active_record_adapter_spec.rb'

# Offense count: 3
# Configuration parameters: AllowComments, AllowEmptyLambdas.
Lint/EmptyBlock:
Exclude:
- 'spec/cancan/model_adapters/conditions_normalizer_spec.rb'

# Offense count: 4
# Configuration parameters: AllowComments.
Lint/EmptyClass:
Exclude:
- 'spec/cancan/controller_resource_spec.rb'
- 'spec/cancan/rule_compressor_spec.rb'

# Offense count: 2
Lint/MissingSuper:
Exclude:
- 'lib/cancan/exceptions.rb'
- 'lib/cancan/model_adapters/abstract_adapter.rb'

# Offense count: 1
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 18

# Offense count: 1
# Configuration parameters: Max, CountKeywordArgs.
Metrics/ParameterLists:
MaxOptionalParameters: 4

# Offense count: 1
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
Naming/VariableNumber:
Exclude:
- 'spec/cancan/model_adapters/conditions_extractor_spec.rb'

# Offense count: 2
# This cop supports safe auto-correction (--auto-correct).
Style/BisectedAttrAccessor:
Exclude:
- 'lib/cancan/rule.rb'

# Offense count: 5
# This cop supports safe auto-correction (--auto-correct).
# Configuration parameters: IgnoredMethods.
# IgnoredMethods: ==, equal?, eql?
Style/ClassEqualityComparison:
Exclude:
- 'lib/cancan/ability.rb'
- 'lib/cancan/conditions_matcher.rb'
- 'lib/cancan/relevant.rb'
- 'lib/cancan/unauthorized_message_resolver.rb'

# Offense count: 1
# This cop supports unsafe auto-correction (--auto-correct-all).
Style/CollectionCompact:
Exclude:
- 'lib/cancan/ability.rb'

# Offense count: 4
# Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, IgnoredMethods.
# SupportedStyles: annotated, template, unannotated
Style/FormatStringToken:
Exclude:
- 'spec/cancan/ability_spec.rb'

# Offense count: 9
# This cop supports safe auto-correction (--auto-correct).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
Style/FrozenStringLiteralComment:
Exclude:
- 'lib/cancan/class_matcher.rb'
- 'lib/cancan/model_adapters/conditions_normalizer.rb'
- 'lib/cancan/model_adapters/sti_normalizer.rb'
- 'lib/cancan/model_adapters/strategies/base.rb'
- 'lib/cancan/model_adapters/strategies/left_join.rb'
- 'lib/cancan/model_adapters/strategies/subquery.rb'
- 'spec/cancan/model_adapters/accessible_by_has_many_through_spec.rb'
- 'spec/cancan/model_adapters/conditions_normalizer_spec.rb'
- 'spec/cancan/model_adapters/has_and_belongs_to_many_spec.rb'

# Offense count: 1
# This cop supports safe auto-correction (--auto-correct).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: same_as_string_literals, single_quotes, double_quotes
Style/QuotedSymbols:
Exclude:
- 'lib/cancan/exceptions.rb'

# Offense count: 3
# This cop supports safe auto-correction (--auto-correct).
Style/RedundantBegin:
Exclude:
- 'spec/cancan/ability_spec.rb'

# Offense count: 12
# This cop supports safe auto-correction (--auto-correct).
Style/RedundantFileExtensionInRequire:
Exclude:
- 'lib/cancan/ability.rb'
- 'lib/cancan/controller_resource.rb'
- 'lib/cancan/controller_resource_loader.rb'
- 'lib/cancan/rule.rb'
- 'lib/cancan/rules_compressor.rb'

# Offense count: 1
# This cop supports safe auto-correction (--auto-correct).
Style/RedundantFreeze:
Exclude:
- 'lib/cancan/version.rb'

# Offense count: 4
# This cop supports safe auto-correction (--auto-correct).
Style/RedundantRegexpEscape:
Exclude:
- 'spec/changelog_spec.rb'

# Offense count: 1
# This cop supports safe auto-correction (--auto-correct).
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods.
# AllowedMethods: present?, blank?, presence, try, try!
Style/SafeNavigation:
Exclude:
- 'lib/cancan/controller_resource_builder.rb'

# Offense count: 3
# This cop supports unsafe auto-correction (--auto-correct-all).
Style/SlicingWithRange:
Exclude:
- 'lib/cancan/matchers.rb'
- 'lib/cancan/rules_compressor.rb'
- 'spec/cancan/rule_compressor_spec.rb'

# Offense count: 2
# This cop supports unsafe auto-correction (--auto-correct-all).
Style/StringChars:
Exclude:
- 'spec/matchers.rb'

# Offense count: 1
# This cop supports unsafe auto-correction (--auto-correct-all).
# Configuration parameters: Mode.
Style/StringConcatenation:
Exclude:
- 'lib/cancan/rule.rb'

Lint/SafeNavigationChain:
Enabled: false
Loading

0 comments on commit f5ed320

Please sign in to comment.