mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 17:23:22 +08:00
Ensure directories are deleted before migration tests run
This commit is contained in:
parent
280d9f3532
commit
3a5784c410
@ -19,24 +19,18 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class CustomDataDirectoryTest
|
public class CustomDataDirectoryTest
|
||||||
{
|
{
|
||||||
[SetUp]
|
|
||||||
public void SetUp()
|
|
||||||
{
|
|
||||||
if (Directory.Exists(customPath))
|
|
||||||
Directory.Delete(customPath, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestDefaultDirectory()
|
public void TestDefaultDirectory()
|
||||||
{
|
{
|
||||||
using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestDefaultDirectory)))
|
using (HeadlessGameHost host = new CustomTestHeadlessGameHost(nameof(TestDefaultDirectory)))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
string defaultStorageLocation = getDefaultLocationFor(nameof(TestDefaultDirectory));
|
||||||
|
|
||||||
var osu = loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
var storage = osu.Dependencies.Get<Storage>();
|
var storage = osu.Dependencies.Get<Storage>();
|
||||||
|
|
||||||
string defaultStorageLocation = Path.Combine(RuntimeInfo.StartupDirectory, "headless", nameof(TestDefaultDirectory));
|
|
||||||
Assert.That(storage.GetFullPath("."), Is.EqualTo(defaultStorageLocation));
|
Assert.That(storage.GetFullPath("."), Is.EqualTo(defaultStorageLocation));
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -46,21 +40,14 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string customPath => Path.Combine(RuntimeInfo.StartupDirectory, "custom-path");
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestCustomDirectory()
|
public void TestCustomDirectory()
|
||||||
{
|
{
|
||||||
using (var host = new HeadlessGameHost(nameof(TestCustomDirectory)))
|
string customPath = prepareCustomPath();
|
||||||
|
|
||||||
|
using (var host = new CustomTestHeadlessGameHost(nameof(TestCustomDirectory)))
|
||||||
{
|
{
|
||||||
string defaultStorageLocation = Path.Combine(RuntimeInfo.StartupDirectory, "headless", nameof(TestCustomDirectory));
|
using (var storageConfig = new StorageConfigManager(host.InitialStorage))
|
||||||
|
|
||||||
// need access before the game has constructed its own storage yet.
|
|
||||||
Storage storage = new DesktopStorage(defaultStorageLocation, host);
|
|
||||||
// manual cleaning so we can prepare a config file.
|
|
||||||
storage.DeleteDirectory(string.Empty);
|
|
||||||
|
|
||||||
using (var storageConfig = new StorageConfigManager(storage))
|
|
||||||
storageConfig.Set(StorageConfig.FullPath, customPath);
|
storageConfig.Set(StorageConfig.FullPath, customPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -68,7 +55,7 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
var osu = loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
|
|
||||||
// switch to DI'd storage
|
// switch to DI'd storage
|
||||||
storage = osu.Dependencies.Get<Storage>();
|
var storage = osu.Dependencies.Get<Storage>();
|
||||||
|
|
||||||
Assert.That(storage.GetFullPath("."), Is.EqualTo(customPath));
|
Assert.That(storage.GetFullPath("."), Is.EqualTo(customPath));
|
||||||
}
|
}
|
||||||
@ -82,16 +69,11 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestSubDirectoryLookup()
|
public void TestSubDirectoryLookup()
|
||||||
{
|
{
|
||||||
using (var host = new HeadlessGameHost(nameof(TestSubDirectoryLookup)))
|
string customPath = prepareCustomPath();
|
||||||
|
|
||||||
|
using (var host = new CustomTestHeadlessGameHost(nameof(TestSubDirectoryLookup)))
|
||||||
{
|
{
|
||||||
string defaultStorageLocation = Path.Combine(RuntimeInfo.StartupDirectory, "headless", nameof(TestSubDirectoryLookup));
|
using (var storageConfig = new StorageConfigManager(host.InitialStorage))
|
||||||
|
|
||||||
// need access before the game has constructed its own storage yet.
|
|
||||||
Storage storage = new DesktopStorage(defaultStorageLocation, host);
|
|
||||||
// manual cleaning so we can prepare a config file.
|
|
||||||
storage.DeleteDirectory(string.Empty);
|
|
||||||
|
|
||||||
using (var storageConfig = new StorageConfigManager(storage))
|
|
||||||
storageConfig.Set(StorageConfig.FullPath, customPath);
|
storageConfig.Set(StorageConfig.FullPath, customPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -99,7 +81,7 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
var osu = loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
|
|
||||||
// switch to DI'd storage
|
// switch to DI'd storage
|
||||||
storage = osu.Dependencies.Get<Storage>();
|
var storage = osu.Dependencies.Get<Storage>();
|
||||||
|
|
||||||
string actualTestFile = Path.Combine(customPath, "rulesets", "test");
|
string actualTestFile = Path.Combine(customPath, "rulesets", "test");
|
||||||
|
|
||||||
@ -120,10 +102,14 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestMigration()
|
public void TestMigration()
|
||||||
{
|
{
|
||||||
using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestMigration)))
|
string customPath = prepareCustomPath();
|
||||||
|
|
||||||
|
using (HeadlessGameHost host = new CustomTestHeadlessGameHost(nameof(TestMigration)))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
string defaultStorageLocation = getDefaultLocationFor(nameof(TestMigration));
|
||||||
|
|
||||||
var osu = loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
var storage = osu.Dependencies.Get<Storage>();
|
var storage = osu.Dependencies.Get<Storage>();
|
||||||
|
|
||||||
@ -139,8 +125,6 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
// for testing nested files are not ignored (only top level)
|
// for testing nested files are not ignored (only top level)
|
||||||
host.Storage.GetStorageForDirectory("test-nested").GetStorageForDirectory("cache");
|
host.Storage.GetStorageForDirectory("test-nested").GetStorageForDirectory("cache");
|
||||||
|
|
||||||
string defaultStorageLocation = Path.Combine(RuntimeInfo.StartupDirectory, "headless", nameof(TestMigration));
|
|
||||||
|
|
||||||
Assert.That(storage.GetFullPath("."), Is.EqualTo(defaultStorageLocation));
|
Assert.That(storage.GetFullPath("."), Is.EqualTo(defaultStorageLocation));
|
||||||
|
|
||||||
osu.Migrate(customPath);
|
osu.Migrate(customPath);
|
||||||
@ -178,14 +162,15 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestMigrationBetweenTwoTargets()
|
public void TestMigrationBetweenTwoTargets()
|
||||||
{
|
{
|
||||||
using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestMigrationBetweenTwoTargets)))
|
string customPath = prepareCustomPath();
|
||||||
|
string customPath2 = prepareCustomPath("-2");
|
||||||
|
|
||||||
|
using (HeadlessGameHost host = new CustomTestHeadlessGameHost(nameof(TestMigrationBetweenTwoTargets)))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var osu = loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
|
|
||||||
string customPath2 = $"{customPath}-2";
|
|
||||||
|
|
||||||
const string database_filename = "client.db";
|
const string database_filename = "client.db";
|
||||||
|
|
||||||
Assert.DoesNotThrow(() => osu.Migrate(customPath));
|
Assert.DoesNotThrow(() => osu.Migrate(customPath));
|
||||||
@ -207,7 +192,9 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestMigrationToSameTargetFails()
|
public void TestMigrationToSameTargetFails()
|
||||||
{
|
{
|
||||||
using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestMigrationToSameTargetFails)))
|
string customPath = prepareCustomPath();
|
||||||
|
|
||||||
|
using (HeadlessGameHost host = new CustomTestHeadlessGameHost(nameof(TestMigrationToSameTargetFails)))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -226,7 +213,9 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestMigrationToNestedTargetFails()
|
public void TestMigrationToNestedTargetFails()
|
||||||
{
|
{
|
||||||
using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestMigrationToNestedTargetFails)))
|
string customPath = prepareCustomPath();
|
||||||
|
|
||||||
|
using (HeadlessGameHost host = new CustomTestHeadlessGameHost(nameof(TestMigrationToNestedTargetFails)))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -253,7 +242,9 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestMigrationToSeeminglyNestedTarget()
|
public void TestMigrationToSeeminglyNestedTarget()
|
||||||
{
|
{
|
||||||
using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestMigrationToSeeminglyNestedTarget)))
|
string customPath = prepareCustomPath();
|
||||||
|
|
||||||
|
using (HeadlessGameHost host = new CustomTestHeadlessGameHost(nameof(TestMigrationToSeeminglyNestedTarget)))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -282,6 +273,7 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
var osu = new OsuGameBase();
|
var osu = new OsuGameBase();
|
||||||
Task.Run(() => host.Run(osu));
|
Task.Run(() => host.Run(osu));
|
||||||
waitForOrAssert(() => osu.IsLoaded, @"osu! failed to start in a reasonable amount of time");
|
waitForOrAssert(() => osu.IsLoaded, @"osu! failed to start in a reasonable amount of time");
|
||||||
|
|
||||||
return osu;
|
return osu;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,5 +286,39 @@ namespace osu.Game.Tests.NonVisual
|
|||||||
|
|
||||||
Assert.IsTrue(task.Wait(timeout), failureMessage);
|
Assert.IsTrue(task.Wait(timeout), failureMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string getDefaultLocationFor(string testTypeName)
|
||||||
|
{
|
||||||
|
string path = Path.Combine(RuntimeInfo.StartupDirectory, "headless", testTypeName);
|
||||||
|
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
Directory.Delete(path, true);
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string prepareCustomPath(string suffix = "")
|
||||||
|
{
|
||||||
|
string path = Path.Combine(RuntimeInfo.StartupDirectory, $"custom-path{suffix}");
|
||||||
|
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
Directory.Delete(path, true);
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomTestHeadlessGameHost : HeadlessGameHost
|
||||||
|
{
|
||||||
|
public Storage InitialStorage { get; }
|
||||||
|
|
||||||
|
public CustomTestHeadlessGameHost(string name)
|
||||||
|
: base(name)
|
||||||
|
{
|
||||||
|
string defaultStorageLocation = getDefaultLocationFor(name);
|
||||||
|
|
||||||
|
InitialStorage = new DesktopStorage(defaultStorageLocation, this);
|
||||||
|
InitialStorage.DeleteDirectory(string.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user