Skip to content

Commit 9b94685

Browse files
authored
Merge pull request rails#50188 from skipkayhil/hm-fix-ci-env
Fix test infra depending on CI=true
2 parents 52affa8 + 91dedc0 commit 9b94685

File tree

11 files changed

+128
-137
lines changed

11 files changed

+128
-137
lines changed

actionmailbox/test/test_helper.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
ENV["RAILS_ENV"] = "test"
66
ENV["RAILS_INBOUND_EMAIL_PASSWORD"] = "tbsy84uSV1Kt3ZJZELY2TmShPRs91E3yL4tzf96297vBCkDWgL"
77

8-
require_relative "../../tools/test_common"
9-
108
require_relative "../test/dummy/config/environment"
119
ActiveRecord::Migrator.migrations_paths = [File.expand_path("../test/dummy/db/migrate", __dir__)]
1210
require "rails/test_help"
@@ -55,3 +53,5 @@ def bounce(to:)
5553
end
5654
end
5755
end
56+
57+
require_relative "../../tools/test_common"

actionpack/test/dispatch/system_testing/screenshot_helper_test.rb

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,17 +152,18 @@ def setup
152152
assert_match %r|url=artifact://.+?tmp/screenshots/1_x\.png|, display_image_actual
153153
end
154154

155-
test "take_failed_screenshot persists the image path in the test metadata" do
156-
skip "Older versions of Minitest don't support test metadata." unless Minitest::Runnable.method_defined?(:metadata)
157-
158-
Rails.stub :root, Pathname.getwd do
159-
@new_test.stub :passed?, false do
160-
Capybara::Session.stub :instance_created?, true do
161-
@new_test.stub :save_image, nil do
162-
@new_test.stub :show, -> (_) { } do
163-
@new_test.take_failed_screenshot
164-
165-
assert_equal @new_test.send(:relative_image_path), @new_test.metadata[:failure_screenshot_path]
155+
# minitest doesn't support metadata in the version locked on Ruby 2.7
156+
if RUBY_VERSION > "3.0"
157+
test "take_failed_screenshot persists the image path in the test metadata" do
158+
Rails.stub :root, Pathname.getwd do
159+
@new_test.stub :passed?, false do
160+
Capybara::Session.stub :instance_created?, true do
161+
@new_test.stub :save_image, nil do
162+
@new_test.stub :show, -> (_) { } do
163+
@new_test.take_failed_screenshot
164+
165+
assert_equal @new_test.send(:relative_image_path), @new_test.metadata[:failure_screenshot_path]
166+
end
166167
end
167168
end
168169
end

activejob/test/cases/queuing_test.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class QueuingTest < ActiveSupport::TestCase
2626
result = HelloJob.set(wait_until: 1.second.ago).perform_later "Jamie"
2727
assert result
2828
rescue NotImplementedError
29-
skip
3029
end
3130

3231
test "job returned by enqueue has the arguments available" do
@@ -38,7 +37,6 @@ class QueuingTest < ActiveSupport::TestCase
3837
job = HelloJob.set(wait_until: Time.utc(2014, 1, 1)).perform_later
3938
assert_equal Time.utc(2014, 1, 1), job.scheduled_at
4039
rescue NotImplementedError
41-
skip
4240
end
4341

4442
test "job is yielded to block after enqueue with successfully_enqueued property set" do
@@ -82,7 +80,6 @@ class QueuingTest < ActiveSupport::TestCase
8280
ActiveJob.perform_all_later(scheduled_job_1, scheduled_job_2)
8381
assert_equal ["Scheduled 2014 says hello", "Scheduled 2015 says hello"], JobBuffer.values.sort
8482
rescue NotImplementedError
85-
skip
8683
end
8784

8885
test "perform_all_later instrumentation" do

activejob/test/helper.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require_relative "../../tools/test_common"
4-
53
require "active_support/testing/strict_warnings"
64
require "active_job"
75
require "support/job_buffer"
@@ -23,3 +21,5 @@
2321
def adapter_is?(*adapter_class_symbols)
2422
adapter_class_symbols.map(&:to_s).include? ActiveJob::Base.queue_adapter_name
2523
end
24+
25+
require_relative "../../tools/test_common"

