2021-03-29 13:27:25 +00:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
2022-06-17 07:37:17 +00:00
#nullable disable
2021-03-29 13:03:10 +00:00
using System.IO ;
2021-12-24 11:17:47 +00:00
using System.Linq ;
2021-03-29 13:03:10 +00:00
using NUnit.Framework ;
using osu.Framework.Allocation ;
using osu.Framework.Platform ;
2021-12-24 11:17:47 +00:00
using osu.Framework.Testing ;
2021-03-29 13:03:10 +00:00
using osu.Game.Tournament.IO ;
using osu.Game.Tournament.IPC ;
namespace osu.Game.Tournament.Tests.NonVisual
{
[TestFixture]
2021-07-29 16:53:08 +00:00
public class IPCLocationTest : TournamentHostTest
2021-03-29 13:03:10 +00:00
{
[Test]
public void CheckIPCLocation ( )
{
// don't use clean run because files are being written before osu! launches.
2022-10-28 15:24:33 +00:00
using ( var host = new TestRunHeadlessGameHost ( nameof ( CheckIPCLocation ) ) )
2021-03-29 13:03:10 +00:00
{
2021-12-24 11:17:47 +00:00
string basePath = Path . Combine ( host . UserStoragePaths . First ( ) , nameof ( CheckIPCLocation ) ) ;
2021-03-29 13:03:10 +00:00
// Set up a fake IPC client for the IPC Storage to switch to.
2021-03-30 05:23:46 +00:00
string testStableInstallDirectory = Path . Combine ( basePath , "stable-ce" ) ;
Directory . CreateDirectory ( testStableInstallDirectory ) ;
2021-03-29 13:03:10 +00:00
2021-03-30 05:23:46 +00:00
string ipcFile = Path . Combine ( testStableInstallDirectory , "ipc.txt" ) ;
2021-03-29 13:03:10 +00:00
File . WriteAllText ( ipcFile , string . Empty ) ;
try
{
2021-07-29 16:53:08 +00:00
var osu = LoadTournament ( host ) ;
2021-03-29 13:03:10 +00:00
TournamentStorage storage = ( TournamentStorage ) osu . Dependencies . Get < Storage > ( ) ;
2021-03-30 05:23:46 +00:00
FileBasedIPC ipc = null ;
2021-03-29 13:03:10 +00:00
2022-01-07 10:01:05 +00:00
WaitForOrAssert ( ( ) = > ( ipc = osu . Dependencies . Get < MatchIPCInfo > ( ) as FileBasedIPC ) ? . IsLoaded = = true , @"ipc could not be populated in a reasonable amount of time" ) ;
2021-03-29 14:16:50 +00:00
2021-03-30 05:23:46 +00:00
Assert . True ( ipc . SetIPCLocation ( testStableInstallDirectory ) ) ;
2021-03-29 13:03:10 +00:00
Assert . True ( storage . AllTournaments . Exists ( "stable.json" ) ) ;
}
finally
{
host . Exit ( ) ;
}
}
}
}
}