From 17307b4d929c3315add2355710a1839e0c08ddff Mon Sep 17 00:00:00 2001 From: Peter Cai <222655+pcai@users.noreply.github.com> Date: Mon, 30 Sep 2024 14:16:01 -0400 Subject: [PATCH] support relative BUNDLE_GEMFILE path in tests (#245) * support relative BUNDLE_GEMFILE * reduce test verbosity * remove duplicate require --- .github/workflows/ci.yml | 2 +- CHANGELOG.md | 1 + gemfiles/rails_head.gemfile | 2 +- test/integration/tasks_test.rb | 12 +++++++----- test/test_helper.rb | 2 -- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e86026..8f8117e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,7 +78,7 @@ jobs: - ruby: "head" gemfile: gemfiles/rails_head.gemfile env: - BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }} + BUNDLE_GEMFILE: ${{ matrix.gemfile }} steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3114c37..ccd667b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Test Rails 7.1 and 7.2 (https://github.com/zombocom/derailed_benchmarks/pull/242) - Switch from dead_end to syntax_suggest (https://github.com/zombocom/derailed_benchmarks/pull/243) - require `ruby2_keywords` so drb doesn't break in ruby < 2.7 (https://github.com/zombocom/derailed_benchmarks/pull/244) +- support relative BUNDLE_GEMFILE in tests (https://github.com/zombocom/derailed_benchmarks/pull/245) ## 2.1.2 diff --git a/gemfiles/rails_head.gemfile b/gemfiles/rails_head.gemfile index 95e43f4..a0c6acd 100644 --- a/gemfiles/rails_head.gemfile +++ b/gemfiles/rails_head.gemfile @@ -1,6 +1,6 @@ # frozen_string_literal: true -# $ BUNDLE_GEMFILE="$(pwd)/gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb:50 +# $ BUNDLE_GEMFILE="gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb:50 source "https://rubygems.org" diff --git a/test/integration/tasks_test.rb b/test/integration/tasks_test.rb index bb980a6..c32911f 100644 --- a/test/integration/tasks_test.rb +++ b/test/integration/tasks_test.rb @@ -14,7 +14,6 @@ def teardown end def run!(cmd) - puts "Running: #{cmd}" out = `#{cmd}` raise "Could not run #{cmd}, output: #{out}" unless $?.success? out @@ -25,8 +24,11 @@ def rake(cmd, options = {}) env = options[:env] || {} env_string = env.map {|key, value| "#{key.shellescape}=#{value.to_s.shellescape}" }.join(" ") cmd = "env #{env_string} bundle exec rake -f perf.rake #{cmd} --trace" - puts "Running: #{cmd}" - result = Bundler.with_original_env { `cd '#{rails_app_path}' && #{cmd} 2>&1` } + result = Bundler.with_original_env do + # Ensure relative BUNDLE_GEMFILE is expanded so path is still correct after cd + ENV['BUNDLE_GEMFILE'] = File.expand_path(ENV['BUNDLE_GEMFILE']) if ENV['BUNDLE_GEMFILE'] + `cd '#{rails_app_path}' && #{cmd} 2>&1` + end if assert_success && !$?.success? puts result raise "Expected '#{cmd}' to return a success status.\nOutput: #{result}" @@ -44,7 +46,7 @@ def rake(cmd, options = {}) end test 'rails perf:library from git' do - # BUNDLE_GEMFILE="$(pwd)/gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb: + # BUNDLE_GEMFILE="gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb: skip # unless ENV['USING_RAILS_GIT'] @@ -54,7 +56,7 @@ def rake(cmd, options = {}) end test "rails perf:library with bad script" do - # BUNDLE_GEMFILE="$(pwd)/gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb: + # BUNDLE_GEMFILE="gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb: skip # unless ENV['USING_RAILS_GIT'] diff --git a/test/test_helper.rb b/test/test_helper.rb index 69bd40d..fcc9ef5 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -6,7 +6,6 @@ # Configure Rails Envinronment ENV["RAILS_ENV"] = "test" - require "ruby2_keywords" if RUBY_VERSION < "2.7" require 'rails' @@ -18,7 +17,6 @@ require 'derailed_benchmarks' require File.expand_path("../rails_app/config/environment.rb", __FILE__) -require "rails/test_help" ActionMailer::Base.delivery_method = :test ActionMailer::Base.perform_deliveries = true