public void CallAddPackageWillAddNupkgFileButNoNuspecFile(string id, string version, string nuspecPath, string nupkgPath) { // 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(id, version)); // Assert Assert.False(fileSystem.FileExists(nuspecPath)); Assert.True(fileSystem.FileExists(nupkgPath)); }
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 InstallCommandInstallsPackageIfArgumentIsNotPackageReferenceFile() { // Arrange var fileSystem = new MockFileSystem(); var installCommand = new TestInstallCommand(GetFactory(), GetSourceProvider(), fileSystem); installCommand.Arguments.Add("Foo"); // Act installCommand.ExecuteCommand(); // Assert Assert.True(fileSystem.FileExists(@"Foo.1.0\Foo.1.0.nupkg")); }
public void CallRemovePackageWillRemoveNuspecFile(string id, string version, string unexpectedPath) { // Arrange var fileSystem = new MockFileSystem("x:\root"); fileSystem.AddFile(unexpectedPath); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); // Act repository.RemovePackage(PackageUtility.CreatePackage(id, version)); // Assert Assert.False(fileSystem.FileExists(unexpectedPath)); }
public void CallAddPackageWillAddNuspecWithReferencesPreserved() { // Arrange var fileSystem = new MockFileSystem("x:\\root"); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); // Act var package = PackageUtility.CreatePackage("A", "1.0", content: new[] { "A.txt", "scripts\\b.txt" }); var mockedPackage = Mock.Get(package); mockedPackage.Setup(m => m.PackageAssemblyReferences).Returns( new PackageReferenceSet[] { new PackageReferenceSet(new FrameworkName(".NETFramework, Version=4.0"), new [] { "A.dll" }), new PackageReferenceSet(null, new [] { "B.dll" }), }); // Act repository.AddPackage(package); // Assert Assert.False(fileSystem.FileExists("A.1.0\\A.1.0.nuspec")); Assert.True(fileSystem.FileExists("A.1.0\\A.1.0.nupkg")); }
public void CallAddPackageWillNotCreatePackageConfigEntryToPackageConfig() { // Arrange var fileSystem = new Mock<MockFileSystem>() { CallBase = true }; fileSystem.Setup(m => m.Root).Returns(@"c:\foo\"); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem.Object), fileSystem.Object, configFileSystem); // Act repository.AddPackage(PackageUtility.CreatePackage("A", "2.0")); // Assert Assert.False(configFileSystem.FileExists("packages.config")); }
public void DeleteFileAndEmptyParentDirectoriesCorrectly() { // Arrange var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("foo\\bar\\hell\\x.txt"); // Act fileSystem.DeleteFileAndParentDirectoriesIfEmpty("foo\\bar\\hell\\x.txt"); // Assert Assert.False(fileSystem.FileExists("foo\\bar\\hell\\x.txt")); Assert.False(fileSystem.DirectoryExists("foo")); Assert.False(fileSystem.DirectoryExists("foo\\bar")); Assert.False(fileSystem.DirectoryExists("foo\\bar\\hell")); }
public void MarkPackageDirectoryForDeletionDoesNotAddDeletemeFileWhenDirectoryRemovalSuccessful() { // Arrange IPackage package = NuGet.Test.PackageUtility.CreatePackage("foo", "1.0.0"); var fileSystem = new MockFileSystem(); var pathResolver = new DefaultPackagePathResolver(fileSystem); string packageDirectoryPath = pathResolver.GetPackageDirectory(package); var deleteOnRestartManager = new DeleteOnRestartManager(() => fileSystem, () => pathResolver); // Act deleteOnRestartManager.MarkPackageDirectoryForDeletion(package, _ => package); // Assert Assert.False(fileSystem.DirectoryExists(packageDirectoryPath)); Assert.False(fileSystem.FileExists(packageDirectoryPath + _deletionMarkerSuffix)); }
public void AddedNuspecDoesNotAddReferencesSectionIfNotPresent() { // Arrange var fileSystem = new MockFileSystem("x:\\root"); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); // Act var package = PackageUtility.CreatePackage("A", "1.0", content: new[] { "A.txt", "scripts\\b.txt" }); repository.AddPackage(package); // 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(0, manifest.Metadata.ReferenceSets.Count); }
public void MarkPackageDirectoryForDeletionDoesNotAddDeletemeFileWhenFileModified() { // Arrange IPackage package = NuGet.Test.PackageUtility.CreatePackage(id: "foo", version: "1.0.0", content: new string[] {}, assemblyReferences: new string[] {}, tools: new[] { "modifiedFile.txt" }); var fileSystem = new MockFileSystem(); var pathResolver = new DefaultPackagePathResolver(fileSystem); string packageDirectoryPath = pathResolver.GetPackageDirectory(package); string modifiedFilePath = Path.Combine("tools", "modifiedFile.txt"); fileSystem.AddFile(Path.Combine(packageDirectoryPath, pathResolver.GetPackageFileName(package)), Stream.Null); fileSystem.AddFile(Path.Combine(packageDirectoryPath, modifiedFilePath), "Modified Content".AsStream()); var deleteOnRestartManager = new DeleteOnRestartManager(() => fileSystem, () => pathResolver); // Act deleteOnRestartManager.MarkPackageDirectoryForDeletion(package, _ => package); // Assert Assert.True(fileSystem.DirectoryExists(packageDirectoryPath)); Assert.True(fileSystem.FileExists(Path.Combine(packageDirectoryPath, modifiedFilePath))); Assert.False(fileSystem.FileExists(packageDirectoryPath + _deletionMarkerSuffix)); }
public void CallAddPackageWillNotAddEntryToPackageConfigWhenPackageConfigAlreadyExists() { // Arrange var fileSystem = new Mock<MockFileSystem>() { CallBase = true }; fileSystem.Setup(m => m.Root).Returns(@"c:\foo\"); var configFileSystem = new MockFileSystem(); configFileSystem.AddFile("packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""2.0"" /> </packages>"); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem.Object), fileSystem.Object, configFileSystem); // Act repository.AddPackage(PackageUtility.CreatePackage("B", "1.0")); // Assert Assert.True(configFileSystem.FileExists("packages.config")); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""2.0"" /> </packages>", configFileSystem.ReadAllText("packages.config")); }
public void AddPackageDoesNotAddEntryToPackagesConfigIfExists() { // Arrange var sharedRepository = new Mock<ISharedPackageRepository>(); var fileSystem = new MockFileSystem(); fileSystem.AddFile("packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""1.0"" /> </packages>"); var referenceRepository = new PackageReferenceRepository(fileSystem, sharedRepository.Object); var package = PackageUtility.CreatePackage("A"); // Act referenceRepository.AddPackage(package); // Assert Assert.IsTrue(fileSystem.FileExists("packages.config")); Assert.AreEqual(@"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""1.0"" /> </packages>", fileSystem.ReadAllText("packages.config")); }
public void AddPackageAddsEntryToPackagesConfig() { // Arrange var sharedRepository = new Mock<ISharedPackageRepository>(); string path = null; sharedRepository.Setup(m => m.RegisterRepository(It.IsAny<string>())) .Callback<string>(p => path = p); var fileSystem = new MockFileSystem(); var referenceRepository = new PackageReferenceRepository(fileSystem, sharedRepository.Object); var package = PackageUtility.CreatePackage("A"); // Act referenceRepository.AddPackage(package); // Assert Assert.Equal(@"C:\MockFileSystem\packages.config", path); Assert.True(fileSystem.FileExists("packages.config")); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""1.0"" /> </packages>", fileSystem.ReadAllText("packages.config")); }
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); }
public void CallAddPackageWillAddNuspecWithReferencesPreserved() { // Arrange var fileSystem = new MockFileSystem("x:\\root"); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); // Act var package = PackageUtility.CreatePackage("A", "1.0", content: new[] { "A.txt", "scripts\\b.txt" }); var mockedPackage = Mock.Get(package); mockedPackage.Setup(m => m.PackageAssemblyReferences).Returns( new PackageReferenceSet[] { new PackageReferenceSet(new FrameworkName(".NETFramework, Version=4.0"), new [] { "A.dll" }), new PackageReferenceSet(null, new [] { "B.dll" }), }); repository.AddPackage(package); // 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 CallRemovePackageWillDeletePackageConfigWhenThereIsNoMoreEntry() { // Arrange var fileSystem = new Mock<MockFileSystem>() { CallBase = true }; fileSystem.Setup(m => m.Root).Returns(@"x:\foo\"); var configFileSystem = new MockFileSystem(); configFileSystem.AddFile("packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""2.0"" /> </packages>"); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem.Object), fileSystem.Object, configFileSystem); // Act repository.RemovePackage(PackageUtility.CreatePackage("A", "2.0")); // Assert Assert.False(configFileSystem.FileExists("packages.config")); }
public void AddPackageDoesNotAddEntryToSolutionConfigFileForProjectLevelPackage() { // Arrange var fileSystem = new MockFileSystem(); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); var solutionPackage = PackageUtility.CreatePackage("SolutionLevel", content: new[] { "file.txt" }); // Act repository.AddPackage(solutionPackage); // Assert Assert.False(configFileSystem.FileExists("packages.config")); }
public void AddPackageDoesNotAddReferencesToMetadataPackagesToSolutionConfigFile() { // Arrange var fileSystem = new MockFileSystem(); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); var solutionPackage = PackageUtility.CreatePackage("MetadataPackage", dependencies: new [] { new PackageDependency("A") }, tools: new[] { "Install.ps1" }); // Act repository.AddPackage(solutionPackage); // Assert Assert.False(configFileSystem.FileExists("packages.config")); }
public void AddPackageAddReferencesToSolutionLevelPackagesToSolutionConfigFile() { // Arrange var fileSystem = new MockFileSystem(); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); var solutionPackage = PackageUtility.CreatePackage("SolutionLevel", tools: new[] { "Install.ps1" }); // Act repository.AddPackage(solutionPackage); // Assert Assert.True(configFileSystem.FileExists("packages.config")); }
public void InstallCommandUsesLocalCacheIfNoCacheIsFalse() { // Arrange var fileSystem = new MockFileSystem(); var localCache = new Mock<IPackageRepository>(MockBehavior.Strict); localCache.Setup(c => c.GetPackages()).Returns(new[] { PackageUtility.CreatePackage("Gamma") }.AsQueryable()).Verifiable(); var installCommand = new TestInstallCommand(GetFactory(), GetSourceProvider(), fileSystem, machineCacheRepository: localCache.Object) { NoCache = false, Version = "1.0" }; installCommand.Arguments.Add("Gamma"); installCommand.Source.Add("Some Source name"); installCommand.Source.Add("Some other Source"); // Act installCommand.ExecuteCommand(); // Assert Assert.True(fileSystem.FileExists(@"Gamma.1.0\Gamma.1.0.nupkg")); localCache.Verify(); }
public void RemovePackageRemovesEntryFromPackagesConfigDeletesFileAndUnregistersRepositoryIfLastEntry() { // Arrange var sharedRepository = new Mock<ISharedPackageRepository>(); string path = null; sharedRepository.Setup(m => m.UnregisterRepository(It.IsAny<string>())) .Callback<string>(p => path = p); var fileSystem = new MockFileSystem(); fileSystem.AddFile("packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""1.0"" /> </packages>"); var referenceRepository = new PackageReferenceRepository(fileSystem, sharedRepository.Object); var package = PackageUtility.CreatePackage("A"); // Act referenceRepository.RemovePackage(package); // Assert Assert.False(fileSystem.FileExists("packages.config")); Assert.NotNull(path); Assert.Equal(@"C:\MockFileSystem\packages.config", path); }
public void InstallCommandDoesNotUseLocalCacheIfNoCacheIsTrue() { // Arrange var fileSystem = new MockFileSystem(); var localCache = new Mock<IPackageRepository>(MockBehavior.Strict); var installCommand = new TestInstallCommand(GetFactory(), GetSourceProvider(), fileSystem, machineCacheRepository: localCache.Object) { NoCache = true }; installCommand.Arguments.Add("Baz"); installCommand.Source.Add("Some Source name"); installCommand.Source.Add("Some other Source"); // Act installCommand.ExecuteCommand(); // Assert Assert.True(fileSystem.FileExists(@"Baz.0.7\Baz.0.7.nupkg")); localCache.Verify(c => c.GetPackages(), Times.Never()); }
public void CallingGetFilesExpandFilesIntoSpecifiedFileSystem() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act var files = ozp.GetFiles().ToList(); // Assert Assert.Equal(2, files.Count); Assert.True(expandedFileSystem.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.FileExists("random\\lib\\40\\A.dll")); }
public void DoNotSkipExistingFilesWhileExpandingFiles() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); expandedFileSystem.AddFile("random\\content\\foo", "happy new year"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act ozp.GetFiles().ToList(); // Assert Assert.True(expandedFileSystem.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.FileExists("random\\lib\\40\\A.dll")); Assert.Equal("content\\foo", expandedFileSystem.ReadAllText("random\\content\\foo")); }
public void CallingGetFilesTwiceDoesNotExpandFilesIntoSpecifiedFileSystemAgain() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); ozp.GetFiles().ToList(); Assert.True(expandedFileSystem.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.FileExists("random\\lib\\40\\A.dll")); ozp.Reset(); // Act ozp.GetFiles().ToList(); // Assert Assert.False(ozp.HasCalledExpandedFolderPath); }
public void InstallCommandInstallsPrereleasePackageIfFlagIsSpecified() { // Arrange var fileSystem = new MockFileSystem(); var installCommand = new TestInstallCommand(GetFactory(), GetSourceProvider(), fileSystem) { Prerelease = true }; installCommand.Arguments.Add("Baz"); installCommand.Source.Add("Some Source name"); installCommand.Source.Add("Some other Source"); // Act installCommand.ExecuteCommand(); // Assert Assert.True(fileSystem.FileExists(@"Baz.0.8.1-alpha\Baz.0.8.1-alpha.nupkg")); }
public void UnregisterRepositoryUseTheStoreFileSystem() { // Arrange var fileSystem = new MockFileSystem("x:\\"); var storeFileSystem = new MockFileSystem("y:\\"); storeFileSystem.AddFile("repositories.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""project1\path"" /> <repository path=""..\one\two"" /> </repositories>"); var configFileSystem = new MockFileSystem("z:\\"); var resolver = new DefaultPackagePathResolver(fileSystem); var repository = new SharedPackageRepository(resolver, fileSystem, storeFileSystem, configFileSystem); // Act repository.UnregisterRepository("x:\\project1\\path"); // Assert Assert.True(storeFileSystem.FileExists("repositories.config")); string content = storeFileSystem.ReadAllText("repositories.config"); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""..\one\two"" /> </repositories>", content); }
public void CallRemovePackageWillRemoveTheWholePackageDirectory() { // Arrange var fileSystem = new MockFileSystem("x:\\root"); fileSystem.AddFile("A.2.0\\A.2.0.nupkg"); fileSystem.AddFile("A.2.0\\A.2.0.nuspec"); fileSystem.AddFile("A.2.0\\random"); fileSystem.AddFile("A.2.0\\content\\file.txt"); fileSystem.AddFile("A.2.0\\readme.txt"); var configFileSystem = new MockFileSystem(); var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem); // Act repository.RemovePackage(PackageUtility.CreatePackage("A", "2.0")); // Assert Assert.False(fileSystem.FileExists("A.2.0\\A.2.0.nupkg")); Assert.False(fileSystem.FileExists("A.2.0\\A.2.0.nuspec")); Assert.False(fileSystem.DirectoryExists("A.2.0")); }
public void UnregisterRepositoryUseTheStoreFileSystemAndDeleteRepositoryConfig() { // Arrange var fileSystem = new MockFileSystem("x:\\"); var storeFileSystem = new MockFileSystem("y:\\"); storeFileSystem.AddFile("repositories.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <repositories> <repository path=""project1\path"" /> </repositories>"); var configFileSystem = new MockFileSystem("z:\\"); var resolver = new DefaultPackagePathResolver(fileSystem); var repository = new SharedPackageRepository(resolver, fileSystem, storeFileSystem, configFileSystem); // Act repository.UnregisterRepository("x:\\project1\\path"); // Assert Assert.False(storeFileSystem.FileExists("repositories.config")); }
public void RemovingAndAddingPackageReferenceWithSameIdPreservesConstraint() { // Arrange var sharedRepository = new Mock<ISharedPackageRepository>(); var fileSystem = new MockFileSystem(); fileSystem.AddFile("packages.config", @"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""1.0"" allowedVersions=""[1.0, 5.0)"" /> </packages>"); var referenceRepository = new PackageReferenceRepository(fileSystem, sharedRepository.Object); var A10 = PackageUtility.CreatePackage("A"); var A20 = PackageUtility.CreatePackage("A", "2.0"); // Act referenceRepository.RemovePackage(A10); referenceRepository.AddPackage(A20); // Assert Assert.True(fileSystem.FileExists("packages.config")); Assert.Equal(@"<?xml version=""1.0"" encoding=""utf-8""?> <packages> <package id=""A"" version=""2.0"" allowedVersions=""[1.0, 5.0)"" /> </packages>", fileSystem.ReadAllText("packages.config")); }