Ejemplo n.º 1
0
        /// <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}'");
            }
        }
Ejemplo n.º 2
0
        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}'");
        }