From 328b63a5b4a83070b5381ed6a9de4d454ea65e9e Mon Sep 17 00:00:00 2001 From: Philip Harrison Date: Wed, 16 Jun 2021 10:12:35 +0100 Subject: [PATCH 1/2] Raise on ruby 2.7 deprecation warnings Break tests if we introduce any ruby 2.7 deprecation warnings. --- .github/workflows/ci.yml | 1 + common/spec/spec_helper.rb | 1 + common/spec/warning_monkey_patch.rb | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 common/spec/warning_monkey_patch.rb diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 842c71452e0..0088078d0f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,6 +88,7 @@ jobs: run: | docker run \ --env "CI=true" \ + --env "RAISE_ON_WARNINGS=true" \ --env "DEPENDABOT_TEST_ACCESS_TOKEN=${{ secrets.GITHUB_TOKEN }}" \ --env "SUITE_NAME=${{ matrix.suite.name }}" \ --rm "$CORE_CI_IMAGE" bash -c \ diff --git a/common/spec/spec_helper.rb b/common/spec/spec_helper.rb index b0bfa57f4f5..b3184786d6e 100644 --- a/common/spec/spec_helper.rb +++ b/common/spec/spec_helper.rb @@ -10,6 +10,7 @@ require "dependabot/dependency_file" require_relative "dummy_package_manager/dummy" +require_relative "warning_monkey_patch" if ENV["COVERAGE"] SimpleCov::Formatter::Console.output_style = "block" diff --git a/common/spec/warning_monkey_patch.rb b/common/spec/warning_monkey_patch.rb new file mode 100644 index 00000000000..c7699f25a61 --- /dev/null +++ b/common/spec/warning_monkey_patch.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +ALLOW_PATTERNS = [ + # Ignore parser warnings for ruby 2.7 minor version mismatches + # TODO: Fix these by upgrading to ruby 2.7.3 (requires ubuntu upgrade) + %r{parser/current is loading parser/ruby27}, + /2.7.\d-compliant syntax, but you are running 2.7.\d/, + %r{whitequark/parser} +].freeze + +# Called internally by Ruby for all warnings +module Warning + def self.warn(message) + $stderr.print(message) + + raise message if ENV["RAISE_ON_WARNINGS"].to_s == "true" && ALLOW_PATTERNS.none? { |pattern| pattern =~ message } + + return unless ENV["DEBUG_WARNINGS"] + + warn caller + $stderr.puts + end +end From 969443eec3e192ab3ef60be612a0315c13b456b3 Mon Sep 17 00:00:00 2001 From: Philip Harrison Date: Wed, 16 Jun 2021 11:17:39 +0100 Subject: [PATCH 2/2] Fix ruby 2.7 deprecations --- .../clients/bitbucket_with_retries.rb | 2 +- common/spec/dependabot/dependency_spec.rb | 18 +++++++++--------- .../spec/dependabot/security_advisory_spec.rb | 2 +- common/spec/dependabot/source_spec.rb | 4 ++-- gradle/spec/dependabot/gradle_spec.rb | 2 +- maven/spec/dependabot/maven_spec.rb | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/common/lib/dependabot/clients/bitbucket_with_retries.rb b/common/lib/dependabot/clients/bitbucket_with_retries.rb index 54bd87e6ecc..36e928831e0 100644 --- a/common/lib/dependabot/clients/bitbucket_with_retries.rb +++ b/common/lib/dependabot/clients/bitbucket_with_retries.rb @@ -29,7 +29,7 @@ def self.for_bitbucket_dot_org(credentials:) def initialize(max_retries: 3, **args) @max_retries = max_retries || 3 - @client = Bitbucket.new(args) + @client = Bitbucket.new(**args) end def method_missing(method_name, *args, &block) diff --git a/common/spec/dependabot/dependency_spec.rb b/common/spec/dependabot/dependency_spec.rb index fc4977393c3..e7d92ac153c 100644 --- a/common/spec/dependabot/dependency_spec.rb +++ b/common/spec/dependabot/dependency_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Dependabot::Dependency do describe ".new" do - subject(:dependency) { described_class.new(args) } + subject(:dependency) { described_class.new(**args) } let(:args) do { @@ -90,22 +90,22 @@ end context "when two dependencies are equal" do - let(:dependency1) { described_class.new(args) } - let(:dependency2) { described_class.new(args) } + let(:dependency1) { described_class.new(**args) } + let(:dependency2) { described_class.new(**args) } specify { expect(dependency1).to eq(dependency2) } end context "when two dependencies are not equal" do - let(:dependency1) { described_class.new(args) } - let(:dependency2) { described_class.new(args.merge(name: "dep2")) } + let(:dependency1) { described_class.new(**args) } + let(:dependency2) { described_class.new(**args.merge(name: "dep2")) } specify { expect(dependency1).to_not eq(dependency2) } end end describe "#production?" do - subject(:production?) { described_class.new(dependency_args).production? } + subject(:production?) { described_class.new(**dependency_args).production? } let(:dependency_args) do { @@ -141,7 +141,7 @@ end describe "#display_name" do - subject(:display_name) { described_class.new(dependency_args).display_name } + subject(:display_name) { described_class.new(**dependency_args).display_name } let(:dependency_args) do { @@ -155,7 +155,7 @@ end describe "#to_h" do - subject(:to_h) { described_class.new(dependency_args).to_h } + subject(:to_h) { described_class.new(**dependency_args).to_h } context "with requirements" do let(:dependency_args) do @@ -221,7 +221,7 @@ describe "#subdependency_metadata" do subject(:subdependency_metadata) do - described_class.new(dependency_args).subdependency_metadata + described_class.new(**dependency_args).subdependency_metadata end let(:dependency_args) do diff --git a/common/spec/dependabot/security_advisory_spec.rb b/common/spec/dependabot/security_advisory_spec.rb index 61dcb381f11..d83e557b7b1 100644 --- a/common/spec/dependabot/security_advisory_spec.rb +++ b/common/spec/dependabot/security_advisory_spec.rb @@ -16,7 +16,7 @@ let(:vulnerable_versions) { [Gem::Requirement.new(">= 1")] } describe ".new" do - subject(:security_advisory) { described_class.new(args) } + subject(:security_advisory) { described_class.new(**args) } let(:args) do { diff --git a/common/spec/dependabot/source_spec.rb b/common/spec/dependabot/source_spec.rb index 011be393f39..e7e65b9ded7 100644 --- a/common/spec/dependabot/source_spec.rb +++ b/common/spec/dependabot/source_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Dependabot::Source do describe ".new" do - subject { described_class.new(attrs) } + subject { described_class.new(**attrs) } context "without a hostname or api_endpoint" do let(:attrs) { { provider: "github", repo: "my/repo" } } @@ -171,7 +171,7 @@ end describe "#url_with_directory" do - let(:source) { described_class.new(attrs) } + let(:source) { described_class.new(**attrs) } subject { source.url_with_directory } let(:attrs) do diff --git a/gradle/spec/dependabot/gradle_spec.rb b/gradle/spec/dependabot/gradle_spec.rb index 52d3f8db44b..8affc869cfb 100644 --- a/gradle/spec/dependabot/gradle_spec.rb +++ b/gradle/spec/dependabot/gradle_spec.rb @@ -9,7 +9,7 @@ describe "Dependency#display_name" do subject(:display_name) do - Dependabot::Dependency.new(dependency_args).display_name + Dependabot::Dependency.new(**dependency_args).display_name end let(:dependency_args) do diff --git a/maven/spec/dependabot/maven_spec.rb b/maven/spec/dependabot/maven_spec.rb index 95cef4f0bae..83a1eca66a2 100644 --- a/maven/spec/dependabot/maven_spec.rb +++ b/maven/spec/dependabot/maven_spec.rb @@ -9,7 +9,7 @@ describe "Dependency#display_name" do subject(:display_name) do - Dependabot::Dependency.new(dependency_args).display_name + Dependabot::Dependency.new(**dependency_args).display_name end let(:dependency_args) do