Files
UnrealEngine/Engine/Source/Programs/Shared/UnrealBuildTool.Tests/TestUtilities/SafeTestDirectory.cs
2025-05-18 13:04:45 +08:00

47 lines
1.1 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using System;
using System.IO;
namespace UnrealBuildTool.Tests.TestUtilities
{
internal class SafeTestDirectory : IDisposable
{
internal string TemporaryDirectory { get; private set; }
private bool _wasFolderCreated = false;
private SafeTestDirectory(string temporaryDirectory, bool wasFolderCreated = false)
{
TemporaryDirectory = temporaryDirectory;
_wasFolderCreated = wasFolderCreated;
}
internal static SafeTestDirectory CreateTestDirectory(string absoluteDirectoryPath)
{
SafeTestDirectory returnDirectory = new SafeTestDirectory(absoluteDirectoryPath);
if (!Directory.Exists(absoluteDirectoryPath))
{
Directory.CreateDirectory(absoluteDirectoryPath);
returnDirectory._wasFolderCreated = true;
}
return returnDirectory;
}
public void Dispose()
{
if (_wasFolderCreated && !String.IsNullOrEmpty(TemporaryDirectory) && Directory.Exists(TemporaryDirectory))
{
try
{
Directory.Delete(TemporaryDirectory, true);
}
catch (Exception)
{
// Swallow exception
}
}
}
}
}