Rig.TUnit.Storage 0.1.0-beta.2

This is a prerelease version of Rig.TUnit.Storage.
dotnet add package Rig.TUnit.Storage --version 0.1.0-beta.2
                    
NuGet\Install-Package Rig.TUnit.Storage -Version 0.1.0-beta.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rig.TUnit.Storage" Version="0.1.0-beta.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rig.TUnit.Storage" Version="0.1.0-beta.2" />
                    
Directory.Packages.props
<PackageReference Include="Rig.TUnit.Storage" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rig.TUnit.Storage --version 0.1.0-beta.2
                    
#r "nuget: Rig.TUnit.Storage, 0.1.0-beta.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rig.TUnit.Storage@0.1.0-beta.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rig.TUnit.Storage&version=0.1.0-beta.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Rig.TUnit.Storage&version=0.1.0-beta.2&prerelease
                    
Install as a Cake Tool

Rig.TUnit.Storage

Family-base package for object-storage test fixtures: StorageFixture, path-sandbox helpers, and the cross-provider storage contract.

What this package is

The base package for the Storage family (Rig.TUnit.Storage.AzureBlob, .FileSystem, .MinIO, .S3). It defines the abstract StorageFixture contract — put / get / list / delete with URI-sandbox constraints — plus the StorageContract suite that every leaf provider [InheritsTests] from to prove parity.

Install this one directly only when you are writing a new storage provider or want the shared assertions without a specific backend.

When to use it

  • Authoring a new storage backend (FTP, OCI Object Storage, NFS, …).
  • Writing provider-agnostic test code that can be pointed at any backend.
  • Not for: concrete storage testing — install one of the four leaf packages.

Prerequisites

  • .NET 10 SDK
  • System.IO.Abstractions for the FileSystem provider; other leaves bring their own SDKs.

Quick start

using Rig.TUnit.Storage.Builder;
using Rig.TUnit.Storage.Fixtures;
using Rig.TUnit.Core.Builder;
using Rig.TUnit.Core.Helpers;

var rig = new RigBuilder()
    .WithIsolation(IsolationKey.FromExecutionContext())
    .Build();

await using var _ = rig;

Options

Property Type Default Description
RootPath string $"test-{IsolationKey}" Sandbox prefix for all keys written during the test.
MaxObjectSizeBytes long 10_000_000 Guard against accidental big-object uploads.
EnableVersioning bool false Require the backend to support object versioning.

Fixture + helper APIs

  • Rig.TUnit.Storage.Fixtures.StorageFixture — abstract contract
  • Rig.TUnit.Storage.Contracts.StorageContract — family-level TUnit suite
  • Rig.TUnit.Storage.Assertions.StorageAssert — existence / size / content

Per-test isolation

RootPath defaults to $"test-{IsolationKey}" so every test writes under a unique prefix; teardown deletes the prefix recursively. Concrete providers (S3, AzureBlob) append the key verbatim to their bucket / container name with sandbox enforcement via path-normalisation helpers.

Parallelism + performance

§9 — N/A: family-base contract; parallelism profile depends on the

concrete provider. See each leaf README.

Troubleshooting

  • StoragePathEscapedSandbox — a test tried to read a key outside the per-test root. The sandbox helper blocked it; fix the test.

See docs/troubleshooting.md.

Provider quirks + edge cases

  • Path separators differ (/ cloud vs \ Windows filesystem); the base uses / as the canonical separator and FileSystemFixture translates.

Benchmarks

§12 — N/A: family-base; concrete providers have individual

*Benchmarks.cs entries under tests/Rig.TUnit.Benchmarks/.

License

MIT. See LICENSE.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Rig.TUnit.Storage:

Package Downloads
Rig.TUnit.Storage.S3

TUnit fixture for Amazon S3 via LocalStack. Per-test bucket isolation, multipart upload, and SSE/replication assertions.

Rig.TUnit.Storage.MinIO

TUnit fixture for MinIO (S3-compatible) backed by Testcontainers. Per-test bucket isolation and lifecycle policy helpers.

Rig.TUnit.All

Meta-package containing every Rig.TUnit.* package. DISCOURAGED — prefer per-feature or per-stack meta-packages (Rig.TUnit, Rig.TUnit.Microservices).

Rig.TUnit.Storage.AzureBlob

TUnit fixture for Azure Blob Storage via Azurite. Per-test container isolation, multipart upload, and condition-header assertions.

Rig.TUnit.Storage.FileSystem

TUnit fixture for the local file system - temp-folder-scoped, no container required.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-beta.2 51 4/27/2026
0.0.0-alpha.0.14 49 4/26/2026