activejob/test/integration/queuing_test.rb

Lines changed: 69 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -13,58 +13,60 @@ class QueuingTest < ActiveSupport::TestCase
1313
assert_job_executed
1414
end
1515

16-
test "should not run jobs queued on a non-listening queue" do
17-
skip if adapter_is?(:inline, :async, :sucker_punch)
18-
old_queue = TestJob.queue_name
19-
20-
begin
21-
TestJob.queue_as :some_other_queue
22-
TestJob.perform_later @id
23-
wait_for_jobs_to_finish_for(2.seconds)
24-
assert_job_not_executed
25-
ensure
26-
TestJob.queue_name = old_queue
16+
unless adapter_is?(:inline, :async, :sucker_punch)
17+
test "should not run jobs queued on a non-listening queue" do
18+
old_queue = TestJob.queue_name
19+
20+
begin
21+
TestJob.queue_as :some_other_queue
22+
TestJob.perform_later @id
23+
wait_for_jobs_to_finish_for(2.seconds)
24+
assert_job_not_executed
25+
ensure
26+
TestJob.queue_name = old_queue
27+
end
2728
end
2829
end
2930

30-
test "should supply a wrapped class name to Sidekiq" do
31-
skip unless adapter_is?(:sidekiq)
32-
Sidekiq::Testing.fake! do
33-
::HelloJob.perform_later
34-
hash = ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper.jobs.first
35-
assert_equal "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper", hash["class"]
36-
assert_equal "HelloJob", hash["wrapped"]
31+
if adapter_is?(:sidekiq)
32+
test "should supply a wrapped class name to Sidekiq" do
33+
Sidekiq::Testing.fake! do
34+
::HelloJob.perform_later
35+
hash = ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper.jobs.first
36+
assert_equal "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper", hash["class"]
37+
assert_equal "HelloJob", hash["wrapped"]
38+
end
3739
end
38-
end
3940

40-
test "should access provider_job_id inside Sidekiq job" do
41-
skip unless adapter_is?(:sidekiq)
42-
Sidekiq::Testing.inline! do
43-
job = ::ProviderJidJob.perform_later
44-
assert_equal "Provider Job ID: #{job.provider_job_id}", JobBuffer.last_value
41+
test "should access provider_job_id inside Sidekiq job" do
42+
Sidekiq::Testing.inline! do
43+
job = ::ProviderJidJob.perform_later
44+
assert_equal "Provider Job ID: #{job.provider_job_id}", JobBuffer.last_value
45+
end
4546
end
4647
end
4748

48-
test "should supply a wrapped class name to DelayedJob" do
49-
skip unless adapter_is?(:delayed_job)
50-
::HelloJob.perform_later
51-
job = Delayed::Job.first
52-
assert_match(/HelloJob \[[0-9a-f-]+\] from DelayedJob\(default\) with arguments: \[\]/, job.name)
49+
if adapter_is?(:delayed_job)
50+
test "should supply a wrapped class name to DelayedJob" do
51+
::HelloJob.perform_later
52+
job = Delayed::Job.first
53+
assert_match(/HelloJob \[[0-9a-f-]+\] from DelayedJob\(default\) with arguments: \[\]/, job.name)
54+
end
5355
end
5456

55-
test "resque JobWrapper should have instance variable queue" do
56-
skip unless adapter_is?(:resque)
57-
job = ::HelloJob.set(wait: 5.seconds).perform_later
58-
hash = Resque.decode(Resque.find_delayed_selection { true }[0])
59-
assert_equal hash["queue"], job.queue_name
57+
if adapter_is?(:resque)
58+
test "resque JobWrapper should have instance variable queue" do
59+
job = ::HelloJob.set(wait: 5.seconds).perform_later
60+
hash = Resque.decode(Resque.find_delayed_selection { true }[0])
61+
assert_equal hash["queue"], job.queue_name
62+
end
6063
end
6164

6265
test "should not run job enqueued in the future" do
6366
TestJob.set(wait: 10.minutes).perform_later @id
6467
wait_for_jobs_to_finish_for(5.seconds)
6568
assert_job_not_executed
6669
rescue NotImplementedError
67-
skip
6870
end
6971

