module = importlib.import_module(fullname)
except ImportError:
return (None, None)
+ if not isinstance(module.__loader__, ZNCModuleLoader):
+ # If modname/ is a directory, it was "loaded" using _NamespaceLoader.
+ # This is the case for e.g. modperl.
+ # https://github.com/znc/znc/issues/1757
+ return (None, None)
return (module, os.path.join(module.__loader__._datadir, modname))
def load_module(modname, args, module_type, user, network, retmsg, modpython):
client.ReadUntil("value = b");
}
+TEST_F(ZNCTest, ModpythonModperl) {
+ if (QProcessEnvironment::systemEnvironment().value(
+ "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+ return;
+ }
+ auto znc = Run();
+ znc->CanLeak();
+
+ auto ircd = ConnectIRCd();
+ auto client = LoginClient();
+ // https://github.com/znc/znc/issues/1757
+ client.Write("znc loadmod modpython");
+ client.ReadUntil("Loaded module modpython");
+ client.Write("znc loadmod modperl");
+ client.ReadUntil("Loaded module modperl");
+}
+
} // namespace
} // namespace znc_inttest