public void MigrateXprojProjectFactory_MigrateOutput_LoggedCorrectly()
        {
            // Runner returns valid response, standard exit code
            var procRunner = ProcessRunnerFactory.ImplementRunner(ProcessVerifier, outputText: "Standard Output", errorText: "Standard Error");
            var migrator   = new MigrateXprojProjectFactory(procRunner, CreateFileSystem(false));

            var loggedMessages = new List <LogMessage>();
            var logger         = IVsUpgradeLoggerFactory.CreateLogger(loggedMessages);

            Assert.True(migrator.MigrateProject(RootLocation, XprojLocation, "XprojMigrationTests", logger));
            Assert.Equal(2, loggedMessages.Count);
            Assert.Equal(new LogMessage
            {
                File    = XprojLocation,
                Level   = (uint)__VSUL_ERRORLEVEL.VSUL_INFORMATIONAL,
                Message = "Standard Output",
                Project = "XprojMigrationTests"
            }, loggedMessages[0]);
            Assert.Equal(new LogMessage
            {
                File    = XprojLocation,
                Level   = (uint)__VSUL_ERRORLEVEL.VSUL_WARNING,
                Message = "Standard Error",
                Project = "XprojMigrationTests"
            }, loggedMessages[1]);
        }
        public void MigrateXprojProjectFactory_ValidPaths_CallMigrateCorrectly()
        {
            // Runner returns valid response, standard exit code
            var procRunner = ProcessRunnerFactory.ImplementRunner(ProcessVerifier);
            var migrator   = new MigrateXprojProjectFactory(procRunner, CreateFileSystem(false));

            var loggedMessages = new List <LogMessage>();
            var logger         = IVsUpgradeLoggerFactory.CreateLogger(loggedMessages);

            Assert.True(migrator.MigrateProject(RootLocation, XprojLocation, "XprojMigrationTests", logger));
            Assert.Equal(0, loggedMessages.Count);
        }
        public void MigrateXprojProjectFactory_MigrateError_ReturnsFalse()
        {
            // Runner returns valid response, standard exit code
            var procRunner = ProcessRunnerFactory.ImplementRunner(ProcessVerifier, exitCode: VSConstants.E_FAIL);
            var migrator   = new MigrateXprojProjectFactory(procRunner, CreateFileSystem(false));

            var loggedMessages = new List <LogMessage>();
            var logger         = IVsUpgradeLoggerFactory.CreateLogger(loggedMessages);

            Assert.False(migrator.MigrateProject(RootLocation, XprojLocation, "XprojMigrationTests", logger));
            Assert.Equal(1, loggedMessages.Count);
            Assert.Equal(new LogMessage
            {
                Level   = (uint)__VSUL_ERRORLEVEL.VSUL_ERROR,
                Project = "XprojMigrationTests",
                File    = XprojLocation,
                Message = $"Failed to migrate XProj project XprojMigrationTests. 'dotnet migrate --skip-backup -s -p \"{RootLocation}\" -x \"{XprojLocation}\"' exited with error code {VSConstants.E_FAIL}."
            }, loggedMessages[0]);
        }