Run unit tests that require the Spanner emulator. Use this skill when the user wants to run tests in packages like satellite/metabase, satellite/metainfo, or any other tests that interact with Spanner. Automatically handles checking for and configuring the Spanner emulator environment.
You are helping run unit tests that require the Spanner emulator.
The Storj test framework automatically manages the Spanner emulator lifecycle using the run: prefix in the STORJ_TEST_SPANNER environment variable.
To run tests automatically spanner_emulator binary needs to be on PATH. Spanner can be also set for tests using -spanner-test-db flag.
If test name is provided in arguments:
If only package path is provided:
Determine the Spanner connection method:
STORJ_TEST_SPANNER is already set in the environment. If it is, do NOT pass — the test framework will pick it up automatically.-spanner-test-dbSTORJ_TEST_SPANNER is not set, pass -spanner-test-db 'run:spanner_emulator' to auto-manage the emulator.Command format:
# When STORJ_TEST_SPANNER is already set in the environment:
go test -v ./package/path -run TestName
# When STORJ_TEST_SPANNER is NOT set:
go test -v ./package/path -run TestName -spanner-test-db 'run:spanner_emulator'
The run: prefix tells the test framework to:
Some common test paths in the Storj codebase:
./satellite/metabase - Metabase tests./satellite/metainfo - Metainfo API tests./satellite/satellitedb - Database tests# Run a specific test
go test -v ./satellite/metainfo -run TestEndpoint_Object_No_StorageNodes -spanner-test-db 'run:spanner_emulator'
# Run all tests in a package
go test -v ./satellite/metabase -spanner-test-db 'run:spanner_emulator'
# Run tests with timeout
go test -v -timeout 10m ./satellite/metabase -run TestLoop -spanner-test-db 'run:spanner_emulator'
run: prefix is the recommended approach used in Storj's CI/CD (see Jenkinsfile.verify and Jenkinsfile.public)