// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Microsoft.DotNet.Tools.Test.Utilities { /// /// Base class for all unit test classes. /// public abstract class TestBase : IDisposable { private TempRoot _temp; protected TestBase() { } public static string GetUniqueName() { return Guid.NewGuid().ToString("D"); } public TempRoot Temp { get { if (_temp == null) { _temp = new TempRoot(); } return _temp; } } public virtual void Dispose() { if (_temp != null && !PreserveTemp()) { _temp.Dispose(); } } // Quick-n-dirty way to allow the temp output to be preserved when running tests private bool PreserveTemp() { var val = Environment.GetEnvironmentVariable("DOTNET_TEST_PRESERVE_TEMP"); return !string.IsNullOrEmpty(val) && ( string.Equals("true", val, StringComparison.OrdinalIgnoreCase) || string.Equals("1", val, StringComparison.OrdinalIgnoreCase) || string.Equals("on", val, StringComparison.OrdinalIgnoreCase)); } } }