7072
test "should run job enqueued in the future at the specified time" do
@@ -74,7 +76,6 @@ class QueuingTest < ActiveSupport::TestCase
7476
wait_for_jobs_to_finish_for(10.seconds)
7577
assert_job_executed
7678
rescue NotImplementedError
77-
skip
7879
end
7980

8081
test "should run job bulk enqueued in the future at the specified time" do
@@ -84,25 +85,22 @@ class QueuingTest < ActiveSupport::TestCase
8485
wait_for_jobs_to_finish_for(10.seconds)
8586
assert_job_executed
8687
rescue NotImplementedError
87-
skip
8888
end
8989

90-
test "should supply a provider_job_id when available for immediate jobs" do
91-
skip unless adapter_is?(:async, :delayed_job, :sidekiq, :queue_classic)
92-
test_job = TestJob.perform_later @id
93-
assert test_job.provider_job_id, "Provider job id should be set by provider"
94-
end
90+
if adapter_is?(:async, :delayed_job, :sidekiq, :queue_classic)
91+
test "should supply a provider_job_id when available for immediate jobs" do
92+
test_job = TestJob.perform_later @id
93+
assert test_job.provider_job_id, "Provider job id should be set by provider"
94+
end
9595

96-
test "should supply a provider_job_id when available for delayed jobs" do
97-
skip unless adapter_is?(:async, :delayed_job, :sidekiq, :queue_classic)
98-
delayed_test_job = TestJob.set(wait: 1.minute).perform_later @id
99-
assert delayed_test_job.provider_job_id, "Provider job id should by set for delayed jobs by provider"
96+
test "should supply a provider_job_id when available for delayed jobs" do
97+
delayed_test_job = TestJob.set(wait: 1.minute).perform_later @id
98+
assert delayed_test_job.provider_job_id, "Provider job id should by set for delayed jobs by provider"
99+
end
100100
end
101101

102-
test "current locale is kept while running perform_later" do
103-
skip if adapter_is?(:inline)
104-
105-
begin
102+
unless adapter_is?(:inline)
103+
test "current locale is kept while running perform_later" do
106104
I18n.available_locales = [:en, :de]
107105
I18n.locale = :de
108106

@@ -114,12 +112,8 @@ class QueuingTest < ActiveSupport::TestCase
114112
I18n.available_locales = [:en]
115113
I18n.locale = :en
116114
end
117-
end
118115

119-
test "current timezone is kept while running perform_later" do
120-
skip if adapter_is?(:inline)
121-
122-
begin
116+
test "current timezone is kept while running perform_later" do
123117
current_zone = Time.zone
124118
Time.zone = "Hawaii"
125119

@@ -132,28 +126,28 @@ class QueuingTest < ActiveSupport::TestCase
132126
end
133127
end
134128

135-
test "should run job with higher priority first" do
136-
skip unless adapter_is?(:delayed_job)
137-
138-
wait_until = Time.now + 3.seconds
139-
TestJob.set(wait_until: wait_until, priority: 20).perform_later "#{@id}.1"
140-
TestJob.set(wait_until: wait_until, priority: 10).perform_later "#{@id}.2"
141-
wait_for_jobs_to_finish_for(10.seconds)
142-
assert_job_executed "#{@id}.1"
143-
assert_job_executed "#{@id}.2"
144-
assert_job_executed_before("#{@id}.2", "#{@id}.1")
129+
if adapter_is?(:delayed_job)
130+
test "should run job with higher priority first" do
131+
wait_until = Time.now + 3.seconds
132+
TestJob.set(wait_until: wait_until, priority: 20).perform_later "#{@id}.1"
133+
TestJob.set(wait_until: wait_until, priority: 10).perform_later "#{@id}.2"
134+
wait_for_jobs_to_finish_for(10.seconds)
135+
assert_job_executed "#{@id}.1"
136+
assert_job_executed "#{@id}.2"
137+
assert_job_executed_before("#{@id}.2", "#{@id}.1")
138+
end
145139
end
146140

