public async Task TestMSBuildNuGetProjectPSUninstall() { // Arrange var packageIdentity = new PackageIdentity("packageA", new NuGetVersion("1.0.0")); var randomTestPackageSourcePath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesConfigFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesConfigPath = Path.Combine(randomPackagesConfigFolderPath, "packages.config"); var token = CancellationToken.None; var projectTargetFramework = NuGetFramework.Parse("net45"); var testNuGetProjectContext = new TestNuGetProjectContext(); var msBuildNuGetProjectSystem = new TestMSBuildNuGetProjectSystem(projectTargetFramework, testNuGetProjectContext); var msBuildNuGetProject = new MSBuildNuGetProject(msBuildNuGetProjectSystem, randomPackagesFolderPath, randomPackagesConfigPath); // Pre-Assert // Check that the packages.config file does not exist Assert.False(File.Exists(randomPackagesConfigPath)); // Check that there are no packages returned by PackagesConfigProject var packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); Assert.Equal(0, msBuildNuGetProjectSystem.References.Count); var packageFileInfo = TestPackages.GetPackageWithPowershellScripts(randomTestPackageSourcePath, packageIdentity.Id, packageIdentity.Version.ToNormalizedString()); using (var packageStream = packageFileInfo.OpenRead()) { // Act await msBuildNuGetProject.InstallPackageAsync(packageIdentity, packageStream, testNuGetProjectContext, token); } // Assert // Check that the packages.config file exists after the installation Assert.True(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(1, packagesInPackagesConfig.Count); Assert.Equal(packageIdentity, packagesInPackagesConfig[0].PackageIdentity); Assert.Equal(projectTargetFramework, packagesInPackagesConfig[0].TargetFramework); // Check that the ps script install.ps1 has been executed var keys = msBuildNuGetProjectSystem.ScriptsExecuted.Keys.ToList(); Assert.Equal(2, msBuildNuGetProjectSystem.ScriptsExecuted.Count); Assert.Equal("tools\\init.ps1", keys[0]); Assert.Equal("tools\\net45\\install.ps1", keys[1]); Assert.Equal(1, msBuildNuGetProjectSystem.ScriptsExecuted[keys[0]]); Assert.Equal(1, msBuildNuGetProjectSystem.ScriptsExecuted[keys[1]]); // Main Act await msBuildNuGetProject.UninstallPackageAsync(packageIdentity, testNuGetProjectContext, token); // Assert // Check that the packages.config file does not exist after uninstallation Assert.False(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); // Check that the ps script install.ps1 has been executed Assert.Equal(3, msBuildNuGetProjectSystem.ScriptsExecuted.Count); keys = msBuildNuGetProjectSystem.ScriptsExecuted.Keys.ToList(); Assert.Equal("tools\\init.ps1", keys[0]); Assert.Equal("tools\\net45\\install.ps1", keys[1]); Assert.Equal("tools\\net45\\uninstall.ps1", keys[2]); Assert.Equal(1, msBuildNuGetProjectSystem.ScriptsExecuted[keys[0]]); Assert.Equal(1, msBuildNuGetProjectSystem.ScriptsExecuted[keys[1]]); Assert.Equal(1, msBuildNuGetProjectSystem.ScriptsExecuted[keys[2]]); // Clean-up TestFilesystemUtility.DeleteRandomTestFolders(randomTestPackageSourcePath, randomPackagesFolderPath, randomPackagesConfigFolderPath); }
public async Task TestMSBuildNuGetProjectUninstallWebConfigTransform() { // Arrange var packageIdentity = new PackageIdentity("packageA", new NuGetVersion("1.0.0")); var randomTestPackageSourcePath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomProjectFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesConfigPath = Path.Combine(randomProjectFolderPath, "packages.config"); var token = CancellationToken.None; var projectTargetFramework = NuGetFramework.Parse("net45"); var testNuGetProjectContext = new TestNuGetProjectContext(); var msBuildNuGetProjectSystem = new TestMSBuildNuGetProjectSystem(projectTargetFramework, testNuGetProjectContext, randomProjectFolderPath); // Important: Added "web.config" to project so that the transform may get applied msBuildNuGetProjectSystem.AddFile("web.config", StreamUtility.StreamFromString( @"<configuration> <system.web> <compilation baz=""test"" /> </system.web> </configuration> ")); var msBuildNuGetProject = new MSBuildNuGetProject(msBuildNuGetProjectSystem, randomPackagesFolderPath, randomPackagesConfigPath); // Pre-Assert // Check that the packages.config file does not exist Assert.False(File.Exists(randomPackagesConfigPath)); // Check that there are no packages returned by PackagesConfigProject var packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); Assert.Equal(0, msBuildNuGetProjectSystem.References.Count); var packageFileInfo = TestPackages.GetPackageWithWebConfigTransform(randomTestPackageSourcePath, packageIdentity.Id, packageIdentity.Version.ToNormalizedString(), @"<configuration> <system.web> <compilation debug=""true"" targetFramework=""4.0"" /> </system.web> </configuration> "); using (var packageStream = packageFileInfo.OpenRead()) { // Act await msBuildNuGetProject.InstallPackageAsync(packageIdentity, packageStream, testNuGetProjectContext, token); } // Assert // Check that the packages.config file exists after the installation Assert.True(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(1, packagesInPackagesConfig.Count); Assert.Equal(packageIdentity, packagesInPackagesConfig[0].PackageIdentity); Assert.Equal(projectTargetFramework, packagesInPackagesConfig[0].TargetFramework); // Check that the reference has been added to MSBuildNuGetProjectSystem Assert.Equal(2, msBuildNuGetProjectSystem.Files.Count); var filesList = msBuildNuGetProjectSystem.Files.ToList(); Assert.Equal("web.config", filesList[0]); Assert.Equal("packages.config", filesList[1]); // Check that the transform is applied properly using (var streamReader = new StreamReader(Path.Combine(randomProjectFolderPath, "web.config"))) { AssertEqualExceptWhitespaceAndLineEndings(@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <system.web> <compilation baz=""test"" debug=""true"" targetFramework=""4.0"" /> </system.web> </configuration> ", streamReader.ReadToEnd()); } // Main Act await msBuildNuGetProject.UninstallPackageAsync(packageIdentity, testNuGetProjectContext, token); // Assert // Check that the reference has been added to MSBuildNuGetProjectSystem Assert.Equal(1, msBuildNuGetProjectSystem.Files.Count); filesList = msBuildNuGetProjectSystem.Files.ToList(); Assert.Equal("web.config", filesList[0]); // Check that the transform is applied properly using (var streamReader = new StreamReader(Path.Combine(randomProjectFolderPath, "web.config"))) { AssertEqualExceptWhitespaceAndLineEndings(@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <system.web> <compilation baz=""test"" /> </system.web> </configuration> ", streamReader.ReadToEnd()); } // Clean-up TestFilesystemUtility.DeleteRandomTestFolders(randomTestPackageSourcePath, randomPackagesFolderPath, randomProjectFolderPath); }
public async Task TestMSBuildNuGetProjectRemoveImport() { // Arrange var packageIdentity = new PackageIdentity("packageA", new NuGetVersion("1.0.0")); var randomTestPackageSourcePath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesConfigFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesConfigPath = Path.Combine(randomPackagesConfigFolderPath, "packages.config"); var token = CancellationToken.None; var projectTargetFramework = NuGetFramework.Parse("net45"); var testNuGetProjectContext = new TestNuGetProjectContext(); var msBuildNuGetProjectSystem = new TestMSBuildNuGetProjectSystem(projectTargetFramework, testNuGetProjectContext); var msBuildNuGetProject = new MSBuildNuGetProject(msBuildNuGetProjectSystem, randomPackagesFolderPath, randomPackagesConfigPath); // Pre-Assert // Check that the packages.config file does not exist Assert.False(File.Exists(randomPackagesConfigPath)); // Check that there are no packages returned by PackagesConfigProject var packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); Assert.Equal(0, msBuildNuGetProjectSystem.References.Count); var packageFileInfo = TestPackages.GetPackageWithBuildFiles(randomTestPackageSourcePath, packageIdentity.Id, packageIdentity.Version.ToNormalizedString()); using (var packageStream = packageFileInfo.OpenRead()) { // Act await msBuildNuGetProject.InstallPackageAsync(packageIdentity, packageStream, testNuGetProjectContext, token); } // Assert // Check that the packages.config file exists after the installation Assert.True(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(1, packagesInPackagesConfig.Count); Assert.Equal(packageIdentity, packagesInPackagesConfig[0].PackageIdentity); Assert.Equal(projectTargetFramework, packagesInPackagesConfig[0].TargetFramework); // Check that the imports are added Assert.Equal(1, msBuildNuGetProjectSystem.Imports.Count); Assert.Equal(Path.Combine(msBuildNuGetProject.FolderNuGetProject.GetInstalledPath(packageIdentity), "build\\net45\\packageA.targets"), msBuildNuGetProjectSystem.Imports.First()); // Main Act await msBuildNuGetProject.UninstallPackageAsync(packageIdentity, testNuGetProjectContext, token); // Assert // Check that the packages.config file does not exist after uninstallation Assert.False(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); // Check that the imports are removed Assert.Equal(0, msBuildNuGetProjectSystem.Imports.Count); // Clean-up TestFilesystemUtility.DeleteRandomTestFolders(randomTestPackageSourcePath, randomPackagesFolderPath, randomPackagesConfigFolderPath); }
public async Task TestMSBuildNuGetProjectUninstallPPFiles() { // Arrange var packageIdentity = new PackageIdentity("packageA", new NuGetVersion("1.0.0")); var randomTestPackageSourcePath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomProjectFolderPath = TestFilesystemUtility.CreateRandomTestFolder(); var randomPackagesConfigPath = Path.Combine(randomProjectFolderPath, "packages.config"); var token = CancellationToken.None; var projectTargetFramework = NuGetFramework.Parse("net45"); var testNuGetProjectContext = new TestNuGetProjectContext(); var msBuildNuGetProjectSystem = new TestMSBuildNuGetProjectSystem(projectTargetFramework, testNuGetProjectContext, randomProjectFolderPath); var msBuildNuGetProject = new MSBuildNuGetProject(msBuildNuGetProjectSystem, randomPackagesFolderPath, randomPackagesConfigPath); // Pre-Assert // Check that the packages.config file does not exist Assert.False(File.Exists(randomPackagesConfigPath)); // Check that there are no packages returned by PackagesConfigProject var packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); Assert.Equal(0, msBuildNuGetProjectSystem.References.Count); var packageFileInfo = TestPackages.GetPackageWithPPFiles(randomTestPackageSourcePath, packageIdentity.Id, packageIdentity.Version.ToNormalizedString()); using (var packageStream = packageFileInfo.OpenRead()) { // Act await msBuildNuGetProject.InstallPackageAsync(packageIdentity, packageStream, testNuGetProjectContext, token); } // Assert // Check that the packages.config file exists after the installation Assert.True(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(1, packagesInPackagesConfig.Count); Assert.Equal(packageIdentity, packagesInPackagesConfig[0].PackageIdentity); Assert.Equal(projectTargetFramework, packagesInPackagesConfig[0].TargetFramework); // Check that the reference has been added to MSBuildNuGetProjectSystem Assert.Equal(3, msBuildNuGetProjectSystem.Files.Count); var filesList = msBuildNuGetProjectSystem.Files.ToList(); Assert.Equal("Foo.cs", filesList[0]); Assert.Equal("Bar.cs", filesList[1]); Assert.Equal("packages.config", filesList[2]); var processedFilesList = msBuildNuGetProjectSystem.ProcessedFiles.ToList(); Assert.Equal(2, processedFilesList.Count); Assert.Equal("Foo.cs", processedFilesList[0]); Assert.Equal("Bar.cs", processedFilesList[1]); // Main Act await msBuildNuGetProject.UninstallPackageAsync(packageIdentity, testNuGetProjectContext, token); // Check that the packages.config file does not exist after the uninstallation Assert.False(File.Exists(randomPackagesConfigPath)); // Check the number of packages and packages returned by PackagesConfigProject after the installation packagesInPackagesConfig = (await msBuildNuGetProject.PackagesConfigNuGetProject.GetInstalledPackagesAsync(token)).ToList(); Assert.Equal(0, packagesInPackagesConfig.Count); // Check that the files have been removed from MSBuildNuGetProjectSystem Assert.Equal(0, msBuildNuGetProjectSystem.Files.Count); Assert.False(Directory.Exists(Path.Combine(randomProjectFolderPath, "Content"))); // Clean-up TestFilesystemUtility.DeleteRandomTestFolders(randomTestPackageSourcePath, randomPackagesFolderPath, randomProjectFolderPath); }