Skip to content

Commit bf3a71a

Browse files
committed
readme updated with command to run tests in docker and changelog update
1 parent f532489 commit bf3a71a

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@ pip install -r requirements-dev.txt
125125
pytest
126126
```
127127

128+
Or run it inside the app container (no local Python setup, matches the CI environment):
129+
130+
```bash
131+
docker compose -f docker-compose_without_ollama.yml run --rm app sh -c "pip install --no-cache-dir -q pytest && pytest"
132+
```
133+
128134
CI runs the suite on Ubuntu and Windows. See [TESTING.md](./TESTING.md) for the philosophy and what is deliberately not tested.
129135

130136
## Roadmap
@@ -137,6 +143,7 @@ CI runs the suite on Ubuntu and Windows. See [TESTING.md](./TESTING.md) for the
137143
<details>
138144
<summary>Changelog (highlights)</summary>
139145

146+
- **2026-07** (v2.6.0): Contract-level test suite (21 tests) plus GitHub Actions CI on Ubuntu and Windows; moved all source into `src/` for a cleaner root. Breaking: run commands are now `streamlit run src/app.py`.
140147
- **2025-05** (v2.5.0): file upload via the chat bar.
141148
- **2024-09**: Model serving moved to the Ollama API; OpenAI API added.
142149
- **2024-08**: Docker Compose added.

TESTING.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Testing
22

3-
This repo has a small, deliberate test suite: **20 contract tests** over the parts of the code whose behavior is stable by design. It is meant to stay cheap to maintain — including for forks.
3+
This repo has a small, deliberate test suite: **21 contract tests** over the parts of the code whose behavior is stable by design. It is meant to stay cheap to maintain — including for forks.
44

55
## Philosophy: contracts, not structure
66

@@ -16,10 +16,12 @@ A few places accept **medium churn** deliberately, each documented inline where
1616

1717
| File | Contracts |
1818
|------|-----------|
19-
| `tests/test_database_operations.py` (9) | message roundtrips (text + binary), LLM-context feed ordering/filtering, per-session delete isolation, session id listing, settings read-through defaults + persistence, restart durability |
19+
| `tests/test_database_operations.py` (10) | message roundtrips (text + binary), LLM-context feed ordering/filtering, per-session delete isolation, session id listing, settings read-through defaults + persistence, restart durability |
2020
| `tests/test_utils.py` (3) | base64/data-URL wire format, `/command` dispatch, config save/load roundtrip |
2121
| `tests/test_chat_api_handler.py` (8) | endpoint routing (ollama/openai/unknown), request bodies + auth headers, image wire formats (Ollama bare-b64 vs OpenAI data URL), RAG context stuffing, error-shape handling (string vs nested object) |
2222

23+
Counts are executed test cases, not test functions: `test_database_operations.py` has 9 test functions but one is parametrized over `["image", "audio"]`, so it runs 10 cases — 21 in total.
24+
2325
## What deliberately stays untested (and why)
2426

2527
- **UI structure and CSS** (`app.py`, `html_templates.py`) — Streamlit class names churn every release; tests would break without any behavior change.

0 commit comments

Comments
 (0)