38 lines
1.2 KiB
Ruby
38 lines
1.2 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
return unless ENV['CI']
|
||
|
return if ENV['FAST_QUARANTINE'] == "false"
|
||
|
return if ENV['CI_MERGE_REQUEST_LABELS'].to_s.include?('pipeline:run-flaky-tests')
|
||
|
|
||
|
require_relative '../../tooling/lib/tooling/fast_quarantine'
|
||
|
|
||
|
RSpec.configure do |config|
|
||
|
fast_quarantine_local_path = ENV.fetch('RSPEC_FAST_QUARANTINE_LOCAL_PATH', 'rspec/fast_quarantine-gitlab.txt')
|
||
|
fast_quarantine_path = ENV.fetch(
|
||
|
'RSPEC_FAST_QUARANTINE_PATH',
|
||
|
File.expand_path("../../#{fast_quarantine_local_path}", __dir__)
|
||
|
)
|
||
|
fast_quarantine = Tooling::FastQuarantine.new(fast_quarantine_path: fast_quarantine_path)
|
||
|
skipped_examples = []
|
||
|
|
||
|
config.around do |example|
|
||
|
if fast_quarantine.skip_example?(example)
|
||
|
skipped_examples << example.id
|
||
|
skip "Skipping #{example.id} because it's been fast-quarantined."
|
||
|
else
|
||
|
example.run
|
||
|
end
|
||
|
end
|
||
|
|
||
|
config.after(:suite) do
|
||
|
next if skipped_examples.empty?
|
||
|
|
||
|
skipped_tests_report_path = ENV.fetch(
|
||
|
'SKIPPED_TESTS_REPORT_PATH',
|
||
|
File.expand_path("../../rspec/flaky/skipped_tests.txt", __dir__)
|
||
|
)
|
||
|
|
||
|
File.write(skipped_tests_report_path, "#{ENV.fetch('CI_JOB_URL', 'local-run')}\n#{skipped_examples.join("\n")}\n\n")
|
||
|
end
|
||
|
end
|