Skip to content

Commit 31ef438

Browse files
committed
pin localstack image for ci tests
1 parent d07397f commit 31ef438

File tree

5 files changed

+18
-1
lines changed

5 files changed

+18
-1
lines changed

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ Ask first:
322322
### Likes
323323

324324
- Repository-facing docs, especially `README.md`, should stay in English and describe only the current supported behavior, not transitional legacy or fallback paths.
325+
- Temporary root-level `*.plan.md` files should be removed once a task is complete and their contents are no longer needed.
325326

326327
### Dislikes
327328

Tests/ManagedCode.Storage.Tests/Common/ContainerImages.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ public class ContainerImages
44
{
55
public const string Azurite = "mcr.microsoft.com/azure-storage/azurite:latest";
66
public const string FakeGCSServer = "fsouza/fake-gcs-server:latest";
7-
public const string LocalStack = "localstack/localstack:latest";
7+
public const string LocalStack = "localstack/localstack:4.14.0";
88
public const string Sftp = "atmoz/sftp:alpine";
99
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using ManagedCode.Storage.Tests.Common;
2+
using Shouldly;
3+
using Xunit;
4+
5+
namespace ManagedCode.Storage.Tests.Common;
6+
7+
public sealed class ContainerImagesTests
8+
{
9+
[Fact]
10+
public void LocalStack_ShouldUsePinnedPreAuthRelease()
11+
{
12+
ContainerImages.LocalStack.ShouldBe("localstack/localstack:4.14.0");
13+
}
14+
}

docs/Development/setup.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,6 @@ dotnet format ManagedCode.Storage.slnx
5656
## Notes
5757

5858
- Start Docker Desktop (or your Docker daemon) before running the full test suite.
59+
- AWS and Orleans integration tests intentionally pin LocalStack to `localstack/localstack:4.14.0`; do not switch them back to `latest`, because the end-of-March 2026 `latest` image became auth-gated and breaks CI without a token.
5960
- Never commit secrets (cloud keys, OAuth tokens, connection strings). Use environment variables or user secrets.
6061
- Credentials for cloud-drive providers are documented in `docs/Development/credentials.md`.

docs/Testing/strategy.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ Tests are grouped by “surface” and provider:
4545
Where possible, tests run without real cloud accounts:
4646

4747
- Azure/AWS/GCS/SFTP suites use **Testcontainers** (Azurite, LocalStack, FakeGcsServer, SFTP container).
48+
- The LocalStack-backed AWS and Orleans flows are pinned to `localstack/localstack:4.14.0` because the end-of-March 2026 `latest` image became auth-gated and is no longer safe for anonymous CI runs.
4849
- Browser-local coverage uses Playwright against `Tests/ManagedCode.Storage.BrowserServerHost/` and `Tests/ManagedCode.Storage.BrowserWasmHost/` so `ManagedCode.Storage.Browser` is exercised through real Chromium flows with IndexedDB metadata and OPFS payloads in both Interactive Server and standalone WASM modes.
4950
- Those same hosts also wire `ManagedCode.Storage.VirtualFileSystem` over the browser provider, so browser VFS write, read, move, delete, large-file, small-file overwrite, and multi-tab concurrency flows are verified end to end in the browser rather than through in-process fakes.
5051
- The Interactive Server host explicitly raises `HubOptions.MaximumReceiveMessageSize` so browser-to-server chunk reads can exceed the default 32 KB SignalR limit during large-stream verification.

0 commit comments

Comments
 (0)