Remove most static IoCManager. accesses from engine. (#3466)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
Pieter-Jan Briers
2022-11-15 12:00:28 +01:00
committed by GitHub
parent c26c8fb81e
commit 1646297039
88 changed files with 877 additions and 743 deletions

View File

@@ -19,12 +19,12 @@ namespace Robust.UnitTesting.Client.UserInterface.Controls
var uiMgr = new Mock<IUserInterfaceManagerInternal>();
var clyde = new ClydeHeadless();
IoCManager.InitThread();
IoCManager.Clear();
IoCManager.RegisterInstance<IUserInterfaceManagerInternal>(uiMgr.Object);
IoCManager.RegisterInstance<IUserInterfaceManager>(uiMgr.Object);
IoCManager.RegisterInstance<IClyde>(clyde);
IoCManager.BuildGraph();
var deps = IoCManager.InitThread();
deps.Clear();
deps.RegisterInstance<IUserInterfaceManagerInternal>(uiMgr.Object);
deps.RegisterInstance<IUserInterfaceManager>(uiMgr.Object);
deps.RegisterInstance<IClyde>(clyde);
deps.BuildGraph();
}
[Test]

View File

@@ -165,7 +165,7 @@ namespace Robust.UnitTesting
{
await instance.WaitPost(() =>
{
var config = IoCManager.Resolve<IConfigurationManagerInternal>();
var config = instance.InstanceDependencyCollection.Resolve<IConfigurationManagerInternal>();
var overrides = new[]
{
(RTCVars.FailureLogLevel.Name, (instance.Options?.FailureLogLevel ?? RTCVars.FailureLogLevel.DefaultValue).ToString())
@@ -589,21 +589,22 @@ namespace Robust.UnitTesting
private BaseServer Init()
{
IoCManager.InitThread(DependencyCollection, replaceExisting: true);
ServerIoC.RegisterIoC();
IoCManager.Register<INetManager, IntegrationNetManager>(true);
IoCManager.Register<IServerNetManager, IntegrationNetManager>(true);
IoCManager.Register<IntegrationNetManager, IntegrationNetManager>(true);
IoCManager.Register<ISystemConsoleManager, SystemConsoleManagerDummy>(true);
IoCManager.Register<IModLoader, TestingModLoader>(true);
IoCManager.Register<IModLoaderInternal, TestingModLoader>(true);
IoCManager.Register<TestingModLoader, TestingModLoader>(true);
IoCManager.RegisterInstance<IStatusHost>(new Mock<IStatusHost>().Object, true);
IoCManager.Register<IRobustMappedStringSerializer, IntegrationMappedStringSerializer>(true);
var deps = DependencyCollection;
IoCManager.InitThread(deps, replaceExisting: true);
ServerIoC.RegisterIoC(deps);
deps.Register<INetManager, IntegrationNetManager>(true);
deps.Register<IServerNetManager, IntegrationNetManager>(true);
deps.Register<IntegrationNetManager, IntegrationNetManager>(true);
deps.Register<ISystemConsoleManager, SystemConsoleManagerDummy>(true);
deps.Register<IModLoader, TestingModLoader>(true);
deps.Register<IModLoaderInternal, TestingModLoader>(true);
deps.Register<TestingModLoader, TestingModLoader>(true);
deps.RegisterInstance<IStatusHost>(new Mock<IStatusHost>().Object, true);
deps.Register<IRobustMappedStringSerializer, IntegrationMappedStringSerializer>(true);
Options?.InitIoC?.Invoke();
IoCManager.BuildGraph();
deps.BuildGraph();
//ServerProgram.SetupLogging();
ServerProgram.InitReflectionManager();
ServerProgram.InitReflectionManager(deps);
var server = DependencyCollection.Resolve<BaseServer>();
@@ -619,17 +620,17 @@ namespace Robust.UnitTesting
Options?.BeforeRegisterComponents?.Invoke();
if (!Options?.ContentStart ?? true)
{
var componentFactory = IoCManager.Resolve<IComponentFactory>();
var componentFactory = deps.Resolve<IComponentFactory>();
componentFactory.DoAutoRegistrations();
componentFactory.GenerateNetIds();
}
if (Options?.ContentAssemblies != null)
{
IoCManager.Resolve<TestingModLoader>().Assemblies = Options.ContentAssemblies;
deps.Resolve<TestingModLoader>().Assemblies = Options.ContentAssemblies;
}
var cfg = IoCManager.Resolve<IConfigurationManagerInternal>();
var cfg = deps.Resolve<IConfigurationManagerInternal>();
cfg.LoadCVarsFromAssembly(typeof(RobustIntegrationTest).Assembly);
@@ -640,7 +641,7 @@ namespace Robust.UnitTesting
if (Options.ExtraPrototypes != null)
{
IoCManager.Resolve<IResourceManagerInternal>()
deps.Resolve<IResourceManagerInternal>()
.MountString("/Prototypes/__integration_extra.yml", Options.ExtraPrototypes);
}
}
@@ -750,19 +751,20 @@ namespace Robust.UnitTesting
private GameController Init()
{
IoCManager.InitThread(DependencyCollection, replaceExisting: true);
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless);
IoCManager.Register<INetManager, IntegrationNetManager>(true);
IoCManager.Register<IClientNetManager, IntegrationNetManager>(true);
IoCManager.Register<IntegrationNetManager, IntegrationNetManager>(true);
IoCManager.Register<IModLoader, TestingModLoader>(true);
IoCManager.Register<IModLoaderInternal, TestingModLoader>(true);
IoCManager.Register<TestingModLoader, TestingModLoader>(true);
IoCManager.Register<IRobustMappedStringSerializer, IntegrationMappedStringSerializer>(true);
var deps = DependencyCollection;
IoCManager.InitThread(deps, replaceExisting: true);
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless, deps);
deps.Register<INetManager, IntegrationNetManager>(true);
deps.Register<IClientNetManager, IntegrationNetManager>(true);
deps.Register<IntegrationNetManager, IntegrationNetManager>(true);
deps.Register<IModLoader, TestingModLoader>(true);
deps.Register<IModLoaderInternal, TestingModLoader>(true);
deps.Register<TestingModLoader, TestingModLoader>(true);
deps.Register<IRobustMappedStringSerializer, IntegrationMappedStringSerializer>(true);
Options?.InitIoC?.Invoke();
IoCManager.BuildGraph();
deps.BuildGraph();
GameController.RegisterReflection();
GameController.RegisterReflection(deps);
var client = DependencyCollection.Resolve<GameController>();
@@ -778,17 +780,17 @@ namespace Robust.UnitTesting
Options?.BeforeRegisterComponents?.Invoke();
if (!Options?.ContentStart ?? true)
{
var componentFactory = IoCManager.Resolve<IComponentFactory>();
var componentFactory = deps.Resolve<IComponentFactory>();
componentFactory.DoAutoRegistrations();
componentFactory.GenerateNetIds();
}
if (Options?.ContentAssemblies != null)
{
IoCManager.Resolve<TestingModLoader>().Assemblies = Options.ContentAssemblies;
deps.Resolve<TestingModLoader>().Assemblies = Options.ContentAssemblies;
}
var cfg = IoCManager.Resolve<IConfigurationManagerInternal>();
var cfg = deps.Resolve<IConfigurationManagerInternal>();
cfg.LoadCVarsFromAssembly(typeof(RobustIntegrationTest).Assembly);
@@ -799,7 +801,7 @@ namespace Robust.UnitTesting
if (Options.ExtraPrototypes != null)
{
IoCManager.Resolve<IResourceManagerInternal>()
deps.Resolve<IResourceManagerInternal>()
.MountString("/Prototypes/__integration_extra.yml", Options.ExtraPrototypes);
}
}

View File

@@ -13,27 +13,29 @@ namespace Robust.UnitTesting
/// </summary>
private void RegisterIoC()
{
var dependencies = IoCManager.Instance!;
switch (Project)
{
case UnitTestProject.Client:
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless);
ClientIoC.RegisterIoC(GameController.DisplayMode.Headless, dependencies);
break;
case UnitTestProject.Server:
ServerIoC.RegisterIoC();
ServerIoC.RegisterIoC(dependencies);
break;
default:
throw new NotSupportedException($"Unknown testing project: {Project}");
}
IoCManager.Register<IModLoader, TestingModLoader>(overwrite: true);
IoCManager.Register<IModLoaderInternal, TestingModLoader>(overwrite: true);
IoCManager.Register<TestingModLoader, TestingModLoader>(overwrite: true);
dependencies.Register<IModLoader, TestingModLoader>(overwrite: true);
dependencies.Register<IModLoaderInternal, TestingModLoader>(overwrite: true);
dependencies.Register<TestingModLoader, TestingModLoader>(overwrite: true);
OverrideIoC();
IoCManager.BuildGraph();
dependencies.BuildGraph();
}
}
}

