public void TestCustomDirectory() { string customPath = prepareCustomPath(); using (var host = new CustomTestHeadlessGameHost(nameof(TestCustomDirectory))) { using (var storageConfig = new StorageConfigManager(host.InitialStorage)) storageConfig.Set(StorageConfig.FullPath, customPath); try { var osu = loadOsu(host); // switch to DI'd storage var storage = osu.Dependencies.Get <Storage>(); Assert.That(storage.GetFullPath("."), Is.EqualTo(customPath)); } finally { host.Exit(); } } }
public void TestMigration() { string customPath = prepareCustomPath(); using (var host = new CustomTestHeadlessGameHost()) { try { string defaultStorageLocation = getDefaultLocationFor(nameof(TestMigration)); var osu = LoadOsuIntoHost(host); var storage = osu.Dependencies.Get <Storage>(); var osuStorage = storage as MigratableStorage; // Store the current storage's path. We'll need to refer to this for assertions in the original directory after the migration completes. string originalDirectory = storage.GetFullPath("."); // ensure we perform a save host.Dependencies.Get <FrameworkConfigManager>().Save(); // ensure we "use" cache host.Storage.GetStorageForDirectory("cache"); // for testing nested files are not ignored (only top level) host.Storage.GetStorageForDirectory("test-nested").GetStorageForDirectory("cache"); Assert.That(storage.GetFullPath("."), Is.EqualTo(defaultStorageLocation)); osu.Migrate(customPath); Assert.That(storage.GetFullPath("."), Is.EqualTo(customPath)); // ensure cache was not moved Assert.That(Directory.Exists(Path.Combine(originalDirectory, "cache"))); // ensure nested cache was moved Assert.That(!Directory.Exists(Path.Combine(originalDirectory, "test-nested", "cache"))); Assert.That(storage.ExistsDirectory(Path.Combine("test-nested", "cache"))); Assert.That(osuStorage, Is.Not.Null); foreach (var file in osuStorage.IgnoreFiles) { Assert.That(File.Exists(Path.Combine(originalDirectory, file))); Assert.That(storage.Exists(file), Is.False); } foreach (var dir in osuStorage.IgnoreDirectories) { Assert.That(Directory.Exists(Path.Combine(originalDirectory, dir))); Assert.That(storage.ExistsDirectory(dir), Is.False); } Assert.That(new StreamReader(Path.Combine(originalDirectory, "storage.ini")).ReadToEnd().Contains($"FullPath = {customPath}")); } finally { host.Exit(); } } }
public void TestMigration() { string customPath = prepareCustomPath(); using (var host = new CustomTestHeadlessGameHost()) { try { string defaultStorageLocation = getDefaultLocationFor(host); var osu = LoadOsuIntoHost(host); var storage = osu.Dependencies.Get <Storage>(); var osuStorage = storage as MigratableStorage; // Store the current storage's path. We'll need to refer to this for assertions in the original directory after the migration completes. string originalDirectory = storage.GetFullPath("."); // ensure we perform a save host.Dependencies.Get <FrameworkConfigManager>().Save(); // ensure we "use" cache host.Storage.GetStorageForDirectory("cache"); // for testing nested files are not ignored (only top level) host.Storage.GetStorageForDirectory("test-nested").GetStorageForDirectory("cache"); Assert.That(storage.GetFullPath("."), Is.EqualTo(defaultStorageLocation)); osu.Migrate(customPath); Assert.That(storage.GetFullPath("."), Is.EqualTo(customPath)); // ensure cache was not moved Assert.That(Directory.Exists(Path.Combine(originalDirectory, "cache"))); // ensure nested cache was moved Assert.That(!Directory.Exists(Path.Combine(originalDirectory, "test-nested", "cache"))); Assert.That(storage.ExistsDirectory(Path.Combine("test-nested", "cache"))); Assert.That(osuStorage, Is.Not.Null); // In the following tests, realm files are ignored as // - in the case of checking the source, interacting with the pipe files (.realm.note) may // lead to unexpected behaviour. // - in the case of checking the destination, the files may have already been recreated by the game // as part of the standard migration flow. foreach (string file in osuStorage.IgnoreFiles) { if (!file.Contains(".realm", StringComparison.Ordinal)) { Assert.That(File.Exists(Path.Combine(originalDirectory, file))); Assert.That(storage.Exists(file), Is.False, () => $"{file} exists in destination when it was expected to be ignored"); } } foreach (string dir in osuStorage.IgnoreDirectories) { if (!dir.Contains(".realm", StringComparison.Ordinal)) { Assert.That(Directory.Exists(Path.Combine(originalDirectory, dir))); Assert.That(storage.Exists(dir), Is.False, () => $"{dir} exists in destination when it was expected to be ignored"); } } Assert.That(new StreamReader(Path.Combine(originalDirectory, "storage.ini")).ReadToEnd().Contains($"FullPath = {customPath}")); } finally { host.Exit(); cleanupPath(customPath); } } }