blob: 54f18a25b49670109e56c2d869f08db1361cf961 [file] [view]
# Testing the Gerrit MCP Server
This project includes a comprehensive test suite to ensure the server functions correctly and remains stable. The tests are divided into three categories: unit, integration, and end-to-end (E2E).
## Running the Tests
The easiest way to run the core test suite is to use the provided script from the root of the `gerrit-mcp-server` project directory.
Before running the tests for the first time, you must build the environment:
```bash
./build-gerrit.sh
```
Once the environment is built, you can run the tests:
```bash
./test.sh
```
This command will automatically:
1. Activate the Python virtual environment (`.venv`).
2. Discover and run all **unit tests** located in `tests/unit/`.
3. Discover and run all **integration tests** located in `tests/integration/`.
## Test Structure
The tests are organized as follows:
* `tests/unit/`: These tests are designed to be fast and isolated. They test individual functions and classes without making any real network requests. Dependencies like `curl` are mocked to ensure predictable behavior.
* `tests/integration/`: These tests verify that different parts of the server work together correctly. For example, the `test_build_and_run.py` test simulates the entire build and server startup process in a temporary directory to ensure the scripts are working as expected.
* `tests/e2e/`: These are optional, manually-run tests that make real network requests to a live Gerrit instance.
## End-to-End (E2E) Tests
The E2E tests are designed to verify the server's functionality against a real, live Gerrit instance. They are not run by default.
### Running the E2E Tests
To run the E2E test suite, use the `--e2e` flag with the test script:
```bash
./test.sh --e2e
```
### E2E Prerequisites
Before running the E2E tests, you must configure the following:
* **Main Configuration**: Ensure you have a valid `gerrit_mcp_server/gerrit_config.json`. Your E2E tests will authenticate using the methods defined in this file. See the **[Configuration Guide](configuration.md)** for details.
* **E2E Test Data**: You must create a `tests/e2e/e2e_config.json` file. A template is provided at `tests/e2e/e2e_config.sample.json`. This file tells the test suite which Gerrit instance to target and what data to use for read-only tests.
```bash
cp tests/e2e/e2e_config.sample.json tests/e2e/e2e_config.json
```
Fill in the values in your new `e2e_config.json`:
* `gerrit_base_url`: The URL of the Gerrit instance to test against. This must match a host defined in your main `gerrit_config.json`.
* `known_cl`: A known, public CL number for read-only tests.
* `known_user`: A known user for user-specific queries.
* `test_project`: **(Optional)** A project where you have permission to create changes. If this is not set, write tests (like creating a new CL) will be skipped.
* `test_reviewer`: **(Optional)** A user you can add as a reviewer during write tests.