// Copyright Epic Games, Inc. All Rights Reserved. #include "GenericPlatform/GenericPlatformFile.h" #include "HAL/PlatformFileManager.h" #include "Iris/IrisConfig.h" #include "Materials/Material.h" #include "Misc/CommandLine.h" #include "Misc/ConfigCacheIni.h" #include "Misc/CoreDelegates.h" #include "Modules/ModuleManager.h" #include "Net/Core/Trace/Private/NetTraceInternal.h" #include "ProfilingDebugging/TraceAuxiliary.h" #include "Styling/UMGCoreStyle.h" #include "TestCommon/CoreUtilities.h" #include "TestCommon/EngineUtilities.h" #include "TestCommon/Initialization.h" #include "UObject/Package.h" #include "UObject/PackageResourceManager.h" #include "UObject/UObjectBase.h" #include GROUP_BEFORE_GLOBAL(Catch::DefaultGroup) { // Initialize trace FString Parameter; if (FParse::Value(FCommandLine::Get(), TEXT("-trace="), Parameter, false)) { FTraceAuxiliary::Initialize(FCommandLine::Get()); FTraceAuxiliary::TryAutoConnect(); } #if UE_NET_TRACE_ENABLED uint32 NetTraceVerbosity; if(FParse::Value(FCommandLine::Get(), TEXT("-nettrace="), NetTraceVerbosity)) { FNetTrace::SetTraceVerbosity(NetTraceVerbosity); } #endif UE::Net::SetUseIrisReplication(true); // Use our own mock platform file implementation, we don't need to do any file I/O for these tests if (IPlatformFile* WrapperFile = FPlatformFileManager::Get().GetPlatformFile(TEXT("ReplicationSystemLowLevelTestsFile"))) { IPlatformFile* CurrentPlatformFile = &FPlatformFileManager::Get().GetPlatformFile(); WrapperFile->Initialize(CurrentPlatformFile, TEXT("")); FPlatformFileManager::Get().SetPlatformFile(*WrapperFile); } InitAllThreadPools(true); InitAsyncQueues(); InitTaskGraph(); InitStats(); InitGWarn(); IPackageResourceManager::Initialize(); FDelayedAutoRegisterHelper::RunAndClearDelayedAutoRegisterDelegates(EDelayedRegisterRunPhase::FileSystemReady); if (!GetTransientPackage()) { FModuleManager::Get().AddExtraBinarySearchPaths(); FConfigCacheIni::InitializeConfigSystem(); // Mock config values to allow the engine to initialize GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("AIControllerClassName"), TEXT("/Script/AIModule.AIController"), GEngineIni); GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni); GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultLightFunctionMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni); GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultDeferredDecalMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni); GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultPostProcessMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni); FModuleManager::Get().LoadModule(TEXT("CoreUObject")); FCoreDelegates::OnInit.Broadcast(); FUMGCoreStyle::ResetToDefault(); // Create a mock default material to keep the material system happy UMaterial* MockMaterial = NewObject(GetTransientPackage(), UMaterial::StaticClass(), TEXT("MockDefaultMaterial"), RF_Transient | RF_MarkAsRootSet); ProcessNewlyLoadedUObjects(); } FModuleManager::Get().LoadModule(TEXT("IrisCore")); } GROUP_AFTER_GLOBAL(Catch::DefaultGroup) { CleanupAll(); }