コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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"));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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"));
        }
コード例 #6
0
        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"));
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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"));
        }
コード例 #10
0
        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"));
        }
コード例 #11
0
        public void AddPackageAddSolutionLevelPackageDependingOnProjectLevelPackage()
        {
            // Arrange
            var fileSystem = new MockFileSystem();
            var configFileSystem = new MockFileSystem();
            var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem);
            var solutionPackage = PackageUtility.CreatePackage("SolutionLevel2", tools: new[] { "Install.ps1" }, dependencies: new[] { new PackageDependency("ProjectLevel1") });

            // Act
            repository.AddPackage(solutionPackage);

            // Assert
            var packageReferences = repository.PackageReferenceFile.GetPackageReferences().ToArray();
            Assert.True(packageReferences.IsEmpty());
        }
コード例 #12
0
        public void AddPackageAddSolutionLevelPackageDependingOnAnotherSolutionLevelPackage()
        {
            // Arrange
            var fileSystem = new MockFileSystem();
            var configFileSystem = new MockFileSystem();
            var repository = new SharedPackageRepository(new DefaultPackagePathResolver(fileSystem), fileSystem, configFileSystem);
            var solutionPackage1 = PackageUtility.CreatePackage("SolutionLevel1", tools: new[] { "Install.ps1" });
            var solutionPackage2 = PackageUtility.CreatePackage("SolutionLevel2", tools: new[] { "Install.ps1" }, dependencies: new[] { new PackageDependency("SolutionLevel1")});            
            // Act
            repository.AddPackage(solutionPackage1);
            repository.AddPackage(solutionPackage2);

            // Assert
            var packageReferences = repository.PackageReferenceFile.GetPackageReferences()
                .Select(p => p.Id).OrderBy(id => id).ToArray();
            Assert.Equal(new [] { "SolutionLevel1", "SolutionLevel2" }, packageReferences);
        }
コード例 #13
0
        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"));
        }