Normalize module-path

Modules indipendant of the path, should only be evaluated once.
This commit is contained in:
phosit authored and phosit committed 2025-06-06 17:36:35 +02:00
1 parent c6d42ebbd5
commit 32ef4fd0fa
4 files changed
+21 -9

No files matched your search

+2 -1
View File
@@ -58,7 +58,8 @@ namespace
[[nodiscard]] JSObject* CompileModule(const ScriptRequest& rq, ModuleLoader::RegistryType& registry,
const VfsPath& filePath)
{
const auto insertResult = registry.try_emplace(filePath, rq, filePath);
const VfsPath normalizedPath{filePath.fileSystemPath().lexically_normal().generic_string()};
const auto insertResult = registry.try_emplace(normalizedPath, rq, normalizedPath);
return std::get<1>(*std::get<0>(insertResult)).m_ModuleObject;
}
@@ -97,4 +97,21 @@ public:
TS_ASSERT_THROWS(script.GetModuleLoader().LoadModule(rq, "nonexistent.js"),
const std::runtime_error&);
}
void test_EvaluateOnce()
{
ScriptInterface script{"Test", "Test", g_ScriptContext};
const ScriptRequest rq{script};
{
TestLogger logger;
script.GetModuleLoader().LoadModule(rq, "blabbermouth.js");
TS_ASSERT_STR_CONTAINS(logger.GetOutput(), "blah blah blah");
}
{
TestLogger logger;
script.GetModuleLoader().LoadModule(rq, "include/../blabbermouth.js");
TS_ASSERT_STR_NOT_CONTAINS(logger.GetOutput(), "blah blah blah");
}
}
};