public void CanAddDependenciesToMultipleGroups() { PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out PackageIdentity package) .Dependency("PackageB", "1.0.0", "net45") .Dependency("PackageB", "1.0.0", "net46") .Dependency("PackageB", "1.0.0", "netstandard2.0"); ValidatePackageDependencies( package, new List <PackageDependencyGroup> { new PackageDependencyGroup( FrameworkConstants.CommonFrameworks.Net45, new List <PackageDependency> { new PackageDependency("PackageB", VersionRange.Parse("1.0.0")), }), new PackageDependencyGroup( FrameworkConstants.CommonFrameworks.Net46, new List <PackageDependency> { new PackageDependency("PackageB", VersionRange.Parse("1.0.0")), }), new PackageDependencyGroup( FrameworkConstants.CommonFrameworks.NetStandard20, new List <PackageDependency> { new PackageDependency("PackageB", VersionRange.Parse("1.0.0")), }), }); }
public void CanAddDependenciesToMultipleGroups() { using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out Package package) .Dependency("PackageB", "1.0.0", "net45") .Dependency("PackageB", "1.0.0", "net46") .Dependency("PackageB", "1.0.0", "netstandard2.0")) { ValidatePackageDependencies( packageRepository, package, new List <(string TargetFramework, IEnumerable <PackageDependency> Dependencies)> { ( "net45", new List <PackageDependency> { new PackageDependency("PackageB", "1.0.0", "Build, Analyzers"), }), ( "net46", new List <PackageDependency> { new PackageDependency("PackageB", "1.0.0", "Build, Analyzers"), }), ( "netstandard2.0", new List <PackageDependency> { new PackageDependency("PackageB", "1.0.0", "Build, Analyzers"), }), });
public void CanUseNuGetSdkResolver() { using (ProjectCollection projectCollection = new ProjectCollection()) { BuildOutput buildOutput = BuildOutput.Create(); projectCollection.RegisterLogger(buildOutput); using (PackageRepository.Create(TestRootPath) .Package("Foo.Bar", "1.2.3", out Package package) .FileText(Path.Combine("Sdk", "Sdk.props"), "<Project />") .FileText(Path.Combine("Sdk", "Sdk.targets"), "<Project />")) { ProjectCreator projectCreator = ProjectCreator .Create( sdk: $"{package.Id}/{package.Version}", projectCollection: projectCollection) .Save(GetTempFileName(".csproj")); try { Project unused = projectCreator.Project; } catch (Exception e) { throw new Exception(buildOutput.GetConsoleLog(), e); } } } }
private static void Main(string[] args) { var packagesRepository = new PackageRepository(); Parser.Default .ParseArguments <Options>(args) .WithParsed(o => { foreach (var package in FilesScanner.GetAllPackages(new [] { o.RepositoryPath }, false)) { packagesRepository.AddPackage(package); } var localPackages = FilesScanner.GetAllPackages(new [] { o.Path }, true); var structureValidator = new StructureValidator(); var validationErrors = structureValidator.ValidateStructure(localPackages); foreach (var validationError in structureValidator.ValidateStructure(localPackages)) { Console.WriteLine(validationError); } if (validationErrors.Any()) { return; } HandleVersionSynchronization(localPackages); HandleCycles(FilesScanner.GetAllPackages(new [] { o.Path }, true), packagesRepository, o.Target); localPackages = FilesScanner.GetAllPackages(new [] { o.Path }, true); var resolvedPackages = ResolvePackages(PackageRepository.Create(localPackages), packagesRepository, o.Target); Run(resolvedPackages); }); }
public void BasicLibrary() { PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out PackageIdentity packageA) .Library(FrameworkConstants.CommonFrameworks.Net45); VerifyAssembly(packageA, FrameworkConstants.CommonFrameworks.Net45); }
public void BasicLibrary() { using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out Package packageA) .Library("net45")) { VerifyAssembly(packageRepository, packageA, "net45"); } }
public void LibraryWithVersion() { const string assemblyVersion = "2.3.4.5"; PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out PackageIdentity packageA) .Library(FrameworkConstants.CommonFrameworks.Net45, assemblyVersion: assemblyVersion); VerifyAssembly(packageA, FrameworkConstants.CommonFrameworks.Net45, version: "2.3.4.5"); }
public void MultipleLibrariesMultipleTargetFrameworks() { PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out PackageIdentity packageA) .Library(FrameworkConstants.CommonFrameworks.Net45) .Library(FrameworkConstants.CommonFrameworks.NetStandard20); VerifyAssembly(packageA, FrameworkConstants.CommonFrameworks.Net45); VerifyAssembly(packageA, FrameworkConstants.CommonFrameworks.NetStandard20); }
public void MultipleLibrariesSameTargetFramework() { PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out PackageIdentity packageA) .Library(FrameworkConstants.CommonFrameworks.Net45, filename: null) .Library(FrameworkConstants.CommonFrameworks.Net45, filename: "CustomAssembly.dll"); VerifyAssembly(packageA, FrameworkConstants.CommonFrameworks.Net45); VerifyAssembly(packageA, FrameworkConstants.CommonFrameworks.Net45, assemblyFileName: "CustomAssembly.dll"); }
public void MultipleLibrariesSameTargetFramework() { using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out Package packageA) .Library("net45", filename: null) .Library("net45", filename: "CustomAssembly.dll")) { VerifyAssembly(packageRepository, packageA, "net45"); VerifyAssembly(packageRepository, packageA, "net45", assemblyFileName: "CustomAssembly.dll"); } }
public void MultipleLibrariesMultipleTargetFrameworks() { using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out Package packageA) .Library("net45") .Library("netstandard2.0")) { VerifyAssembly(packageRepository, packageA, "net45"); VerifyAssembly(packageRepository, packageA, "netstandard2.0"); } }
public void LibraryWithVersion() { const string assemblyVersion = "2.3.4.5"; using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out Package packageA) .Library("net45", assemblyVersion: assemblyVersion)) { VerifyAssembly(packageRepository, packageA, "net45", version: "2.3.4.5"); } }
public void TextFileTest() { string relativePath = Path.Combine("test", "foo.txt"); const string contents = "FF6B25B727E04D9980DE3B5D7AE0FB6E"; using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out Package packageA) .FileText(relativePath, contents)) { VerifyFileContents(packageRepository, packageA, relativePath, contents); } }
public void BuildLogicRequiresPackage() { InvalidOperationException exception; exception = Should.Throw <InvalidOperationException>(() => { PackageRepository.Create(TestRootPath) .BuildMultiTargetingProps(); }); exception.Message.ShouldBe(Strings.ErrorWhenAddingBuildLogicRequiresPackage); exception = Should.Throw <InvalidOperationException>(() => { PackageRepository.Create(TestRootPath) .BuildMultiTargetingTargets(); }); exception.Message.ShouldBe(Strings.ErrorWhenAddingBuildLogicRequiresPackage); exception = Should.Throw <InvalidOperationException>(() => { PackageRepository.Create(TestRootPath) .BuildTransitiveProps(); }); exception.Message.ShouldBe(Strings.ErrorWhenAddingBuildLogicRequiresPackage); exception = Should.Throw <InvalidOperationException>(() => { PackageRepository.Create(TestRootPath) .BuildTransitiveTargets(); }); exception.Message.ShouldBe(Strings.ErrorWhenAddingBuildLogicRequiresPackage); exception = Should.Throw <InvalidOperationException>(() => { PackageRepository.Create(TestRootPath) .BuildProps(); }); exception.Message.ShouldBe(Strings.ErrorWhenAddingBuildLogicRequiresPackage); exception = Should.Throw <InvalidOperationException>(() => { PackageRepository.Create(TestRootPath) .BuildTargets(); }); exception.Message.ShouldBe(Strings.ErrorWhenAddingBuildLogicRequiresPackage); }
public void BuildTransitiveTest() { PackageRepository.Create(TestRootPath) .Package("PackageA", "2.0.0") .BuildTransitiveProps(out ProjectCreator buildTransitivePropsProject) .BuildTransitiveTargets(out ProjectCreator buildTransitiveTargetsProject); buildTransitivePropsProject.FullPath.ShouldBe(Path.Combine(TestRootPath, ".nuget", "packages", "packagea", "2.0.0", "buildTransitive", "PackageA.props")); buildTransitiveTargetsProject.FullPath.ShouldBe(Path.Combine(TestRootPath, ".nuget", "packages", "packagea", "2.0.0", "buildTransitive", "PackageA.targets")); File.Exists(buildTransitivePropsProject.FullPath).ShouldBeTrue(); File.Exists(buildTransitiveTargetsProject.FullPath).ShouldBeTrue(); }
public void BuildTransitiveTest() { PackageRepository.Create(TestRootPath) .Package("PackageA", "2.0") .BuildTransitiveProps(out ProjectCreator buildTransitivePropsProject) .BuildTransitiveTargets(out ProjectCreator buildTransitiveTargetsProject); buildTransitivePropsProject.FullPath.ShouldBe($@"{TestRootPath}\.nuget\packages\packagea\2.0.0\buildTransitive\PackageA.props"); buildTransitiveTargetsProject.FullPath.ShouldBe($@"{TestRootPath}\.nuget\packages\packagea\2.0.0\buildTransitive\PackageA.targets"); File.Exists(buildTransitivePropsProject.FullPath).ShouldBeTrue(); File.Exists(buildTransitiveTargetsProject.FullPath).ShouldBeTrue(); }
public void CustomFileTest() { string relativePath = Path.Combine("test", "foo.txt"); const string contents = "798D159A4ADE45B9896EDE89FBA39C60"; FileInfo sourceFileInfo = new FileInfo(Path.Combine(TestRootPath, "something")); File.WriteAllText(sourceFileInfo.FullName, contents); using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageA", "1.0.0", out Package packageA) .FileCustom(relativePath, sourceFileInfo)) { VerifyFileContents(packageRepository, packageA, relativePath, contents); } }
public void BuildCanConsumePackage() { using (PackageRepository.Create(TestRootPath) .Package("PackageB", "1.0", out Package packageB) .Library(TargetFramework) .Package("PackageA", "1.0.0", out Package packageA) .Dependency(packageB, TargetFramework) .Library(TargetFramework)) { ProjectCreator.Templates.SdkCsproj( path: Path.Combine(TestRootPath, "ClassLibraryA", "ClassLibraryA.csproj"), targetFramework: TargetFramework) .ItemPackageReference(packageA) .TryBuild(restore: true, out bool result, out BuildOutput buildOutput); result.ShouldBeTrue(buildOutput.GetConsoleLog()); } }
public void BuildCanConsumePackage() { Action t = () => { PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageB", "1.0", out PackageIdentity packageB) .Library("net45") .Package("PackageA", "1.0.0", out PackageIdentity packageA) .Dependency(packageB, "net45") .Library("net45"); ProjectCreator.Templates.SdkCsproj( targetFramework: "net45") .ItemPackageReference(packageA) .Save(Path.Combine(TestRootPath, "ClassLibraryA", "ClassLibraryA.csproj")) .TryBuild(restore: true, out bool result, out BuildOutput buildOutput); result.ShouldBeTrue(buildOutput.GetConsoleLog()); };
public void BasicPackage() { using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package("PackageD", "1.2.3-beta", out Package package) .Library("net45")) { package.ShouldNotBeNull(); package.Id.ShouldBe("PackageD"); package.Version.ShouldBe("1.2.3-beta"); FileInfo nuspecFileInfo = new FileInfo(packageRepository.GetManifestFilePath(package.Id, package.Version)).ShouldExist(); NuspecReader nuspec = new NuspecReader(nuspecFileInfo); nuspec.Authors.ShouldBe("UserA"); nuspec.Description.ShouldBe("Description"); nuspec.DevelopmentDependency.ShouldBeFalse(); nuspec.Id.ShouldBe("PackageD"); nuspec.RequireLicenseAcceptance.ShouldBeFalse(); } }
public long CreatePackage(User controller, DateTime date, Organization organization, IEnumerable <long> files, string comment) { Package package = new Package { Date = date, Controller = controller, Organization = organization, Comment = comment }; var unit_of_work = UnitOfWorkProvider.GetUnitOfWork(); unit_of_work.BeginTransaction(); PackageRepository.Create(package); unit_of_work.Commit(); UpdatePackageFiles(package.Id, files); return(package.Id); }
public void BasicPackage() { PackageRepository.Create(TestRootPath) .Package("PackageD", "1.2.3-beta", out PackageIdentity package); package.ShouldNotBeNull(); package.Id.ShouldBe("PackageD"); package.Version.ShouldBe(NuGetVersion.Parse("1.2.3-beta")); FileInfo manifestFilePath = new FileInfo(VersionFolderPathResolver.GetManifestFilePath(package.Id, package.Version)) .ShouldExist(); using (Stream stream = File.OpenRead(manifestFilePath.FullName)) { Manifest manifest = Manifest.ReadFrom(stream, validateSchema: true); manifest.Metadata.Authors.ShouldBe(new[] { "UserA" }); manifest.Metadata.Description.ShouldBe("Description"); manifest.Metadata.DevelopmentDependency.ShouldBeFalse(); manifest.Metadata.Id.ShouldBe("PackageD"); manifest.Metadata.RequireLicenseAcceptance.ShouldBeFalse(); } }
public void CanSetAllPackageProperties() { using (PackageRepository packageRepository = PackageRepository.Create(TestRootPath) .Package( id: "PackageD", version: "1.2.3", out Package package, authors: "UserA;UserB", description: "Custom description", copyright: "Copyright 2000", developmentDependency: true, icon: Path.Combine("some", "icon.jpg"), iconUrl: "https://icon.url", language: "Pig latin", licenseExpression: "MIT", licenseVersion: "1.0.0", owners: "Owner1;Owner2", packageTypes: new List <string> { "Dependency", "DotnetCliTool" }, projectUrl: "https://project.url", releaseNotes: "Release notes for PackageD", repositoryType: "Git", repositoryUrl: "https://repository.url", repositoryBranch: "Branch1000", repositoryCommit: "Commit14", requireLicenseAcceptance: true, serviceable: true, summary: "Summary of PackageD", tags: "Tag1 Tag2 Tag3", title: "Title of PackageD")) { package.ShouldNotBeNull(); package.Id.ShouldBe("PackageD"); package.Version.ShouldBe("1.2.3"); FileInfo nuspecFileInfo = new FileInfo(packageRepository.GetManifestFilePath(package.Id, package.Version)).ShouldExist(); NuspecReader nuspec = new NuspecReader(nuspecFileInfo); nuspec.Authors.ShouldBe("UserA;UserB"); nuspec.Copyright.ShouldBe("Copyright 2000"); nuspec.Description.ShouldBe("Custom description"); nuspec.DevelopmentDependency.ShouldBeTrue(); nuspec.Icon.ShouldBe(Path.Combine("some", "icon.jpg")); nuspec.IconUrl.ShouldBe("https://icon.url"); nuspec.Id.ShouldBe("PackageD"); nuspec.Language.ShouldBe("Pig latin"); nuspec.License.ShouldBe("MIT"); nuspec.LicenseType.ShouldBe("expression"); nuspec.LicenseVersion.ShouldBe("1.0.0"); nuspec.Owners.ShouldBe("Owner1;Owner2"); nuspec.PackageTypes.ShouldBe(new[] { "Dependency", "DotnetCliTool" }); nuspec.ProjectUrl.ShouldBe("https://project.url"); nuspec.ReleaseNotes.ShouldBe("Release notes for PackageD"); nuspec.RepositoryBranch.ShouldBe("Branch1000"); nuspec.RepositoryCommit.ShouldBe("Commit14"); nuspec.RepositoryType.ShouldBe("Git"); nuspec.RepositoryUrl.ShouldBe("https://repository.url"); nuspec.RequireLicenseAcceptance.ShouldBeTrue(); nuspec.Serviceable.ShouldBeTrue(); nuspec.Summary.ShouldBe("Summary of PackageD"); nuspec.Tags.ShouldBe("Tag1 Tag2 Tag3"); nuspec.Title.ShouldBe("Title of PackageD"); } }
public void CanSetAllPackageProperties() { PackageRepository.Create(TestRootPath) .Package( name: "PackageD", version: "1.2.3", package: out PackageIdentity package, authors: "UserA;UserB", description: "Custom description", copyright: "Copyright 2000", developmentDependency: true, #if !NET46 icon: @"some\icon.jpg", #endif iconUrl: "https://icon.url", language: "Pig latin", licenseMetadata: new LicenseMetadata(LicenseType.Expression, "MIT", null, null, Version.Parse("1.0.0")), owners: "Owner1;Owner2", packageTypes: new List <PackageType> { PackageType.Dependency, PackageType.DotnetCliTool }, projectUrl: "https://project.url", releaseNotes: "Release notes for PackageD", repositoryType: "Git", repositoryUrl: "https://repository.url", repositoryBranch: "Branch1000", repositoryCommit: "Commit14", requireLicenseAcceptance: true, serviceable: true, summary: "Summary of PackageD", tags: "Tag1 Tag2 Tag3", title: "Title of PackageD"); package.ShouldNotBeNull(); package.Id.ShouldBe("PackageD"); package.Version.ShouldBe(NuGetVersion.Parse("1.2.3")); FileInfo manifestFilePath = new FileInfo(VersionFolderPathResolver.GetManifestFilePath(package.Id, package.Version)) .ShouldExist(); using (Stream stream = File.OpenRead(manifestFilePath.FullName)) { Manifest manifest = Manifest.ReadFrom(stream, validateSchema: true); manifest.Metadata.Authors.ShouldBe(new[] { "UserA", "UserB" }); manifest.Metadata.Copyright.ShouldBe("Copyright 2000"); manifest.Metadata.Description.ShouldBe("Custom description"); manifest.Metadata.DevelopmentDependency.ShouldBeTrue(); #if !NET46 manifest.Metadata.Icon.ShouldBe(@"some\icon.jpg"); #endif manifest.Metadata.IconUrl.ShouldBe(new Uri("https://icon.url")); manifest.Metadata.Id.ShouldBe("PackageD"); manifest.Metadata.Language.ShouldBe("Pig latin"); manifest.Metadata.LicenseMetadata.License.ShouldBe("MIT"); manifest.Metadata.LicenseMetadata.Type.ShouldBe(LicenseType.Expression); manifest.Metadata.LicenseMetadata.Version.ShouldBe(Version.Parse("1.0.0")); manifest.Metadata.Owners.ShouldBe(new[] { "Owner1", "Owner2" }); manifest.Metadata.PackageTypes.ShouldBe(new[] { PackageType.Dependency, PackageType.DotnetCliTool }); manifest.Metadata.ProjectUrl.ShouldBe(new Uri("https://project.url")); manifest.Metadata.ReleaseNotes.ShouldBe("Release notes for PackageD"); manifest.Metadata.Repository.Branch.ShouldBe("Branch1000"); manifest.Metadata.Repository.Commit.ShouldBe("Commit14"); manifest.Metadata.Repository.Type.ShouldBe("Git"); manifest.Metadata.Repository.Url.ShouldBe("https://repository.url"); manifest.Metadata.RequireLicenseAcceptance.ShouldBeTrue(); manifest.Metadata.Serviceable.ShouldBeTrue(); manifest.Metadata.Summary.ShouldBe("Summary of PackageD"); manifest.Metadata.Tags.ShouldBe("Tag1 Tag2 Tag3"); manifest.Metadata.Title.ShouldBe("Title of PackageD"); } }