Allow multiple test cases in the TShock test suite

Previously, we were initializing TShock before each test. This isn't
actually what we want to do, because NUnit will (by default) execute all
tests within one instance. Initializing TShock multiple times would
cause issues, so let's just do it once at the very beginning, before any
tests execute.
This commit is contained in:
James Puleo 2022-12-02 17:31:24 -05:00 committed by Lucas Nicodemus
parent 794bff5ef7
commit d0554abd46
No known key found for this signature in database
2 changed files with 25 additions and 17 deletions

View file

@ -1,6 +1,4 @@
using NUnit.Framework; using NUnit.Framework;
using Terraria;
using Terraria.Localization;
using TShockAPI; using TShockAPI;
using TShockAPI.DB; using TShockAPI.DB;
@ -8,21 +6,6 @@ namespace TShockLauncher.Tests;
public class GroupTests public class GroupTests
{ {
/// <summary>
/// This will be called automatically by nunit before other tests in this class.
/// It serves to initialise the bare minimum variables needed for TShock to be testable without booting up an actual server.
/// </summary>
[SetUp]
public static void SetupTShock()
{
Program.SavePath = ""; // 1.4.4.2 staticness introduced this where by default it is null, and any touch to Terraria.Main will use it and cause a crash.
LanguageManager.Instance.SetLanguage(GameCulture.DefaultCulture); // TShockAPI.Localization will fail without ActiveCulture set
Lang.InitializeLegacyLocalization(); // TShockAPI.Localization will fail without preparing NPC names etc
var ts = new TShock(null); // prepares configs etc
ts.Initialize(); // used to prepare tshocks own static variables, such as the TShock.DB instance
}
/// <summary> /// <summary>
/// This tests to ensure the group commands work. /// This tests to ensure the group commands work.
/// </summary> /// </summary>

View file

@ -0,0 +1,25 @@
using NUnit.Framework;
using Terraria;
using Terraria.Localization;
using TShockAPI;
namespace TShockLauncher.Tests;
[SetUpFixture]
public class TestSetup
{
/// <summary>
/// This will be called automatically by NUnit before the first test.
/// It serves to initialise the bare minimum variables needed for TShock to be testable without booting up an actual server.
/// </summary>
[OneTimeSetUp]
public static void SetupTShock()
{
Program.SavePath = ""; // 1.4.4.2 staticness introduced this where by default it is null, and any touch to Terraria.Main will use it and cause a crash.
LanguageManager.Instance.SetLanguage(GameCulture.DefaultCulture); // TShockAPI.Localization will fail without ActiveCulture set
Lang.InitializeLegacyLocalization(); // TShockAPI.Localization will fail without preparing NPC names etc
var ts = new TShock(null); // prepares configs etc
ts.Initialize(); // used to prepare tshocks own static variables, such as the TShock.DB instance
}
}