Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions DEVELOPMENT_GUIDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# QuickFIX/Go – Development guide

This document provides a short, practical checklist for working on QuickFIX/Go during local development. It complements the main `README.md` and `CONTRIBUTING.md`.

## 1. Prerequisites

- Go toolchain (Go 1.21+ is recommended, see the main README for current requirements)
- `make`
- Optional but recommended:
- Docker and VS Code if you want to use the devcontainer setup described in CONTRIBUTING

Verify your Go installation:

~~~bash
go version
~~~

## 2. Running unit tests

To run the standard Go test suite:

~~~bash
go test ./...
~~~

This should pass before you open a pull request.

If you want to focus on a specific package:

~~~bash
go test ./config
go test ./store
~~~

## 3. Acceptance tests overview

QuickFIX/Go ships with a comprehensive acceptance test suite shared across QuickFIX implementations. Running these tests is slower, but very useful when touching protocol-level behaviour.

Typical flow (see the main README and CONTRIBUTING for full details):

~~~bash
# Generate FIX code from specs
make generate

# Build the acceptance test server
make build-test-srv

# Run acceptance tests
make accept
~~~

Acceptance tests require Ruby to be available in `PATH`. If you are using the provided devcontainer, Ruby is already installed.

## 4. Suggested workflow for contributors

1. Ensure Go and `make` are installed.
2. Make your code changes.
3. Run fast feedback:
- `go test ./...`
4. For protocol-sensitive changes, also run:
- `make generate`
- `make build-test-srv`
- `make accept`
5. Format your code using the standard Go tooling:
- `go fmt ./...`
6. Commit with a clear message and open a pull request describing:
- What you changed
- Why it is useful for QuickFIX/Go users
- Which test commands you ran locally