147-
test "should run job with higher priority first in Backburner" do
148-
skip unless adapter_is?(:backburner)
149-
150-
jobs_manager.tube.pause(3)
151-
TestJob.set(priority: 20).perform_later "#{@id}.1"
152-
TestJob.set(priority: 10).perform_later "#{@id}.2"
153-
wait_for_jobs_to_finish_for(10.seconds)
154-
assert_job_executed "#{@id}.1"
155-
assert_job_executed "#{@id}.2"
156-
assert_job_executed_before("#{@id}.2", "#{@id}.1")
141+
if adapter_is?(:backburner)
142+
test "should run job with higher priority first in Backburner" do
143+
jobs_manager.tube.pause(3)
144+
TestJob.set(priority: 20).perform_later "#{@id}.1"
145+
TestJob.set(priority: 10).perform_later "#{@id}.2"
146+
wait_for_jobs_to_finish_for(10.seconds)
147+
assert_job_executed "#{@id}.1"
148+
assert_job_executed "#{@id}.2"
149+
assert_job_executed_before("#{@id}.2", "#{@id}.1")
150+
end
157151
end
158152

159153
private

activesupport/lib/active_support/testing/strict_warnings.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def warn(message, *)
2828

2929
return unless message.include?(PROJECT_ROOT)
3030
return if ALLOWED_WARNINGS.match?(message)
31-
return unless ENV["RAILS_STRICT_WARNINGS"] || ENV["CI"]
31+
return unless ENV["RAILS_STRICT_WARNINGS"] || ENV["BUILDKITE"]
3232

3333
raise message
3434
end

activesupport/test/cache/behaviors/cache_logging_behavior.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def assert_logs(pattern, &block)
7777
assert_match pattern, io.string
7878
end
7979

80-
def key_pattern(key, namespace: @namespace)
80+
def key_pattern(key, namespace: defined?(@namespace) && @namespace)
8181
/#{Regexp.escape namespace.to_s}#{":" if namespace}#{Regexp.escape key}/
8282
end
8383
end

activesupport/test/cache/behaviors/cache_store_format_version_behavior.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ module CacheStoreFormatVersionBehavior
4747
lookup_store.send(:serialize_entry, ActiveSupport::Cache::Entry.new(["value"] * 100))
4848
end
4949

50-
skip if !serialized.is_a?(String)
51-
52-
assert_operator serialized, :start_with?, uncompressed_signature
50+
if serialized.is_a?(String)
51+
assert_operator serialized, :start_with?, uncompressed_signature
52+
end
5353
end
5454

5555
test "format version #{format_version.inspect} uses correct signature for compressed entries" do

activesupport/test/executor_test.rb

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -225,31 +225,33 @@ def test_hook_insertion_order
225225
assert_equal [:state_a, :state_b, :state_d, :state_c], supplied_state
226226
end
227227

228-
def test_class_serial_is_unaffected
229-
skip if !defined?(RubyVM) || !RubyVM.stat.has_key?(:class_serial)
228+
if RUBY_VERSION < "3.2"
229+
def test_class_serial_is_unaffected
230+
skip if !defined?(RubyVM) || !RubyVM.stat.has_key?(:class_serial)
230231

231-
hook = Class.new do
232-
define_method(:run) do
233-
nil
234-
end
232+
hook = Class.new do
233+
define_method(:run) do
234+
nil
235+
end
235236

236-
define_method(:complete) do |state|
237-
nil
238-
end
239-
end.new
237+
define_method(:complete) do |state|
238+
nil
239+
end
240+
end.new
240241

241-
executor.register_hook(hook)
242+
executor.register_hook(hook)
242243

243-
# Warm-up to trigger any pending autoloads
244-
executor.wrap { }
244+
# Warm-up to trigger any pending autoloads
245+
executor.wrap { }
245246

246-
before = RubyVM.stat(:class_serial)
247-
executor.wrap { }
248-
executor.wrap { }
249-
executor.wrap { }
250-
after = RubyVM.stat(:class_serial)
247+
before = RubyVM.stat(:class_serial)
248+
executor.wrap { }
249+
executor.wrap { }
250+
executor.wrap { }
251+
after = RubyVM.stat(:class_serial)
251252

252-
assert_equal before, after
253+
assert_equal before, after
254+
end
253255
end
254256

255257
def test_separate_classes_can_wrap

0 commit comments

Comments
 (0)