From a7abe7fafbf26e3fd80c365b5effbac329b1bac0 Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Tue, 8 Nov 2022 08:58:22 +0100 Subject: [PATCH] Fix eager loading some namespaces with collapsed directories --- lib/zeitwerk/loader/eager_load.rb | 2 +- .../lib/zeitwerk/test_eager_load_namespace.rb | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/zeitwerk/loader/eager_load.rb b/lib/zeitwerk/loader/eager_load.rb index 44998cd1..f4c46afd 100644 --- a/lib/zeitwerk/loader/eager_load.rb +++ b/lib/zeitwerk/loader/eager_load.rb @@ -208,7 +208,7 @@ def load_file(path) next unless dir?(abspath) if collapse?(abspath) - current_dirs << abspath + dirs << abspath elsif segment == inflector.camelize(basename, abspath) next_dirs << abspath end diff --git a/test/lib/zeitwerk/test_eager_load_namespace.rb b/test/lib/zeitwerk/test_eager_load_namespace.rb index 25456135..9f7f172e 100644 --- a/test/lib/zeitwerk/test_eager_load_namespace.rb +++ b/test/lib/zeitwerk/test_eager_load_namespace.rb @@ -52,6 +52,25 @@ def loader.actual_eager_load_dir(*) end end + test "supports collapsed directories" do + files = [ + ["a/collapsed/m/x.rb", "M::X = 1"], + ["b/y.rb", "Y = 1"], + ["b/m/y.rb", "M::Y = 1"] + ] + with_files(files) do + loader.push_dir("a") + loader.push_dir("b") + loader.collapse("a/collapsed") + loader.setup + loader.eager_load_namespace(M) + + assert required?(files[0]) + assert !required?(files[1]) + assert required?(files[2]) + end + end + test "eader loads everything (nested root directories)" do files = [ ["x.rb", "X = 1"],