refactor(srp): unify engine managed assembly discovery
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include <fstream>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
namespace XCEngine::Editor::Scripting {
|
||||
namespace {
|
||||
@@ -54,10 +55,30 @@ TEST_F(EditorScriptAssemblyBuilderTest, RebuildsProjectScriptAssembliesIntoLibra
|
||||
EditorScriptAssemblyBuilder::RebuildProjectAssemblies(m_projectRoot.string());
|
||||
ASSERT_TRUE(result.succeeded) << result.message;
|
||||
|
||||
EXPECT_TRUE(std::filesystem::exists(m_projectRoot / "Library" / "ScriptAssemblies" / "XCEngine.ScriptCore.dll"));
|
||||
EXPECT_TRUE(std::filesystem::exists(m_projectRoot / "Library" / "ScriptAssemblies" / "XCEngine.RenderPipelines.Universal.dll"));
|
||||
EXPECT_TRUE(std::filesystem::exists(m_projectRoot / "Library" / "ScriptAssemblies" / "GameScripts.dll"));
|
||||
EXPECT_TRUE(std::filesystem::exists(m_projectRoot / "Library" / "ScriptAssemblies" / "mscorlib.dll"));
|
||||
const std::filesystem::path assemblyDirectory =
|
||||
m_projectRoot / "Library" / "ScriptAssemblies";
|
||||
EXPECT_TRUE(std::filesystem::exists(assemblyDirectory / "XCEngine.ScriptCore.dll"));
|
||||
EXPECT_TRUE(std::filesystem::exists(assemblyDirectory / "GameScripts.dll"));
|
||||
EXPECT_TRUE(std::filesystem::exists(assemblyDirectory / "mscorlib.dll"));
|
||||
EXPECT_TRUE(std::filesystem::exists(
|
||||
XCEngine::Scripting::MonoScriptRuntime::GetEngineAssemblyManifestPath(
|
||||
assemblyDirectory)));
|
||||
|
||||
XCEngine::Scripting::MonoScriptRuntime::Settings settings;
|
||||
settings.assemblyDirectory = assemblyDirectory;
|
||||
settings.coreAssemblyPath = assemblyDirectory / "XCEngine.ScriptCore.dll";
|
||||
settings.appAssemblyPath = assemblyDirectory / "GameScripts.dll";
|
||||
std::string engineAssemblyError;
|
||||
ASSERT_TRUE(
|
||||
XCEngine::Scripting::MonoScriptRuntime::DiscoverEngineAssemblies(
|
||||
settings,
|
||||
&engineAssemblyError))
|
||||
<< engineAssemblyError;
|
||||
ASSERT_FALSE(settings.engineAssemblies.empty());
|
||||
for (const auto& assembly : settings.engineAssemblies) {
|
||||
EXPECT_TRUE(std::filesystem::exists(assembly.path))
|
||||
<< assembly.path.string();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef XCENGINE_ENABLE_MONO_SCRIPTING
|
||||
@@ -80,12 +101,13 @@ TEST_F(EditorScriptAssemblyBuilderTest, RebuildFailsWhileLoadedAssemblyIsStillHe
|
||||
settings.assemblyDirectory = m_projectRoot / "Library" / "ScriptAssemblies";
|
||||
settings.corlibDirectory = settings.assemblyDirectory;
|
||||
settings.coreAssemblyPath = settings.assemblyDirectory / "XCEngine.ScriptCore.dll";
|
||||
settings.engineAssemblies.push_back(
|
||||
XCEngine::Scripting::MonoScriptRuntime::ManagedAssemblyDescriptor{
|
||||
"XCEngine.RenderPipelines.Universal",
|
||||
settings.assemblyDirectory /
|
||||
"XCEngine.RenderPipelines.Universal.dll"});
|
||||
settings.appAssemblyPath = settings.assemblyDirectory / "GameScripts.dll";
|
||||
std::string engineAssemblyError;
|
||||
ASSERT_TRUE(
|
||||
XCEngine::Scripting::MonoScriptRuntime::DiscoverEngineAssemblies(
|
||||
settings,
|
||||
&engineAssemblyError))
|
||||
<< engineAssemblyError;
|
||||
|
||||
auto runtime = std::make_unique<XCEngine::Scripting::MonoScriptRuntime>(settings);
|
||||
ASSERT_TRUE(runtime->Initialize()) << runtime->GetLastError();
|
||||
|
||||
Reference in New Issue
Block a user