Skip to content

Commit 60598b6

Browse files
authored
Merge pull request RustPython#3790 from xforce/main
Fix broken module_names in compile_dir for sub-directories
2 parents ff50213 + ad399db commit 60598b6

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

derive/src/compile_bytecode.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,11 @@ impl CompilationSource {
143143
if path.is_dir() {
144144
code_map.extend(self.compile_dir(
145145
&path,
146-
format!("{}{}", parent, file_name),
146+
if parent.is_empty() {
147+
file_name.to_string()
148+
} else {
149+
format!("{}.{}", parent, file_name)
150+
},
147151
mode,
148152
)?);
149153
} else if file_name.ends_with(".py") {

extra_tests/snippets/stdlib_dir_module.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@
2626
assert 'dir_module' not in str(e)
2727
else:
2828
assert False
29+
30+
from dir_module import dir_module_inner
31+
assert dir_module_inner.__name__ == 'dir_module.dir_module_inner'

vm/src/vm/mod.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,3 +823,30 @@ impl AsRef<Context> for VirtualMachine {
823823
&self.ctx
824824
}
825825
}
826+
827+
#[test]
828+
fn test_nested_frozen() {
829+
use rustpython_vm as vm;
830+
831+
vm::Interpreter::with_init(Default::default(), |vm| {
832+
// vm.add_native_modules(rustpython_stdlib::get_module_inits());
833+
vm.add_frozen(rustpython_vm::py_freeze!(dir = "../extra_tests/snippets"));
834+
})
835+
.enter(|vm| {
836+
let scope = vm.new_scope_with_builtins();
837+
838+
let code_obj = vm
839+
.compile(
840+
"from dir_module.dir_module_inner import value2",
841+
vm::compile::Mode::Exec,
842+
"<embedded>".to_owned(),
843+
)
844+
.map_err(|err| vm.new_syntax_error(&err))
845+
.unwrap();
846+
847+
if let Err(e) = vm.run_code_obj(code_obj, scope.clone()) {
848+
vm.print_exception(e.clone());
849+
assert!(false);
850+
}
851+
})
852+
}

0 commit comments

Comments
 (0)