public async Task ShouldUpdateDotnetClassicProject() { const string oldPackageVersion = "5.2.3"; const string newPackageVersion = "5.2.4"; const string expectedPackageString = "<package id=\"Microsoft.AspNet.WebApi.Client\" version=\"{packageVersion}\" targetFramework=\"net47\" />"; const string testFolder = nameof(ShouldUpdateDotnetClassicProject); var testProject = $"{testFolder}.csproj"; var workDirectory = Path.Combine(_uniqueTemporaryFolder.FullPath, testFolder); Directory.CreateDirectory(workDirectory); var packagesFolder = Path.Combine(workDirectory, "packages"); Directory.CreateDirectory(packagesFolder); var projectContents = _testDotNetClassicProject.Replace("{packageVersion}", oldPackageVersion, StringComparison.OrdinalIgnoreCase); var projectPath = Path.Combine(workDirectory, testProject); await File.WriteAllTextAsync(projectPath, projectContents); var packagesConfigContents = _testPackagesConfig.Replace("{packageVersion}", oldPackageVersion, StringComparison.OrdinalIgnoreCase); var packagesConfigPath = Path.Combine(workDirectory, "packages.config"); await File.WriteAllTextAsync(packagesConfigPath, packagesConfigContents); await File.WriteAllTextAsync(Path.Combine(workDirectory, "nuget.config"), _nugetConfig); var logger = NukeeperLogger; var externalProcess = new ExternalProcess(logger); var monoExecutor = new MonoExecutor(logger, externalProcess); var nuGetPath = new NuGetPath(logger); var nuGetVersion = new NuGetVersion(newPackageVersion); var packageSource = new PackageSource(NuGetConstants.V3FeedUrl); var restoreCommand = new NuGetFileRestoreCommand(logger, nuGetPath, monoExecutor, externalProcess); var updateCommand = new NuGetUpdatePackageCommand(logger, nuGetPath, monoExecutor, externalProcess); var packageToUpdate = new PackageInProject("Microsoft.AspNet.WebApi.Client", oldPackageVersion, new PackagePath(workDirectory, testProject, PackageReferenceType.PackagesConfig)); await restoreCommand.Invoke(packageToUpdate, nuGetVersion, packageSource, NuGetSources.GlobalFeed); await updateCommand.Invoke(packageToUpdate, nuGetVersion, packageSource, NuGetSources.GlobalFeed); var contents = await File.ReadAllTextAsync(packagesConfigPath); Assert.That(contents, Does.Contain(expectedPackageString.Replace("{packageVersion}", newPackageVersion, StringComparison.OrdinalIgnoreCase))); Assert.That(contents, Does.Not.Contain(expectedPackageString.Replace("{packageVersion}", oldPackageVersion, StringComparison.OrdinalIgnoreCase))); }
public async Task WhenCallingRun_ShouldPassArgumentToUnderlyingExternalProcess() { var nuKeeperLogger = Substitute.For <INuKeeperLogger>(); var externalProcess = Substitute.For <IExternalProcess>(); externalProcess.Run("", "mono", "--version", false). Returns(new ProcessOutput("", "", 0)); var monoExecutor = new MonoExecutor(nuKeeperLogger, externalProcess); await monoExecutor.Run("wd", "command", "args", true); await externalProcess.Received(1).Run("wd", "mono", "command args", true); }
public void WhenCallingRun_ShouldThrowIfMonoWasNotFound() { var nuKeeperLogger = Substitute.For <INuKeeperLogger>(); var externalProcess = Substitute.For <IExternalProcess>(); externalProcess.Run("", "mono", "--version", false). Returns(new ProcessOutput("", "", 1)); var monoExecutor = new MonoExecutor(nuKeeperLogger, externalProcess); Assert.ThrowsAsync <InvalidOperationException>(async() => await monoExecutor.Run("wd", "command", "args", true)); }
public async Task WhenCallingCanRun_ShouldCheckExternalProcessResult(int exitCode, bool expectedCanExecute) { var nuKeeperLogger = Substitute.For <INuKeeperLogger>(); var externalProcess = Substitute.For <IExternalProcess>(); externalProcess.Run("", "mono", "--version", false). Returns(new ProcessOutput("", "", exitCode)); var monoExecutor = new MonoExecutor(nuKeeperLogger, externalProcess); var canRun = await monoExecutor.CanRun(); Assert.AreEqual(expectedCanExecute, canRun); }
public async Task WhenCallingCanRun_ShouldOnlyCallExternalProcessOnce() { var nuKeeperLogger = Substitute.For <INuKeeperLogger>(); var externalProcess = Substitute.For <IExternalProcess>(); externalProcess.Run("", "mono", "--version", false). Returns(new ProcessOutput("", "", 0)); var monoExecutor = new MonoExecutor(nuKeeperLogger, externalProcess); await monoExecutor.CanRun(); await monoExecutor.CanRun(); await monoExecutor.CanRun(); await externalProcess.Received(1).Run( "", "mono", "--version", false); }