private void InnerExecute()
    {
        var path = DestinationFolder.FullPath();

        Directory.CreateDirectory(path);

        var propertyProvider = new PropertyProvider()
        {
            { "version", GitVersionInformation.NuGetVersionV2 }
        };

        var packageBuilder = new PackageBuilder();

        using (var spec = File.OpenRead(NuSpecFile.FullPath()))
        {
            var manifest = Manifest.ReadFrom(spec, propertyProvider, false);
            packageBuilder.Populate(manifest.Metadata);
        }

        packageBuilder.PopulateFiles("", new[] { new ManifestFile {
                                                     Source = ReferenceLibrary.FullPath(), Target = "lib"
                                                 } });

        var debug = Path.ChangeExtension(ReferenceLibrary.FullPath(), ".pdb");

        if (File.Exists(debug))
        {
            packageBuilder.PopulateFiles("", new[] { new ManifestFile {
                                                         Source = debug, Target = "lib"
                                                     } });
        }

        if (File.Exists(PackagesConfig.FullPath()))
        {
            var dependencies = new List <PackageDependency>();

            var doc = XDocument.Load(PackagesConfig.FullPath());

            var packages = doc.Descendants()
                           .Where(x => x.Name == "package" && x.Attribute("developmentDependency")?.Value != "true")
                           .Select(p => new { id = p.Attribute("id").Value, version = SemanticVersion.Parse(p.Attribute("version").Value) })
                           .Select(p => new PackageDependency(p.id, new VersionSpec()
            {
                IsMinInclusive = true, MinVersion = p.version
            }));

            dependencies.AddRange(packages);

            packageBuilder.DependencySets.Add(new PackageDependencySet(null, dependencies));
        }

        var packagePath = Path.Combine(path, packageBuilder.GetFullName() + ".nupkg");

        using (var file = new FileStream(packagePath, FileMode.Create))
        {
            Log.LogMessage($"Saving file {packagePath}");

            packageBuilder.Save(file);
        }
    }
        public void Each_missing_dependency_is_shown_then_they_do_not_match()
        {
            // Arrange
            var nuspecFile = new NuSpecFile
            {
                PackageDependencies = new[]
                {
                    new NuGetPackageDependency {
                        Id = "P1", Version = "v1"
                    },
                }
            };
            var projects = new[]
            {
                new Project
                {
                    PackageDependencies = new[]
                    {
                        new NuGetPackageDependency {
                            Id = "P1", Version = "v1"
                        },
                        new NuGetPackageDependency {
                            Id = "P2", Version = "v1"
                        },
                        new NuGetPackageDependency {
                            Id = "P3", Version = "v1.2"
                        }
                    }
                }
            };

            var request = new NuSpecValidationRequest {
                NuSpecFile = nuspecFile, Projects = projects
            };

            var validator = new NuSpecContainsAllProjectDependenciesValidator();

            // Act
            var results = validator.Validate(request).ToList();

            // Assert
            Assert.That(results.Count, Is.EqualTo(2));
            Assert.That(results.First().Message, Is.StringContaining("P2"));
            Assert.That(results.Last().Message, Is.StringContaining("P3"));
        }
        public void Nothing_is_found_when_dependencies_match_with_locked_versions()
        {
            // Arrange
            var nuspecFile = new NuSpecFile
            {
                PackageDependencies = new[]
                {
                    new NuGetPackageDependency {
                        Id = "P1", Version = "[v1]"
                    },
                    new NuGetPackageDependency {
                        Id = "P2", Version = "v1"
                    }
                }
            };
            var projects = new[]
            {
                new Project
                {
                    PackageDependencies = new[]
                    {
                        new NuGetPackageDependency {
                            Id = "P1", Version = "v1"
                        },
                        new NuGetPackageDependency {
                            Id = "P2", Version = "v1"
                        }
                    }
                }
            };

            var request = new NuSpecValidationRequest {
                NuSpecFile = nuspecFile, Projects = projects
            };

            var validator = new NuSpecContainsAllProjectDependenciesValidator();

            // Act
            var results = validator.Validate(request).ToList();

            // Assert
            Assert.That(results, Is.Empty);
        }
        public void Nothing_is_found_when_dependencies_match_and_there_is_a_project_dependency()
        {
            // Arrange
            var nuspecFile = new NuSpecFile
            {
                PackageDependencies = new[]
                {
                    new NuGetPackageDependency {
                        Id = "P1", Version = "v1"
                    },
                    new NuGetPackageDependency {
                        Id = "P2", Version = "v1"
                    }
                }
            };
            var projects = new[]
            {
                new Project
                {
                    PackageDependencies = new[]
                    {
                        new NuGetPackageDependency {
                            Id = "P1", Version = "v1"
                        },
                    }
                },
                new Project {
                    Name = "P2", PackageDependencies = new NuGetPackageDependency[0]
                }
            };

            var request = new NuSpecValidationRequest {
                NuSpecFile = nuspecFile, Projects = projects
            };

            var validator = new NuSpecContainsOnlyRequiredDependenciesValidator();

            // Act
            var results = validator.Validate(request).ToList();

            // Assert
            Assert.That(results, Is.Empty);
        }
Beispiel #5
0
        public void BeforeAll()
        {
            _solutionName = "MySolution.sln";
            _fullFilePath = @"C:\where I am\A Solution\MySolution.sln";
            _projectOne   = Builder <Project> .CreateNew().Build();

            _projectTwo = Builder <Project> .CreateNew().Build();

            _nuspec1 = Builder <NuSpecFile> .CreateNew().Build();

            _nuspec2 = Builder <NuSpecFile> .CreateNew().Build();

            var solutionFileContents = GetSolutionFileContents();

            var fileSystem = new Mock <IFileSystem>();

            fileSystem.Setup(fs => fs.FindFullFilePath(_solutionName)).Returns(_fullFilePath);
            fileSystem.Setup(fs => fs.ReadFile(_fullFilePath)).Returns(solutionFileContents);
            fileSystem.Setup(fs => fs.GetDirectory(_fullFilePath)).Returns("");

            var projectBuilder = new Mock <IBuilder <Project, BuildProjectRequest> >();

            projectBuilder.Setup(b => b.Build(It.Is <BuildProjectRequest>(projectRequest => projectRequest.ProjectFilePath == "Project1\\Project1.csproj"))).Returns(_projectOne);
            projectBuilder.Setup(b => b.Build(It.Is <BuildProjectRequest>(projectRequest => projectRequest.ProjectFilePath == "Project2\\Project2.csproj"))).Returns(_projectTwo);

            var nuspecBuilder = new Mock <IBuilder <NuSpecFile, string> >();

            nuspecBuilder.Setup(b => b.Build("spec1")).Returns(_nuspec1);
            nuspecBuilder.Setup(b => b.Build("spec2")).Returns(_nuspec2);

            var builder = new SolutionBuilder(fileSystem.Object, projectBuilder.Object, nuspecBuilder.Object);

            var request = new BuildSolutionRequest()
                          .WithSolutionName(_solutionName)
                          .WithNuSpec("spec1")
                          .WithNuSpec("spec2");

            _solution = builder.Build(request);
        }
Beispiel #6
0
 public void UpdateDependencies(NuSpecFile nuspec)
 {
     nuspec.Metadata.DependencySets[0].Dependencies.Where(d => d.Version.Contains("replace"))
     .ForEach(d =>
              d.Version = _project.ReleasePathForAssembly(d.Id + ".dll").GetAssemblyVersion().ToString());
 }