Developer Guide
Versioning
The version in the following places must be identical
- File
internal/version/version.go - File
.project-keeper.yml - Directory
doc/changes/: Filechangelog.mdand latest filechanges_*.md
Testing
Run unit tests only:
go test ./... -short
Run unit tests and integration tests:
For running the integrations tests you need Docker and Java installed.
go test ./...
To force tests to run instead of using cached results, add -count=1:
go test -count=1 ./...
Selecting the Exasol Version for Integration Tests
The default database version is defined by integrationTesting.defaultExasolDbVersion.
You can override this version by setting environment variable DB_VERSION, e.g.
export DB_VERSION=8.29.13
Hint: Download the Docker image for Exasol docker-db using pure docker commands, e.g.
docker pull exasol/docker-db:2026.1.1
Benefits:
- Displays progress
- Avoids timeout in integration tests
Reusing the Docker Container
The integration tests use exasol-test-setup-abstraction-server and thus indirectly exasol-testcontainers.
To speedup tests during development you need to enable reusing of test containers by creating file ~/.testcontainers.properties with the following content:
testcontainers.reuse.enable=true
Run Selected Tests
Run all tests in a specific package:
go test github.com/exasol/exasol-driver-go/pkg/connection/wsconn -p 1 -v -count 1
Argument -p is short for -parallel and limits the number of packages to test in parallel.
Run a single test within a suite:
go test -count 1 -p 1 -v \
-run TestIntegrationSuite/TestSimpleParquetImportStatement \
github.com/exasol/exasol-driver-go/itest
Parquet integration-test fixture
Integration tests generate ../testData/data.parquet containing the same three rows as testData/data.csv — (11, "test1"), (12, "test2"), (13, "test3") — as an INT64 column named a and a UTF-8 string column named b. The test-only helper uses github.com/parquet-go/parquet-go; the driver itself never parses Parquet.
The fixture is generated by generateExampleParquetFile in itest/integration_test.go and removed after each test.