Пример #1
0
        public void TempCleanerCleanRootDirectory(bool deleteRoot)
        {
            string moveDeletionTemp = Path.Combine(TemporaryDirectory, "MoveDeletionTemp");

            Directory.CreateDirectory(moveDeletionTemp);

            string directoryToBeDeleted = Path.Combine(TemporaryDirectory, Guid.NewGuid().ToString());

            Directory.CreateDirectory(directoryToBeDeleted);
            string deletedFile = Path.Combine(directoryToBeDeleted, "file");

            File.WriteAllText(deletedFile, "asdf");

            string movedFile = Path.Combine(TemporaryDirectory, "movedFile");

            File.WriteAllText(movedFile, "asdf");

            // Create a temp cleaner with a temp directory
            using (TempCleaner cleaner = TempCleaner.CreateForTesting(LoggingContext, moveDeletionTemp, bestEffort: false))
            {
                // Move-delete a file into the TempCleaner temp directory
                FileUtilities.TryMoveDelete(movedFile, cleaner.TempDirectory);

                cleaner.RegisterDirectoryToDelete(directoryToBeDeleted, deleteRoot);

                cleaner.WaitPendingTasksForCompletion();
            }

            XAssert.AreEqual(!deleteRoot, Directory.Exists(directoryToBeDeleted));
            XAssert.IsTrue(Directory.Exists(moveDeletionTemp));
        }
Пример #2
0
        public void CleanTempCleanerTempDirectory()
        {
            // Make a temp directory for TempCleaner
            string deletionTemp = Path.Combine(TemporaryDirectory, "DeletionTemp");

            Directory.CreateDirectory(deletionTemp);

            // Make a file outside of TempCleaner temp directory
            string deletedFile = Path.Combine(TemporaryDirectory, Guid.NewGuid().ToString());

            File.WriteAllText(deletedFile, "asdf");

            // Create a temp cleaner with a temp directory
            using (TempCleaner cleaner = TempCleaner.CreateForTesting(LoggingContext, deletionTemp, bestEffort: false))
            {
                // Move-delete a file into the TempCleaner temp directory
                FileUtilities.TryMoveDelete(deletedFile, cleaner.TempDirectory);

                cleaner.WaitPendingTasksForCompletion();
                XAssert.AreEqual(1, cleaner.SucceededDirectories);
            }

            // TempCleaner should clean out \deletionTemp before or during Dispose
            XAssert.IsFalse(File.Exists(deletedFile));
        }
Пример #3
0
        public void CleanTempDirsAndFilesWithOpenedFile()
        {
            // Arrange
            Tuple <string, string> dirs = CreateDirs();

            string file = Path.Combine(dirs.Item1, "openedFile.txt");

            // Warning for a failed deleted file
            IgnoreWarnings();

            using (StreamWriter writer = new StreamWriter(file))
            {
                writer.Write("asdf");
                writer.Flush();
                XAssert.IsTrue(File.Exists(file));

                // Act
                using (TempCleaner cleaner = TempCleaner.CreateForTesting(LoggingContext, bestEffort: false))
                {
                    // This should fail
                    cleaner.RegisterDirectoryToDelete(dirs.Item1, deleteRootDirectory: false);
                    cleaner.RegisterDirectoryToDelete(dirs.Item2, deleteRootDirectory: false);

                    // This should fail
                    cleaner.RegisterFileToDelete(file);

                    // Waiting for pending tasks to complete
                    cleaner.WaitPendingTasksForCompletion();

                    // Assert
                    XAssert.AreEqual(1, cleaner.SucceededDirectories);
                    XAssert.AreEqual(0, cleaner.PendingDirectories);
                    XAssert.AreEqual(1, cleaner.FailedDirectories);

                    XAssert.AreEqual(0, cleaner.SucceededFiles);
                    XAssert.AreEqual(0, cleaner.PendingFiles);
                    XAssert.AreEqual(1, cleaner.FailedFiles);
                }

                XAssert.IsTrue(File.Exists(file));
            }

            AssertDirectoryEmpty(dirs.Item2);
        }
Пример #4
0
        public void CleanNonexisting()
        {
            RegisterEventSource(global::BuildXL.Scheduler.ETWLogger.Log);
            RegisterEventSource(global::BuildXL.Pips.ETWLogger.Log);

            string baseDir = TemporaryDirectory;
            string dir     = Path.Combine(baseDir, "DirDoesntExist");
            string file    = Path.Combine(baseDir, "FileDoesntExist.txt");

            using (TempCleaner cleaner = TempCleaner.CreateForTesting(LoggingContext, bestEffort: false))
            {
                cleaner.RegisterDirectoryToDelete(dir, deleteRootDirectory: false);
                cleaner.RegisterFileToDelete(file);
                cleaner.WaitPendingTasksForCompletion();
            }

            // No warnings for missing file/folder
            m_expectedWarningCount = 0;
        }
Пример #5
0
        public void CleanTempDirsAndFiles()
        {
            // Arrange
            Tuple <string, string> dirs = CreateDirs();

            string tempFile = Path.Combine(dirs.Item1, "SomeTemporaryFile.txt");

            PrepareFileWithConent(tempFile, "sampleContent");

            // Act
            using (TempCleaner cleaner = TempCleaner.CreateForTesting(LoggingContext, bestEffort: false))
            {
                cleaner.RegisterDirectoryToDelete(dirs.Item1, deleteRootDirectory: false);
                cleaner.RegisterDirectoryToDelete(dirs.Item2, deleteRootDirectory: false);
                cleaner.RegisterFileToDelete(tempFile);

                // Registering file that is not exists
                string notExistedPath = Path.Combine(dirs.Item1, "UnknownFile.txt");
                XAssert.IsFalse(File.Exists(notExistedPath));
                cleaner.RegisterFileToDelete(notExistedPath);

                // Waiting for pending tasks to complete
                cleaner.WaitPendingTasksForCompletion();

                // Assert
                XAssert.AreEqual(2, cleaner.SucceededDirectories);
                XAssert.AreEqual(0, cleaner.PendingDirectories);
                XAssert.AreEqual(0, cleaner.FailedDirectories);

                XAssert.AreEqual(2, cleaner.SucceededFiles);
                XAssert.AreEqual(0, cleaner.PendingFiles);
                XAssert.AreEqual(0, cleaner.FailedFiles);
            }

            AssertDirectoryEmpty(dirs.Item1);
            AssertDirectoryEmpty(dirs.Item2);
        }