public void PackageAddAndRemovalOperationsAreDeferredToUnderlyingExpandedPackageRepository() { // Arrange var fileSystem = new MockFileSystem(); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.1.0.0.nupkg")); fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.nuspec")); var package = GetPackage(); var repository = new LazyLocalPackageRepository(fileSystem); // Act - 1 repository.AddPackage(package); // Assert - 1 var reader = Manifest.ReadFrom(fileSystem.OpenFile(@"MyPackage\1.0.0-beta2\MyPackage.nuspec"), validateSchema: true); Assert.Equal("MyPackage", reader.Metadata.Id); Assert.Equal("1.0.0-beta2", reader.Metadata.Version); Assert.True(package.GetStream().ContentEquals( fileSystem.OpenFile(Path.Combine("MyPackage", "1.0.0-beta2", "MyPackage.1.0.0-beta2.nupkg")))); // Act - 2 repository.RemovePackage(package); // Assert - 2 var deleted = Assert.Single(fileSystem.Deleted); Assert.Equal(Path.Combine("MyPackage", "1.0.0-beta2"), deleted); }
public void CallAddPackageWillAddNuspecWhichHasReferencesData() { // Arrange var fileSystem = new MockFileSystem("x:\\root"); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); // Act repository.AddPackage(PackageUtility.CreatePackage("A", "1.0", assemblyReferences: new[] { "lib\\net40\\A.dll", "lib\\B.dll" })); // Assert Assert.True(fileSystem.FileExists("A.1.0\\A.1.0.nuspec")); Stream manifestContentStream = fileSystem.OpenFile("A.1.0\\A.1.0.nuspec"); Manifest manifest = Manifest.ReadFrom(manifestContentStream, validateSchema: true); Assert.Equal(2, manifest.Metadata.ReferenceSets.Count); var set1 = manifest.Metadata.ReferenceSets[0]; Assert.Equal(".NETFramework4.0", set1.TargetFramework); Assert.Equal(1, set1.References.Count); Assert.Equal("A.dll", set1.References[0].File); var set2 = manifest.Metadata.ReferenceSets[1]; Assert.Null(set2.TargetFramework); Assert.Equal(1, set2.References.Count); Assert.Equal("B.dll", set2.References[0].File); }
public void AddingBindingRedirectToEmptyConfig() { // Arrange var mockFileSystem = new MockFileSystem(); mockFileSystem.AddFile("config", @"<configuration></configuration>"); var bindingRedirectManager = new BindingRedirectManager(mockFileSystem, "config"); AssemblyBinding assemblyBinding = GetAssemblyBinding("AssemblyName", "token", "3.0.0.0"); // Act bindingRedirectManager.AddBindingRedirects(new[] { assemblyBinding }); // Assert string outputContent = mockFileSystem.OpenFile("config").ReadToEnd(); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""AssemblyName"" publicKeyToken=""token"" culture=""neutral"" /> <bindingRedirect oldVersion=""0.0.0.0-3.0.0.0"" newVersion=""3.0.0.0"" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>", outputContent); }
public void AddPackage_AddsExpandedPackageToThePackageDirectory() { // Arrange var fileSystem = new MockFileSystem(); var repository = new ExpandedPackageRepository(fileSystem); var package = GetPackage(); // Act repository.AddPackage(package); // Assert var reader = Manifest.ReadFrom(fileSystem.OpenFile(@"MyPackage\1.0.0-beta2\MyPackage.nuspec"), validateSchema: true); Assert.Equal("MyPackage", reader.Metadata.Id); Assert.Equal("1.0.0-beta2", reader.Metadata.Version); Assert.True(package.GetStream().ContentEquals(fileSystem.OpenFile(@"MyPackage\1.0.0-beta2\MyPackage.1.0.0-beta2.nupkg"))); Assert.Equal(package.GetHash(new CryptoHashProvider()), fileSystem.ReadAllText(@"MyPackage\1.0.0-beta2\MyPackage.1.0.0-beta2.nupkg.sha512")); }
public void AddingBindingRedirectWithMultipleAssemblyBindingSectionsAddsToFirstOne() { // Arrange var mockFileSystem = new MockFileSystem(); mockFileSystem.AddFile("config", @" <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""System.Web.Mvc"" publicKeyToken=""31bf3856ad364e35"" /> <bindingRedirect oldVersion=""1.0.0.0"" newVersion=""2.0.0.0"" /> </dependentAssembly> </assemblyBinding> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""A.Library"" publicKeyToken=""a34a755ec277222f"" /> <bindingRedirect oldVersion=""1.0.0.0-2.0.0.0"" newVersion=""2.0.0.0"" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>"); var bindingRedirectManager = new BindingRedirectManager(mockFileSystem, "config"); AssemblyBinding assemblyBinding = GetAssemblyBinding("AssemblyName", "token", "3.0.0.0"); // Act bindingRedirectManager.AddBindingRedirects(new[] { assemblyBinding }); // Assert string outputContent = mockFileSystem.OpenFile("config").ReadToEnd(); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""System.Web.Mvc"" publicKeyToken=""31bf3856ad364e35"" /> <bindingRedirect oldVersion=""1.0.0.0"" newVersion=""2.0.0.0"" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name=""AssemblyName"" publicKeyToken=""token"" culture=""neutral"" /> <bindingRedirect oldVersion=""0.0.0.0-3.0.0.0"" newVersion=""3.0.0.0"" /> </dependentAssembly> </assemblyBinding> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""A.Library"" publicKeyToken=""a34a755ec277222f"" /> <bindingRedirect oldVersion=""1.0.0.0-2.0.0.0"" newVersion=""2.0.0.0"" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>", outputContent); }
public void PackageAddAndRemovalOperationsAreDeferredToUnderlyingLocalPackageRepository() { // Arrange var fileSystem = new MockFileSystem(); var package = GetPackage(); var repository = new LazyLocalPackageRepository(fileSystem); var expectedPackagePath = Path.Combine("MyPackage.1.0.0-beta2", "MyPackage.1.0.0-beta2.nupkg"); // Act - 1 repository.AddPackage(package); // Assert - 1 Assert.True(package.GetStream().ContentEquals(fileSystem.OpenFile(expectedPackagePath))); // Act - 2 repository.RemovePackage(package); // Assert - 2 Assert.Contains(expectedPackagePath, fileSystem.Deleted); Assert.Contains("MyPackage.1.0.0-beta2", fileSystem.Deleted); }
public void AddBindingRedirectUpdatesElementsPreservingCommentsAndWhitespace() { // Arrange var mockFileSystem = new MockFileSystem(); mockFileSystem.AddFile("config", @"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly><assemblyIdentity name=""AssemblyName"" publicKeyToken=""token"" culture=""neutral"" /> <!-- This is a comment that should not be removed --> <bindingRedirect oldVersion=""2.0.0.0"" newVersion=""3.0.0.0"" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>"); var bindingRedirectManager = new BindingRedirectManager(mockFileSystem, "config"); AssemblyBinding assemblyBinding = GetAssemblyBinding("AssemblyName", "token", "4.0.0.0"); // Act bindingRedirectManager.AddBindingRedirects(new[] { assemblyBinding }); // Assert string outputContent = mockFileSystem.OpenFile("config").ReadToEnd(); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly><assemblyIdentity name=""AssemblyName"" publicKeyToken=""token"" culture=""neutral"" /> <!-- This is a comment that should not be removed --> <bindingRedirect oldVersion=""0.0.0.0-4.0.0.0"" newVersion=""4.0.0.0"" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>", outputContent); }
public void CallAddPackageWillAddNuspecWhichHasReferencesData() { // Arrange var fileSystem = new MockFileSystem("x:\root"); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); // Act repository.AddPackage(PackageUtility.CreatePackage("A", "1.0", assemblyReferences: new [] { "net40\\A.dll", "sl45\\B.dll", "A.dll", "win8\\C.dll" })); // Assert Assert.True(fileSystem.FileExists("A.1.0\\A.1.0.nuspec")); Stream manifestContentStream = fileSystem.OpenFile("A.1.0\\A.1.0.nuspec"); Manifest manifest = Manifest.ReadFrom(manifestContentStream); Assert.Equal(3, manifest.Metadata.References.Count); Assert.Equal("A.dll", manifest.Metadata.References[0].File); Assert.Equal("B.dll", manifest.Metadata.References[1].File); Assert.Equal("C.dll", manifest.Metadata.References[2].File); }