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); }
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); }
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()); }