View File

@@ -40,8 +40,8 @@ namespace Robust.UnitTesting
public void BaseSetup()
{
// Clear state across tests.
IoCManager.InitThread();
IoCManager.Clear();
var deps = IoCManager.InitThread();
deps.Clear();
RegisterIoC();
@@ -61,7 +61,7 @@ namespace Robust.UnitTesting
assemblies.Add(AppDomain.CurrentDomain.GetAssemblyByName("Robust.Shared"));
assemblies.Add(Assembly.GetExecutingAssembly());
var configurationManager = IoCManager.Resolve<IConfigurationManagerInternal>();
var configurationManager = deps.Resolve<IConfigurationManagerInternal>();
configurationManager.Initialize(Project == UnitTestProject.Server);
@@ -79,7 +79,7 @@ namespace Robust.UnitTesting
configurationManager.LoadCVarsFromAssembly(typeof(RobustUnitTest).Assembly);
var systems = IoCManager.Resolve<IEntitySystemManager>();
var systems = deps.Resolve<IEntitySystemManager>();
// Required systems
systems.LoadExtraSystemType<EntityLookupSystem>();
@@ -99,6 +99,7 @@ namespace Robust.UnitTesting
systems.LoadExtraSystemType<Robust.Client.Physics.PhysicsSystem>();
systems.LoadExtraSystemType<Robust.Client.Debugging.DebugRayDrawingSystem>();
systems.LoadExtraSystemType<PrototypeReloadSystem>();
systems.LoadExtraSystemType<Robust.Client.Debugging.DebugPhysicsSystem>();
}
else
{
@@ -111,13 +112,14 @@ namespace Robust.UnitTesting
systems.LoadExtraSystemType<PhysicsSystem>();
systems.LoadExtraSystemType<DebugRayDrawingSystem>();
systems.LoadExtraSystemType<PrototypeReloadSystem>();
systems.LoadExtraSystemType<DebugPhysicsSystem>();
}
var entMan = IoCManager.Resolve<IEntityManager>();
var mapMan = IoCManager.Resolve<IMapManager>();
var entMan = deps.Resolve<IEntityManager>();
var mapMan = deps.Resolve<IMapManager>();
// Required components for the engine to work
var compFactory = IoCManager.Resolve<IComponentFactory>();
var compFactory = deps.Resolve<IComponentFactory>();
if (!compFactory.AllRegisteredTypes.Contains(typeof(MapComponent)))
{
@@ -163,9 +165,9 @@ namespace Robust.UnitTesting
mapMan.Initialize();
systems.Initialize();
IoCManager.Resolve<IReflectionManager>().LoadAssemblies(assemblies);
deps.Resolve<IReflectionManager>().LoadAssemblies(assemblies);
var modLoader = IoCManager.Resolve<TestingModLoader>();
var modLoader = deps.Resolve<TestingModLoader>();
modLoader.Assemblies = contentAssemblies;
modLoader.TryLoadModulesFrom(ResourcePath.Root, "");

View File

@@ -4,6 +4,7 @@ using System.Reflection;
using JetBrains.Annotations;
using Moq;
using Robust.Server;
using Robust.Server.Console;
using Robust.Server.Debugging;
using Robust.Server.Containers;
using Robust.Server.GameObjects;
@@ -220,6 +221,8 @@ namespace Robust.UnitTesting.Server
container.Register<INetManager, NetManager>();
container.Register<IAuthManager, AuthManager>();
container.Register<ITileDefinitionManager, TileDefinitionManager>();
// Needed for grid fixture debugging.
container.Register<IConGroupController, ConGroupController>();
// I just wanted to load pvs system
container.Register<IServerEntityManager, ServerEntityManager>();