public void MigrateXprojProjectFactory_ValidArgs_BackupsCorrectly() { var procRunner = ProcessRunnerFactory.CreateRunner(); var fileSystem = CreateFileSystem(); var migrator = new MigrateXprojProjectFactory(procRunner, fileSystem); var loggedMessages = new List <LogMessage>(); var logger = IVsUpgradeLoggerFactory.CreateLogger(loggedMessages); Assert.True(migrator.BackupProject(BackupLocation, XprojLocation, "XprojMigrationTests", logger)); // We expect 2 informational messages about what files were backed up. Assert.Equal(2, loggedMessages.Count); loggedMessages.ForEach(message => { Assert.Equal((uint)__VSUL_ERRORLEVEL.VSUL_INFORMATIONAL, message.Level); Assert.Equal("XprojMigrationTests", message.Project); }); // The first message should be about the old xproj, the second about the project.json var xprojBackedUp = Path.Combine(BackupLocation, "XprojMigrationTests.xproj"); var projectJsonBackedUp = Path.Combine(BackupLocation, "project.json"); Assert.Equal(XprojLocation, loggedMessages[0].File); Assert.Equal(ProjectJsonLocation, loggedMessages[1].File); Assert.Equal($"Backing up {XprojLocation} to {xprojBackedUp}.", loggedMessages[0].Message); Assert.Equal($"Backing up {ProjectJsonLocation} to {projectJsonBackedUp}.", loggedMessages[1].Message); // Finally, assert that there actually are backup files in the backup directory var backedUpFiles = fileSystem.EnumerateFiles(BackupLocation, "*", SearchOption.TopDirectoryOnly); Assert.Equal(2, backedUpFiles.Count()); Assert.True(backedUpFiles.Contains(xprojBackedUp)); Assert.True(backedUpFiles.Contains(projectJsonBackedUp)); }
public void MigrateXprojProjectFactory_NonExistantProjectJson_DoesNotBackUp() { var procRunner = ProcessRunnerFactory.CreateRunner(); var migrator = new MigrateXprojProjectFactory(procRunner, CreateFileSystem(false)); var loggedMessages = new List <LogMessage>(); var logger = IVsUpgradeLoggerFactory.CreateLogger(loggedMessages); Assert.False(migrator.BackupProject(BackupLocation, XprojLocation, "XprojMigrationTests", logger)); Assert.Equal(1, loggedMessages.Count); Assert.Equal((uint)__VSUL_ERRORLEVEL.VSUL_ERROR, loggedMessages[0].Level); Assert.Equal("XprojMigrationTests", loggedMessages[0].Project); Assert.Equal(ProjectJsonLocation, loggedMessages[0].File); Assert.Equal($"Failed to migrate XProj project XprojMigrationTests. Could not find project.json at {ProjectJsonLocation}.", loggedMessages[0].Message); }