diff --git a/.rubocop.yml b/.rubocop.yml index 6a306a1..671f076 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,9 +2,15 @@ inherit_from: - .rubocop_todo.yml - ./.rubocop_todo.yml +require: rubocop-performance + +Performance: + Enabled: true + AllCops: Exclude: - 'performance/shopify/*' + - 'vendor/bundle/**/*' - 'pkg/**' Metrics/BlockNesting: @@ -79,9 +85,6 @@ Style/TrailingCommaInArrayLiteral: Style/TrailingCommaInHashLiteral: Enabled: false -Layout/IndentHash: - EnforcedStyle: consistent - Style/FormatString: Enabled: false @@ -106,9 +109,6 @@ Style/RegexpLiteral: Style/SymbolLiteral: Enabled: false -Performance/Count: - Enabled: false - Naming/ConstantName: Enabled: false diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 4af3202..19c27e8 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2019-04-22 19:11:24 -0400 using RuboCop version 0.53.0. +# on 2019-08-27 22:42:50 +1000 using RuboCop version 0.74.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 @@ -8,16 +8,67 @@ # Offense count: 1 # Cop supports --auto-correct. -# Configuration parameters: Include, TreatCommentsAsGroupSeparators. +# Configuration parameters: TreatCommentsAsGroupSeparators, Include. # Include: **/*.gemspec Gemspec/OrderedDependencies: Exclude: - 'liquid.gemspec' +# Offense count: 1 +# Configuration parameters: Include. +# Include: **/*.gemspec, +Gemspec/RequiredRubyVersion: + Exclude: + - 'liquid.gemspec' + +# Offense count: 124 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, IndentationWidth. +# SupportedStyles: with_first_argument, with_fixed_indentation +Layout/AlignArguments: + Enabled: false + +# Offense count: 7 +# Cop supports --auto-correct. +# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle. +# SupportedHashRocketStyles: key, separator, table +# SupportedColonStyles: key, separator, table +# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit +Layout/AlignHash: + Exclude: + - 'lib/liquid/condition.rb' + - 'lib/liquid/expression.rb' + - 'test/unit/context_unit_test.rb' + +# Offense count: 6 +# Cop supports --auto-correct. +Layout/ClosingHeredocIndentation: + Exclude: + - 'test/integration/tags/for_tag_test.rb' + +# Offense count: 25 +# Cop supports --auto-correct. +Layout/EmptyLineAfterGuardClause: + Exclude: + - 'lib/liquid/block.rb' + - 'lib/liquid/block_body.rb' + - 'lib/liquid/context.rb' + - 'lib/liquid/drop.rb' + - 'lib/liquid/lexer.rb' + - 'lib/liquid/parser.rb' + - 'lib/liquid/standardfilters.rb' + - 'lib/liquid/strainer.rb' + - 'lib/liquid/tags/for.rb' + - 'lib/liquid/tags/if.rb' + - 'lib/liquid/tags/include.rb' + - 'lib/liquid/utils.rb' + - 'lib/liquid/variable.rb' + - 'lib/liquid/variable_lookup.rb' + # Offense count: 5 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. -# SupportedStyles: auto_detection, squiggly, active_support, powerpack, unindent +# SupportedStyles: squiggly, active_support, powerpack, unindent Layout/IndentHeredoc: Exclude: - 'test/integration/tags/for_tag_test.rb' @@ -32,6 +83,13 @@ Layout/MultilineMethodCallBraceLayout: - 'test/integration/error_handling_test.rb' - 'test/unit/strainer_unit_test.rb' +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: AllowForAlignment. +Layout/SpaceAroundOperators: + Exclude: + - 'lib/liquid/condition.rb' + # Offense count: 2 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -46,7 +104,7 @@ Lint/Void: Exclude: - 'lib/liquid/parse_context.rb' -# Offense count: 53 +# Offense count: 52 Metrics/AbcSize: Max: 56 @@ -54,27 +112,25 @@ Metrics/AbcSize: Metrics/CyclomaticComplexity: Max: 13 -# Offense count: 112 -# Configuration parameters: CountComments. +# Offense count: 114 +# Configuration parameters: CountComments, ExcludedMethods. Metrics/MethodLength: Max: 38 -# Offense count: 8 +# Offense count: 9 Metrics/PerceivedComplexity: Max: 11 -# Offense count: 52 -# Configuration parameters: Blacklist. -# Blacklist: END, (?-mix:EO[A-Z]{1}) -Naming/HeredocDelimiterNaming: +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: PreferredName. +Naming/RescuedExceptionsVariableName: Exclude: - - 'test/integration/assign_test.rb' - - 'test/integration/capture_test.rb' - - 'test/integration/trim_mode_test.rb' + - 'lib/liquid/context.rb' -# Offense count: 23 +# Offense count: 20 # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames. -# AllowedNames: io, id +# AllowedNames: io, id, to, by, on, in, at, ip, db Naming/UncommunicativeMethodParamName: Exclude: - 'example/server/example_servlet.rb' @@ -82,15 +138,22 @@ Naming/UncommunicativeMethodParamName: - 'lib/liquid/context.rb' - 'lib/liquid/standardfilters.rb' - 'lib/liquid/tags/if.rb' - - 'lib/liquid/utils.rb' - 'lib/liquid/variable.rb' - 'test/integration/filter_test.rb' - 'test/integration/standard_filter_test.rb' - - 'test/integration/tags/for_tag_test.rb' - 'test/integration/template_test.rb' - 'test/unit/condition_unit_test.rb' -# Offense count: 12 +# Offense count: 3 +# Configuration parameters: EnforcedStyle. +# SupportedStyles: inline, group +Style/AccessModifierDeclarations: + Exclude: + - 'lib/liquid/tag.rb' + - 'lib/liquid/tags/include.rb' + - 'test/unit/strainer_unit_test.rb' + +# Offense count: 10 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: prefer_alias, prefer_alias_method @@ -117,15 +180,9 @@ Style/ConditionalAssignment: - 'lib/liquid/errors.rb' # Offense count: 1 -Style/DateTime: - Exclude: - - 'test/unit/context_unit_test.rb' - -# Offense count: 2 # Cop supports --auto-correct. Style/EmptyCaseCondition: Exclude: - - 'lib/liquid/block_body.rb' - 'lib/liquid/lexer.rb' # Offense count: 5 @@ -163,6 +220,13 @@ Style/FormatStringToken: - 'test/integration/filter_test.rb' - 'test/integration/hash_ordering_test.rb' +# Offense count: 103 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: always, never +Style/FrozenStringLiteralComment: + Enabled: false + # Offense count: 14 # Configuration parameters: MinBodyLength. Style/GuardClause: @@ -180,6 +244,13 @@ Style/GuardClause: - 'lib/liquid/variable.rb' - 'test/unit/tokenizer_unit_test.rb' +# Offense count: 52 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: literals, strict +Style/MutableConstant: + Enabled: false + # Offense count: 1 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, MinBodyLength. @@ -188,9 +259,9 @@ Style/Next: Exclude: - 'lib/liquid/tags/for.rb' -# Offense count: 4 +# Offense count: 13 # Cop supports --auto-correct. -# Configuration parameters: AutoCorrect, EnforcedStyle. +# Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods. # SupportedStyles: predicate, comparison Style/NumericPredicate: Exclude: @@ -199,6 +270,8 @@ Style/NumericPredicate: - 'lib/liquid/forloop_drop.rb' - 'lib/liquid/standardfilters.rb' - 'lib/liquid/tablerowloop_drop.rb' + - 'test/integration/standard_filter_test.rb' + - 'test/integration/template_test.rb' # Offense count: 14 # Cop supports --auto-correct. @@ -216,6 +289,16 @@ Style/RedundantSelf: Exclude: - 'lib/liquid/strainer.rb' +# Offense count: 3 +# Cop supports --auto-correct. +# Configuration parameters: ConvertCodeThatCanStartToReturnNil, Whitelist. +# Whitelist: present?, blank?, presence, try, try! +Style/SafeNavigation: + Exclude: + - 'lib/liquid/drop.rb' + - 'lib/liquid/strainer.rb' + - 'lib/liquid/tokenizer.rb' + # Offense count: 9 # Cop supports --auto-correct. # Configuration parameters: AllowAsExpressionSeparator. @@ -253,8 +336,9 @@ Style/WhileUntilModifier: Exclude: - 'lib/liquid/tags/case.rb' -# Offense count: 648 -# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. +# Offense count: 650 +# Cop supports --auto-correct. +# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. # URISchemes: http, https Metrics/LineLength: Max: 294 diff --git a/.travis.yml b/.travis.yml index 3a01754..082cb57 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,29 +1,21 @@ language: ruby rvm: - - 2.1 - - 2.2 - - 2.3 - 2.4 - 2.5 + - 2.6 + - 2.7 - ruby-head - jruby-head -# - rbx-2 - -sudo: false - -addons: - apt: - packages: - - libgmp3-dev + - truffleruby matrix: allow_failures: - rvm: ruby-head - rvm: jruby-head + - rvm: truffleruby -install: - - bundle install +cache: bundler script: bundle exec rake diff --git a/Gemfile b/Gemfile index 37ffe1d..370fa03 100644 --- a/Gemfile +++ b/Gemfile @@ -9,15 +9,16 @@ group :benchmark, :test do gem 'benchmark-ips' gem 'memory_profiler' - install_if -> { RUBY_PLATFORM !~ /mingw|mswin|java/ } do + install_if -> { RUBY_PLATFORM !~ /mingw|mswin|java/ && RUBY_ENGINE != 'truffleruby' } do gem 'stackprof' end end group :test do - gem 'rubocop', '~> 0.53.0' + gem 'rubocop', '~> 0.74.0', require: false + gem 'rubocop-performance', require: false - platform :mri do - gem 'liquid-c', github: 'Shopify/liquid-c', ref: '9168659de45d6d576fce30c735f857e597fa26f6' + platform :mri, :truffleruby do + gem 'liquid-c', github: 'Shopify/liquid-c', ref: '7ba926791ef8411984d0f3e41c6353fd716041c6' end end diff --git a/Rakefile b/Rakefile index 9650abb..f7186eb 100755 --- a/Rakefile +++ b/Rakefile @@ -19,8 +19,10 @@ task :warn_test do end task :rubocop do - require 'rubocop/rake_task' - RuboCop::RakeTask.new + if RUBY_ENGINE == 'ruby' + require 'rubocop/rake_task' + RuboCop::RakeTask.new + end end desc 'runs test suite with both strict and lax parsers' @@ -32,8 +34,8 @@ task :test do Rake::Task['base_test'].reenable Rake::Task['base_test'].invoke - if RUBY_ENGINE == 'ruby' - ENV['LIQUID-C'] = '1' + if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'truffleruby' + ENV['LIQUID_C'] = '1' ENV['LIQUID_PARSER_MODE'] = 'lax' Rake::Task['base_test'].reenable diff --git a/liquid.gemspec b/liquid.gemspec index e0e4ddb..89df19a 100644 --- a/liquid.gemspec +++ b/liquid.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |s| s.license = "MIT" # s.description = "A secure, non-evaling end user template engine with aesthetic markup." - s.required_ruby_version = ">= 2.1.0" + s.required_ruby_version = ">= 2.4.0" s.required_rubygems_version = ">= 1.3.7" s.test_files = Dir.glob("{test}/**/*") diff --git a/test/test_helper.rb b/test/test_helper.rb index 34e7553..affa2e4 100755 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -14,7 +14,7 @@ if env_mode = ENV['LIQUID_PARSER_MODE'] end Liquid::Template.error_mode = mode -if ENV['LIQUID-C'] == '1' +if ENV['LIQUID_C'] == '1' puts "-- LIQUID C" require 'liquid/c' end