Skip to content
Merged
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
24 changes: 16 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,19 +129,19 @@ This project includes a comprehensive test suite to ensure code quality and corr
**Basic test execution:**
```bash
# Install dev dependencies first
pip install pytest pytest-mock pytest-xdist
uv sync --all-extras

# Run all tests
pytest tests/
uv run pytest tests/
```

**Parallel test execution (recommended):**
```bash
# Run tests in parallel using all available CPU cores
pytest tests/ -n auto
uv run pytest tests/ -n auto

# Run with specific number of workers
pytest tests/ -n 4
uv run pytest tests/ -n 4
```

**Note on parallel execution:** The test suite is currently small (~78 tests, <1s execution time), so parallel execution overhead may result in longer wall-clock time compared to sequential execution. However, pytest-xdist is included for:
Expand All @@ -154,13 +154,13 @@ pytest tests/ -n 4
For active development with frequent test runs:
```bash
# Run tests sequentially (faster for small test suites)
pytest tests/ -v
uv run pytest tests/ -v

# Run specific test file
pytest tests/test_security.py -v
uv run pytest tests/test_security.py -v

# Run tests matching pattern
pytest tests/ -k "test_validation" -v
uv run pytest tests/ -k "test_validation" -v
```

## Release Process
Expand All @@ -170,7 +170,7 @@ This project uses manual releases via GitHub Releases. To create a new release:
1. **Ensure all changes are tested and merged to `main`**
```bash
# Verify tests pass
pytest tests/
uv run pytest tests/

# Verify security scans pass
bandit -r main.py -ll
Expand Down Expand Up @@ -209,6 +209,14 @@ This project uses manual releases via GitHub Releases. To create a new release:

## CI/CD & Dependency Caching

### CI/CD Workflows

| Workflow | File | Trigger | Purpose |
|---|---|---|---|
| **Sync** | `sync.yml` | Daily at 02:00 UTC, manual dispatch | Main synchronization workflow — runs `main.py` to keep Control D folders in sync |
| **Bandit** | `bandit.yml` | Push/PR to `main`, weekly schedule | Security vulnerability scanning for Python code |
| **Codacy** | `codacy.yml` | Push/PR to `main`, weekly schedule | Code quality analysis and SARIF upload to GitHub Security tab |

### How Caching Works

The GitHub Actions workflows use automatic dependency caching to speed up CI runs:
Expand Down
Loading