summaryrefslogtreecommitdiff
path: root/spec/spec_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/spec_helper.rb')
-rw-r--r--spec/spec_helper.rb20
1 files changed, 15 insertions, 5 deletions
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index c8664598691..25759ca50b8 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -107,9 +107,7 @@ RSpec.configure do |config|
warn `curl -s -o log/goroutines.log http://localhost:9236/debug/pprof/goroutine?debug=2`
end
end
- end
-
- unless ENV['CI']
+ else
# Allow running `:focus` examples locally,
# falling back to all tests when there is no `:focus` example.
config.filter_run focus: true
@@ -199,6 +197,14 @@ RSpec.configure do |config|
if ENV['CI'] || ENV['RETRIES']
# This includes the first try, i.e. tests will be run 4 times before failing.
config.default_retry_count = ENV.fetch('RETRIES', 3).to_i + 1
+
+ # Do not retry controller tests because rspec-retry cannot properly
+ # reset the controller which may contain data from last attempt. See
+ # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73360
+ config.prepend_before(:each, type: :controller) do |example|
+ example.metadata[:retry] = 1
+ end
+
config.exceptions_to_hard_fail = [DeprecationToolkitEnv::DeprecationBehaviors::SelectiveRaise::RaiseDisallowedDeprecation]
end
@@ -232,7 +238,7 @@ RSpec.configure do |config|
# We can't use an `around` hook here because the wrapping transaction
# is not yet opened at the time that is triggered
config.prepend_before do
- Gitlab::Database.main.set_open_transactions_baseline
+ ApplicationRecord.set_open_transactions_baseline
end
config.append_before do
@@ -240,7 +246,7 @@ RSpec.configure do |config|
end
config.append_after do
- Gitlab::Database.main.reset_open_transactions_baseline
+ ApplicationRecord.reset_open_transactions_baseline
end
config.before do |example|
@@ -431,6 +437,10 @@ RSpec.configure do |config|
Gitlab::Metrics.reset_registry!
end
+ config.before(:example, :eager_load) do
+ Rails.application.eager_load!
+ end
+
# This makes sure the `ApplicationController#can?` method is stubbed with the
# original implementation for all view specs.
config.before(:each, type: :view) do