spec/support/app_integration.rb in hanami-2.0.0.beta3 vs spec/support/app_integration.rb in hanami-2.0.0.beta4
- old
+ new
@@ -21,10 +21,27 @@
RSpec.shared_context "Application integration" do
let(:app_modules) { %i[TestApp Admin Main Search] }
end
+def autoloaders_teardown!
+ # Tear down Zeitwerk (from zeitwerk's own test/support/loader_test)
+ Zeitwerk::Registry.loaders.reject! do |loader|
+ test_loader = loader.dirs.any? { |dir|
+ dir.include?("/spec/") || dir.include?(Dir.tmpdir) ||
+ dir.include?("/slices/") || dir.include?("/app")
+ }
+
+ if test_loader
+ loader.unregister
+ true
+ else
+ false
+ end
+ end
+end
+
RSpec.configure do |config|
config.include RSpec::Support::Files, :app_integration
config.include RSpec::Support::WithTmpDirectory, :app_integration
config.include_context "Application integration", :app_integration
@@ -34,24 +51,10 @@
@load_paths ||= $LOAD_PATH.dup
@loaded_features ||= $LOADED_FEATURES.dup
end
config.after :each, :app_integration do
- # Tear down Zeitwerk (from zeitwerk's own test/support/loader_test)
- Zeitwerk::Registry.loaders.each(&:unload)
- Zeitwerk::Registry.loaders.clear
-
- # This private interface changes between 2.5.4 and 2.6.0
- if Zeitwerk::Registry.respond_to?(:loaders_managing_gems)
- Zeitwerk::Registry.loaders_managing_gems.clear
- else
- Zeitwerk::Registry.gem_loaders_by_root_file.clear
- Zeitwerk::Registry.autoloads.clear
- Zeitwerk::Registry.inceptions.clear
- end
-
- Zeitwerk::ExplicitNamespace.cpaths.clear
- Zeitwerk::ExplicitNamespace.tracer.disable
+ autoloaders_teardown!
Hanami.instance_variable_set(:@_bundled, {})
Hanami.remove_instance_variable(:@_app) if Hanami.instance_variable_defined?(:@_app)
$LOAD_PATH.replace(@load_paths)