Keep confidence high while the repository shifts to the storage multi-module shape.
The quality bar is:
- fast unit tests in each module
- shared contract assertions in
storagetest - one centralized integration matrix in
integration
Scope:
storagepackage semantics- manager and registry behavior
- path normalization and traversal rejection
- stable error vocabulary
Priority areas:
NormalizePathJoinPrefix- manager construction and disk lookup failures
- duplicate driver registration behavior
- package-level semantics staying aligned with docs
Scope:
- driver-local prefix handling
- error wrapping and not-found mapping
- unsupported URL behavior where applicable
- context cancellation branches where cheap to test
Priority areas:
local: traversal rejection, modtime helper, URL unsupporteds3: key building, list shaping, presign behavior, not-found normalizationgcs: emulator-mode URL behavior, not-found normalizationftp/sftp: prefix handling and not-found mappingdropbox: pagination, temporary link behavior, not-found mappingrclone: init conflicts, prefix handling, unsupported/public-link branches
Scope:
- backend-agnostic semantics in
storagetest
Current contract covers:
Put/GetExistsDelete- one-level
List - URL support vs
ErrUnsupported ErrNotFoundand traversal rejection behavior- context cancellation
- optional
ModTime - optional
Walkcapability checks
Scope:
- real backend behavior through the
integrationmodule - same contract run against every supported backend fixture
Current matrix:
localgcsftps3sftp- representative
rclone_local
This matrix is the default integration path for the repository. The repository should not carry parallel per-driver integration suites that only duplicate the shared storage contract.
Unit tests in root:
GOCACHE=/tmp/storage-gocache GOMODCACHE=/tmp/storage-gomodcache go test ./...Examples module:
cd examples
GOCACHE=/tmp/storage-gocache GOMODCACHE=/tmp/storage-gomodcache go test ./...Centralized integration matrix:
cd integration
GOCACHE=/tmp/storage-gocache GOMODCACHE=/tmp/storage-gomodcache go test -tags=integration ./all -count=1Single backend in centralized integration matrix:
cd integration
INTEGRATION_DRIVER=gcs GOCACHE=/tmp/storage-gocache GOMODCACHE=/tmp/storage-gomodcache go test -tags=integration ./all -count=1Make targets:
make test
make examples-test
make integration
make integration-driver gcs- Prefer adding coverage to
storagetestwhen the semantics should hold across drivers. - Prefer adding coverage to
integration/allwhen validating backend behavior across fixtures. - Prefer adding backend-specific assertions to the centralized matrix only when they represent intended product behavior rather than ad hoc driver quirks.
- Keep
/tmpcaches for Go commands; do not use the repository working tree for Go cache state.