From 917a54ea5e664c77e9576b594a5529246070aaf1 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Thu, 5 Sep 2024 21:07:52 +0200 Subject: [PATCH 1/2] Require Ruby 2.6 or newer --- .github/workflows/unit_tests.yaml | 2 +- .rubocop.yml | 2 +- facter.gemspec | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index cd0ee2bc5f..ee07ae3406 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -18,7 +18,7 @@ jobs: strategy: matrix: ruby: - - '2.5' + - '2.6' - '2.7' - '3.0' - '3.2' diff --git a/.rubocop.yml b/.rubocop.yml index edf01dc4b1..a3fc6582ba 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,7 +2,7 @@ inherit_from: .rubocop_todo.yml AllCops: - TargetRubyVersion: 2.5 + TargetRubyVersion: 2.6 Exclude: - acceptance/**/* - vendor/**/* diff --git a/facter.gemspec b/facter.gemspec index 8ff4deb55d..80745dff8d 100644 --- a/facter.gemspec +++ b/facter.gemspec @@ -24,7 +24,7 @@ Gem::Specification.new do |spec| base = "#{__dir__}#{File::SEPARATOR}" spec.files = dirs.map { |path| path.sub(base, '') } - spec.required_ruby_version = '>= 2.5', '< 4.0' + spec.required_ruby_version = '>= 2.6', '< 4.0' spec.bindir = 'bin' spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.require_paths = ['lib'] @@ -38,14 +38,14 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'ffi', '>= 1.15.5', '< 1.17.0', '!= 1.16.0', '!= 1.16.1', '!= 1.16.2' spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6' spec.add_development_dependency 'rspec', '~> 3.0' - spec.add_development_dependency 'rubocop', '~> 1.28' # last version to support 2.5 + spec.add_development_dependency 'rubocop', '~> 1.50.0' # last version to support 2.6 spec.add_development_dependency 'rubocop-performance', '~> 1.5.2' - spec.add_development_dependency 'rubocop-rspec', '~> 2.10' # last version to support 2.5 + spec.add_development_dependency 'rubocop-rspec', '~> 2.20.0' # last version to support 2.6 spec.add_development_dependency 'simplecov', '~> 0.17.1' spec.add_development_dependency 'sys-filesystem', '~> 1.4' spec.add_development_dependency 'webmock', '~> 3.12' spec.add_development_dependency 'yard', '~> 0.9' spec.add_runtime_dependency 'hocon', '~> 1.3' - spec.add_runtime_dependency 'thor', ['>= 1.0.1', '< 1.3'] # Thor 1.3.0 drops support for Ruby 2.5 + spec.add_runtime_dependency 'thor', '~> 1.0' end From b64b17940572a12976b6475eb15211e78137ff52 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Fri, 6 Sep 2024 11:42:20 +0200 Subject: [PATCH 2/2] rubocop: autofix --- .rubocop_todo.yml | 49 +++++++++++++---------- lib/docs/generate.rb | 2 +- lib/facter/framework/cli/cli.rb | 2 +- spec/custom_facts/util/collection_spec.rb | 2 +- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 11e618abb2..4529fdc997 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2024-01-08 20:12:30 UTC using RuboCop version 1.59.0. +# on 2024-09-06 09:41:23 UTC using RuboCop version 1.50.2. # 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 @@ -18,35 +18,40 @@ Performance/RegexpMatch: RSpec/FilePath: Enabled: false -# Need to remove logger class variables +# Offense count: 14 Style/ClassVars: Exclude: - 'lib/facter/framework/logging/logger.rb' - 'spec/custom_facts/puppetlabs_spec/files.rb' - - 'spec/facter/util/file_helper_spec.rb' - - 'spec/framework/core/fact/internal/internal_fact_manager_spec.rb' - 'spec/framework/logging/logger_spec.rb' +# Offense count: 977 +# Configuration parameters: AllowedConstants. Style/Documentation: + Enabled: false + +# Offense count: 2 +# This cop supports unsafe autocorrection (--autocorrect-all). +Style/IdenticalConditionalBranches: Exclude: - - 'lib/facter.rb' # should be documented - - 'lib/facter/config.rb' # should be documented - - 'lib/facter/custom_facts/**/*' # should be documented - - 'lib/facter/facts/**/*' # don't care - - 'lib/facter/framework/**/*' # should be documented - - 'lib/facter/models/**/*' # should be documented - - 'lib/facter/resolvers/**/*' # don't care - - 'lib/facter/util/**/*' - - 'lib/facter/version.rb' # auto updated - - 'spec/**/*' - - 'spec_integration/**/*' - - 'scripts/*' - - 'install.rb' + - 'lib/docs/generate.rb' -# While it would be preferable to use a keyword argument for the proxy setting in #get_request and #put_request, if we -# add keyword arguments to those methods Ruby < 3 misinterprets earlier positional arguments as a keyword arguments. -# This is because those positional arguments are hashes that use symbols as keys. -# TODO: revisit this after we drop Ruby < 3 support. +# Offense count: 2 +# Configuration parameters: AllowedMethods. +# AllowedMethods: respond_to_missing? Style/OptionalBooleanParameter: Exclude: - - 'lib/facter/util/resolvers/http.rb' \ No newline at end of file + - 'lib/facter/util/resolvers/http.rb' + +# Offense count: 13 +# This cop supports unsafe autocorrection (--autocorrect-all). +Style/SlicingWithRange: + Exclude: + - 'install.rb' + - 'lib/facter/facts/solaris/ldom.rb' + - 'lib/facter/framework/cli/cli.rb' + - 'lib/facter/resolvers/aix/serialnumber.rb' + - 'lib/facter/resolvers/freebsd/swap_memory.rb' + - 'lib/facter/resolvers/networking.rb' + - 'lib/facter/resolvers/partitions.rb' + - 'lib/facter/util/api_debugger.rb' diff --git a/lib/docs/generate.rb b/lib/docs/generate.rb index 9ed92a0112..73d2011b8c 100755 --- a/lib/docs/generate.rb +++ b/lib/docs/generate.rb @@ -21,7 +21,7 @@ def format_facts(fact_hash) erb = if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+ ERB.new(File.read(PATH_TO_TEMPLATE), trim_mode: '-') else - ERB.new(File.read(PATH_TO_TEMPLATE), nil, '-') + ERB.new(File.read(PATH_TO_TEMPLATE), trim_mode: '-') end erb.result(scope.instance_eval { binding }) end diff --git a/lib/facter/framework/cli/cli.rb b/lib/facter/framework/cli/cli.rb index 55d9c13c19..7f430f91f0 100755 --- a/lib/facter/framework/cli/cli.rb +++ b/lib/facter/framework/cli/cli.rb @@ -113,7 +113,7 @@ def man(*args) negate_options = %w[block cache custom_facts external_facts] template = File.join(File.dirname(__FILE__), '..', '..', 'templates', 'man.erb') - erb = ERB.new(File.read(template), nil, '-') + erb = ERB.new(File.read(template), trim_mode: '-') erb.filename = template puts erb.result(binding) end diff --git a/spec/custom_facts/util/collection_spec.rb b/spec/custom_facts/util/collection_spec.rb index eb378a8828..76f5a50992 100755 --- a/spec/custom_facts/util/collection_spec.rb +++ b/spec/custom_facts/util/collection_spec.rb @@ -287,7 +287,7 @@ def load(collection) end it 'converts the fact name to a string' do - collection.each do |fact, _value| # rubocop:disable Style/HashEachMethods + collection.each do |fact, _value| expect(fact).to be_instance_of(String) end end