SIGN IN SIGN UP

bats: add remotes-s3 covering minio and aws s3

Five tests need no network and always run: adding a plain and a routed
remote, and the three url validations, unknown parameter, non-boolean
path-style, and credentials embedded in the url.

The rest exercise real providers. The minio tests start and stop their own
server, following how the git ssh tests manage sshd: helper/s3-common.bash
provides setup_minio and teardown_minio, one server per test on a port from
definePORT, the pid captured and killed in teardown, and a skip when the
binary is absent. Nothing is left running for the life of the job. CI only
installs the binary into .ci_bin, which is already on PATH. The aws tests
run against a real bucket and are gated on DOLT_BATS_AWS_BUCKET; unlike
aws://, they need no DynamoDB table, so that bucket is all they require.

Each provider gets the same round trip: push, clone, verify the row count,
push again, pull. The second push earns its place because creating a
manifest and replacing one take different conditional-write paths,
If-None-Match against If-Match.

The two url shapes differ on purpose. MinIO needs endpoint, region and
path-style in the query string, the last because it has no wildcard DNS for
virtual-hosted buckets; against AWS the SDK resolves the endpoint from the
region, so the url is bucket and database alone.

setup_minio also points the credential chain at MinIO, because the job
exports real AWS credentials for the aws:// tests and MinIO rejects both
those keys and the session token a role-assumed identity carries. Each bats
test runs in its own subshell, so this does not leak to the aws tests.
stdio is redirected to /dev/null for the same reason setup_git_sshd does it:
otherwise the server holds bats' pipes open and bats never reaches EOF.

Verified locally: 8 run and 2 skip with a role-shaped AWS key and session
token in the environment, no minio process or listening socket survives the
run, and every network test skips cleanly when nothing is configured.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
N
Neil Macneale IV committed
05eed7f6aff3dde25a8fff373d47c06367eb49f4
Parent: 4486673