rails--rails/activesupport/test/constantize_test_helpers.rb

31 lines
760 B
Ruby

# frozen_string_literal: true
module ConstantizeTestHelpers
ROOT_DIR = File.realpath("#{__dir__}/autoloading_fixtures")
AUTOLOADS = {
"RaisesLoadError" => "#{ROOT_DIR}/raises_load_error",
"RaisesNameError" => "#{ROOT_DIR}/raises_name_error",
"RaisesNoMethodError" => "#{ROOT_DIR}/raises_no_method_error"
}
def with_autoloading_fixtures
define_autoloads
yield
ensure
remove_autoloads
end
def define_autoloads
AUTOLOADS.each do |constant, realpath|
Object.autoload(constant, realpath)
end
end
def remove_autoloads
AUTOLOADS.each do |constant, realpath|
Object.send(:remove_const, constant) if Object.const_defined?(constant)
$LOADED_FEATURES.delete(realpath)
end
end
end