Development Setup
Prerequisites
- .NET SDK: .NET 10 (
10.0.x) - Docker: required for Testcontainers-backed integration tests (Azurite / LocalStack / FakeGcsServer / SFTP)
Workflow (Local)
flowchart LR
A[Clone repo] --> B[dotnet restore]
B --> C[dotnet build]
C --> D[dotnet test]
D --> E[dotnet format]
D --> F[Docker daemon]
Clone
git clone https://github.com/managedcode/Storage.git
cd Storage
Restore / Build / Test
Canonical commands (see AGENTS.md):
dotnet restore ManagedCode.Storage.slnx
dotnet build ManagedCode.Storage.slnx --configuration Release
dotnet test Tests/ManagedCode.Storage.Tests/ManagedCode.Storage.Tests.csproj --configuration Release --filter "Category!=BrowserStress"
Testing Strategy
The full test strategy (suite layout, categories, containers, cloud-drive HTTP fakes) lives in docs/Testing/strategy.md:
Formatting
dotnet format ManagedCode.Storage.slnx
Notes
- Start Docker Desktop (or your Docker daemon) before running the full test suite.
- AWS and Orleans integration tests intentionally pin LocalStack to
localstack/localstack:4.14.0; do not switch them back tolatest, because the end-of-March 2026latestimage became auth-gated and breaks CI without a token. - GitHub Actions now use tiered browser large-file coverage:
build-and-testkeeps a fast128 MiBbrowser large-file lane in the default suite, while a separatebrowser-stresslane runs the heavier256 MiBbrowser stress checks automatically for CI and release gating. - Never commit secrets (cloud keys, OAuth tokens, connection strings). Use environment variables or user secrets.
- Credentials for cloud-drive providers are documented in
docs/Development/credentials.md.