/// <summary> /// Creates a new instance of TestFS /// </summary> /// <param name="testArchivePath">The path of the test archive</param> /// <param name="baseTestFolder">The base test folder for test grouping</param> /// <param name="setCurrentDirectory">If it should set the current directory to the test directory</param> public TestFS(string testArchivePath, string baseTestFolder = "TestFS", bool setCurrentDirectory = false) { TestArchivePath = testArchivePath; BaseTestFolder = baseTestFolder; TestFolder = Path.Combine(Path.GetTempPath(), BaseTestFolder, Utils.RandomString(16)); Directory.CreateDirectory(TestFolder); if (!IsLocalPath(testArchivePath)) { var uri = new Uri(testArchivePath); Debug.WriteLine($"Archive path is an url"); var client = new WebClient(); var tempPath = Path.Combine(Path.GetTempPath(), BaseTestFolder, uri.Segments.Last()); if (File.Exists(tempPath)) { Debug.WriteLine("No need to download, using cached one"); } else { Debug.WriteLine("Downloading archive"); client.DownloadFile(testArchivePath, tempPath); } ZipFile.ExtractToDirectory(tempPath, TestFolder); // NOTE: Let's leverage the temp folder // File.Delete(tempPath); } else { ZipFile.ExtractToDirectory(TestArchivePath, TestFolder); } Debug.WriteLine($"Created test FS '{TestArchivePath}' in '{TestFolder}'"); if (setCurrentDirectory) { _oldCurrentDirectory = Environment.CurrentDirectory; Environment.CurrentDirectory = TestFolder; Debug.WriteLine($"Set current directory to '{TestFolder}'"); } }
public TestArea(string name) { Name = name; TestFolder = Path.Combine(Path.GetTempPath(), nameof(TestArea), $"{name}-{Utils.RandomString(8)}"); Directory.CreateDirectory(TestFolder); Debug.WriteLine($"Created test area '{name}' in folder '{TestFolder}'"); }