Verify.Nupkg
1.0.6
Prefix Reserved
See the version list below for details.
dotnet add package Verify.Nupkg --version 1.0.6
NuGet\Install-Package Verify.Nupkg -Version 1.0.6
<PackageReference Include="Verify.Nupkg" Version="1.0.6" />
paket add Verify.Nupkg --version 1.0.6
#r "nuget: Verify.Nupkg, 1.0.6"
// Install Verify.Nupkg as a Cake Addin #addin nuget:?package=Verify.Nupkg&version=1.0.6 // Install Verify.Nupkg as a Cake Tool #tool nuget:?package=Verify.Nupkg&version=1.0.6
Verify.Nupkg
Extends Verify to allow verification of NuGet .nupkg files.
The plugin does not do a naive binary comparison, as that would cause a large amount of verification churn. Instead, the contents of the .nuspec file are verified, along with a tree view of the package files.
Here's an example of the diff that results from adding a README to the package:
--- a/manifest.verified.nuspec
+++ b/manifest.verified.nuspec
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>SamplePackage</id>
<version>********</version>
<authors>SamplePackage</authors>
+ <readme>README.md</readme>
<description>Package Description</description>
<repository type="git" commit="****************************************" />
<dependencies>
<group targetFramework="net8.0" />
</dependencies>
</metadata>
</package>
--- a/contents.verified.txt
+++ b/contents.verified.txt
/
+|-- README.md
|-- SamplePackage.nuspec
|-- lib
|-- net8.0
|-- SamplePackage.dll
Verifying package structure is part of an overall solution to prevent accidental package breaks. If you want to verify / avoid breaking API changes, check out Microsoft.CodeAnalysis.PublicApiAnalyzers. If you want to follow packing best practices (validating a README, reproducible builds, etc.) check out meziantou's blog post.
Usage
[ModuleInitializer]
public static void Initialize() =>
VerifyNupkg.Initialize();
File path
[Fact]
public Task VerifyNupkgFile()
{
string packagePath = "path/to/package.nupkg";
VerifySettings settings = new();
settings.UseUniqueDirectory(); // Optional; group files into a directory
settings.ScrubNuspec(); // Scrub commit and other volatile information from nuspec
return VerifyFile(packagePath, settings);
}
Excluding files
By default, the following files are excluded from the directory listing baseline:
[Content_Types].xml
.psmdcp
_rels/.rels
If you'd to customize the file exclusion list, use VerifySettings.AddNupkgDiffSettings()
.
VerifySettings settings = new();
settings.AddNupkgDiffSettings(settings =>
{
settings.ExcludedFiles = [new Regex(@"\.psmdcp$"), new Regex(@"^\[Content_Types\].xml$")];
});
Custom scrubbers
.nuspec files often contain sources of verification churn. Use VerifierSettings.ScrubNuspec()
like this:
VerifySettings settings = new();
settings.ScrubNuspec();
which itself is a convenience method for ScrubNuspecVersion()
and ScrubNuspecCommit()
. Feel free to use them
separately if you'd like to verify either of these values.
Icon
Package designed by sandra from The Noun Project.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Framework | net472 is compatible. net48 was computed. net481 was computed. |
-
.NETFramework 4.7.2
- Spectre.Console.Testing (>= 0.48.0)
- Verify (>= 23.0.1)
-
net6.0
- Spectre.Console.Testing (>= 0.48.0)
- Verify (>= 23.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.