public void Log_MissingFile()
        {
            var context = new UninstallContext(TestContext, false);

            context.UninstallTargets();
            context.Logger.AssertDebugLogged(context.BinDir + @"\targets\SonarQube.Integration.targets does not exist");
        }
        public void DeleteFileWhenPresent()
        {
            var context = new UninstallContext(TestContext, true);

            context.UninstallTargets();
            File.Exists(context.TargetsFilePath).Should().BeFalse();
            context.Logger.AssertDebugLogged("Uninstalling target: " + context.TargetsFilePath);
        }
        public void Log_OnIOException()
        {
            var context = new UninstallContext(TestContext, true);

            using (var fs = new FileStream(context.TargetsFilePath, FileMode.Open, FileAccess.Read, FileShare.None))    // Lock file
            {
                context.UninstallTargets();
            }
            File.Exists(context.TargetsFilePath).Should().BeTrue(); // Failed to delete
            context.Logger.AssertDebugLogged("Could not delete " + context.TargetsFilePath);
        }
        public void Log_OnUnauthorizedAccessException()
        {
            var context = new UninstallContext(TestContext, true);

            File.SetAttributes(context.TargetsFilePath, FileAttributes.ReadOnly);   // Make readonly to cause UnauthorizedAccessException
            try
            {
                context.UninstallTargets();
            }
            finally
            {
                // Restore to prevent UT output from blocking
                File.SetAttributes(context.TargetsFilePath, FileAttributes.Normal);
            }
            File.Exists(context.TargetsFilePath).Should().BeTrue(); // Failed to delete
            context.Logger.AssertDebugLogged("Could not delete " + context.TargetsFilePath);
        }