Files
sbox-public/engine/Sandbox.AppSystem/TestAppSystem.cs
Lorenz Junglas 6808d8768e Shutdown fixes (#3553)
* Stop generating solutions via -test flag add -generatesolution

* Add TestAppSystem remove Application.InitUnitTest

Avoids some hacks and also makes sure our tests are as close to a real AppSystem as possible.

* Add shutdown unit test

shuts down an re-inits the engine

* Properly dispose native resources hold by managed during shutdown

Should fix a bunch of crashes

* Fix filesystem and networking tests

* StandaloneTest does proper Game Close

* Make sure package tests clean up properly

* Make sure menu scene and resources are released on shutdown

* Report leaked scenes on shutdown

* Ensure DestroyImmediate is not used on scenes

* Fix unmounting in unit tests not clearing native refs

* Force destroy native resource on ResourceLib Clear
2025-12-08 15:55:11 +01:00

35 lines
962 B
C#

using System;
using System.Runtime;
namespace Sandbox;
public class TestAppSystem : AppSystem
{
public override void Init()
{
GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency;
var GameFolder = System.Environment.GetEnvironmentVariable( "FACEPUNCH_ENGINE", EnvironmentVariableTarget.Process );
if ( GameFolder is null ) throw new Exception( "FACEPUNCH_ENGINE not found" );
NetCore.InitializeInterop( GameFolder );
var nativeDllPath = $"{GameFolder}\\bin\\win64\\";
//
// Put our native dll path first so that when looking up native dlls we'll
// always use the ones from our folder first
//
var path = System.Environment.GetEnvironmentVariable( "PATH" );
path = $"{nativeDllPath};{path}";
System.Environment.SetEnvironmentVariable( "PATH", path );
CreateGame();
var createInfo = new AppSystemCreateInfo()
{
Flags = AppSystemFlags.IsGameApp | AppSystemFlags.IsUnitTest
};
InitGame( createInfo, "" );
}
}