public static void RewritingTheNuspecCreatesValidNewElements() { var packageStream = CreateTestPackageStream(); // ensure using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: true)) { var nuspec = nupkg.GetNuspecReader(); Assert.Equal(nuspec.GetMetadata().Any(kvp => kvp.Key == PackageMetadataStrings.LicenseUrl), false); } // Act NupkgRewriter.RewriteNupkgManifest(packageStream, new List <Action <ManifestEdit> > { metadata => { metadata.Authors = "Me and You"; }, metadata => { metadata.Tags = "Peas In A Pod"; }, metadata => { metadata.LicenseUrl = "http://myget.org"; }, metadata => { metadata.RequireLicenseAcceptance = true; } }); // Assert using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: false)) { var nuspec = nupkg.GetNuspecReader(); Assert.Equal("TestPackage", nuspec.GetId()); Assert.Equal(NuGetVersion.Parse("0.0.0.1"), nuspec.GetVersion()); Assert.Equal(nuspec.GetMetadata().Any(kvp => kvp.Key == PackageMetadataStrings.LicenseUrl), true); Assert.Equal(nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.LicenseUrl).Value, "http://myget.org"); Assert.Equal(nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.RequireLicenseAcceptance).Value, "true"); } }
public static void CanRewriteTheNuspecInANupkg() { var packageStream = CreateTestPackageStream(); // Act NupkgRewriter.RewriteNupkgManifest(packageStream, new List <Action <ManifestEdit> > { metadata => { metadata.Authors = "Me and You"; }, metadata => { metadata.Tags = "Peas In A Pod"; }, metadata => { metadata.ReleaseNotes = "In perfect harmony"; } }); // Assert using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: false)) { var nuspec = nupkg.GetNuspecReader(); Assert.Equal("TestPackage", nuspec.GetId()); Assert.Equal(NuGetVersion.Parse("0.0.0.1"), nuspec.GetVersion()); Assert.Equal("Me and You", nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.Authors).Value); Assert.Equal("Peas In A Pod", nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.Tags).Value); Assert.Equal("In perfect harmony", nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.ReleaseNotes).Value); } }
public static void RewritingTheNuspecRemovesInvalidElements() { var packageStream = CreateTestPackageStream(); // ensure using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: true)) { var nuspec = nupkg.GetNuspecReader(); Assert.Equal(nuspec.GetMetadata().Any(kvp => kvp.Key == PackageMetadataStrings.Title), true); } // Act NupkgRewriter.RewriteNupkgManifest(packageStream, new List <Action <ManifestEdit> > { metadata => { metadata.Title = ""; } }); // Assert using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: false)) { var nuspec = nupkg.GetNuspecReader(); Assert.Equal(nuspec.GetMetadata().Any(kvp => kvp.Key == PackageMetadataStrings.Title), false); } }
public static void RewritingTheNuSpecDoesNotMessUpTheNuspecStream() { var packageStream = CreateTestPackageStream(); var manifestStreamLengthOriginal = GetManifestStreamLength(packageStream); var longValue = new String('x', 200); var shortValue = "y"; // Act 1 - Make the stream bigger NupkgRewriter.RewriteNupkgManifest(packageStream, new List <Action <ManifestEdit> > { metadata => { metadata.Description = longValue; }, metadata => { metadata.Summary = longValue; } }); // Assert 1 var manifestStreamLength1 = GetManifestStreamLength(packageStream); Assert.True(manifestStreamLength1 > manifestStreamLengthOriginal); using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: true)) { var nuspec = nupkg.GetNuspecReader(); Assert.Equal("TestPackage", nuspec.GetId()); Assert.Equal(NuGetVersion.Parse("0.0.0.1"), nuspec.GetVersion()); Assert.Equal(longValue, nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.Description).Value); Assert.Equal(longValue, nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.Summary).Value); } // Act 2 - Make the stream smaller NupkgRewriter.RewriteNupkgManifest(packageStream, new List <Action <ManifestEdit> > { metadata => { metadata.Description = shortValue; }, metadata => { metadata.Summary = shortValue; } }); // Assert 2 var manifestStreamLength2 = GetManifestStreamLength(packageStream); Assert.True(manifestStreamLength2 < manifestStreamLength1); using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: true)) { var nuspec = nupkg.GetNuspecReader(); Assert.Equal("TestPackage", nuspec.GetId()); Assert.Equal(NuGetVersion.Parse("0.0.0.1"), nuspec.GetVersion()); Assert.Equal(shortValue, nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.Description).Value); Assert.Equal(shortValue, nuspec.GetMetadata().First(kvp => kvp.Key == PackageMetadataStrings.Summary).Value); } }
public static void CanRewriteTheNuspecInANupkg() { var packageStream = CreateTestPackageStream(); // Act NupkgRewriter.RewriteNupkgManifest(packageStream, new List <Action <ManifestMetadata> > { (metadata) => { metadata.Authors = "Me and You"; }, (metadata) => { metadata.Tags = "Peas In A Pod"; }, }); // Assert using (var nupkg = new Nupkg(packageStream, leaveOpen: false)) { Assert.Equal("TestPackage", nupkg.Metadata.Id); Assert.Equal(SemanticVersion.Parse("0.0.0.1"), nupkg.Metadata.Version); Assert.Equal("Me and You", string.Join(" ", nupkg.Metadata.Authors)); Assert.Equal("Peas In A Pod", nupkg.Metadata.Tags); } }
public static void RewritingTheNuspecDoesNotAddEmptyMetadataElements() { var packageStream = CreateTestPackageStream(); // Act NupkgRewriter.RewriteNupkgManifest(packageStream, new List <Action <ManifestEdit> > { metadata => { metadata.Authors = "Me and You"; }, metadata => { metadata.Tags = "Peas In A Pod"; }, metadata => { metadata.ReleaseNotes = "In perfect harmony"; } }); // Assert using (var nupkg = new PackageArchiveReader(packageStream, leaveStreamOpen: false)) { var nuspec = nupkg.GetNuspecReader(); var metadataDescendants = nuspec.Xml.Document.Descendants().Where(d => d.Name.LocalName == PackageMetadataStrings.Metadata).Descendants(); foreach (var element in metadataDescendants) { Assert.False(string.IsNullOrEmpty(element.Value), $"Nuspec contains a null or empty tag <{element.Name.LocalName}>"); } } }