8000 pytest cannot run on a fresh clone (gitignored maintainer scripts, required server.port) · Issue #12 · quran/quran-mcp · GitHub
[go: up one dir, main page]

Skip to content

pytest cannot run on a fresh clone (gitignored maintainer scripts, required server.port) #12

Open

Description

@haroon0x

Problem

pytest does not run on a fresh clone. Two independent failures, plus a build-gated file, and no PR CI to catch them.

1. Collection crash on a gitignored path

tests/test_goodmem_maintainer_scripts.py imports two modules from scripts/.maintainer/goodmem/ at import time, but .gitignore excludes scripts/.maintainer/:

E   FileNotFoundError: [Errno 2] No such file or directory:
    .../scripts/.maintainer/goodmem/memory_retrieve.py
!!! Interrupted: 1 error during collection !!!

Anyone without the private maintainer scripts (i.e. every external contributor) cannot collect the suite.

2. Required server.port missing from config fixtures

ServerSettings.port is required, but several fixtures in tests/test_config_settings.py write a config.yml with no server section:

E   pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
E   server
E     Field required

3. Mushaf asset tests need a built frontend

tests/test_asset_contracts.py asserts src/quran_mcp/apps/mcp/mushaf/dist/app.html exists, which only exists after make build-frontend. On an unbuilt checkout those two tests fail rather than explaining the missing prerequisite.

Reproduction

git clone https://github.com/quran/quran-mcp && cd quran-mcp
uv sync --frozen --extra dev --python 3.14
.venv/bin/python -m pytest -q -m "not integration"
# 1 collection error, then 10 failures once collection is unblocked

Expected

A clean clone can run the non-integration suite without private scripts, without .env, and without a built frontend.

Fix

PR #11 makes the suite runnable: it skips the maintainer-scripts module when the scripts are absent, gives the config fixtures the required server.port, skips the build-gated asset assertions with an explicit reason, and adds PR CI so this cannot rot again. Result on a clean clone: 1326 passed, 3 skipped.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0