Skip to content

Commit 4cab76c

Browse files
authored
allow extensions to be loaded from non top level env (#48352)
1 parent b029fbf commit 4cab76c

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

base/loading.jl

-1
Original file line numberDiff line numberDiff line change
@@ -1112,7 +1112,6 @@ function insert_extension_triggers(pkg::PkgId)
11121112
pkg.uuid === nothing && return
11131113
for env in load_path()
11141114
insert_extension_triggers(env, pkg)
1115-
break # For now, only insert triggers for packages in the first load_path.
11161115
end
11171116
end
11181117

test/loading.jl

+28-15
Original file line numberDiff line numberDiff line change
@@ -1000,24 +1000,37 @@ end
10001000
try
10011001
tmp = mktempdir()
10021002
push!(empty!(DEPOT_PATH), joinpath(tmp, "depot"))
1003-
10041003
proj = joinpath(@__DIR__, "project", "Extensions", "HasDepWithExtensions.jl")
1005-
for compile in (`--compiled-modules=no`, ``, ``) # Once when requiring precomilation, once where it is already precompiled
1006-
cmd = `$(Base.julia_cmd()) $compile --project=$proj --startup-file=no -e '
1007-
begin
1008-
using HasExtensions
1009-
# Base.get_extension(HasExtensions, :Extension) === nothing || error("unexpectedly got an extension")
1010-
HasExtensions.ext_loaded && error("ext_loaded set")
1011-
using HasDepWithExtensions
1012-
# Base.get_extension(HasExtensions, :Extension).extvar == 1 || error("extvar in Extension not set")
1013-
HasExtensions.ext_loaded || error("ext_loaded not set")
1014-
HasExtensions.ext_folder_loaded && error("ext_folder_loaded set")
1015-
HasDepWithExtensions.do_something() || error("do_something errored")
1016-
using ExtDep2
1017-
HasExtensions.ext_folder_loaded || error("ext_folder_loaded not set")
10181004

1005+
function gen_extension_cmd(compile)
1006+
```$(Base.julia_cmd()) $compile --startup-file=no -e '
1007+
begin
1008+
using HasExtensions
1009+
# Base.get_extension(HasExtensions, :Extension) === nothing || error("unexpectedly got an extension")
1010+
HasExtensions.ext_loaded && error("ext_loaded set")
1011+
using HasDepWithExtensions
1012+
# Base.get_extension(HasExtensions, :Extension).extvar == 1 || error("extvar in Extension not set")
1013+
HasExtensions.ext_loaded || error("ext_loaded not set")
1014+
HasExtensions.ext_folder_loaded && error("ext_folder_loaded set")
1015+
HasDepWithExtensions.do_something() || error("do_something errored")
1016+
using ExtDep2
1017+
HasExtensions.ext_folder_loaded || error("ext_folder_loaded not set")
10191018
end
1020-
'`
1019+
'
1020+
```
1021+
end
1022+
1023+
for compile in (`--compiled-modules=no`, ``, ``) # Once when requiring precomilation, once where it is already precompiled
1024+
cmd = gen_extension_cmd(compile)
1025+
withenv("JULIA_LOAD_PATH" => proj) do
1026+
@test success(cmd)
1027+
end
1028+
end
1029+
1030+
# 48351
1031+
sep = Sys.iswindows() ? ';' : ':'
1032+
withenv("JULIA_LOAD_PATH" => join([mktempdir(), proj], sep)) do
1033+
cmd = gen_extension_cmd(``)
10211034
@test success(cmd)
10221035
end
10231036
finally

0 commit comments

Comments
 (0)