diff --git a/.github/workflows/smoke-test.yml b/.github/workflows/smoke-test.yml new file mode 100644 index 0000000..03f85c8 --- /dev/null +++ b/.github/workflows/smoke-test.yml @@ -0,0 +1,45 @@ +name: Smoke Test + +on: + push: + branches: [main, ci/smoke-tests] + pull_request: + branches: [main] + +jobs: + demo-runs: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install dependencies + run: pip install -r requirements.txt pytest + - name: Smoke test — imports, MemoryEntry, config validation + env: + MEMORY_BACKEND: engram + ELASTIC_CLOUD_ID: stub + ELASTIC_API_KEY: stub + run: | + python - <<'EOF' + # The judge-on-stage failure mode is "demo crashes on import". + # This catches it without needing a live engram/Elastic backend. + import agent.main + from agent.config import AgentConfig + from agent.memory.backend import MemoryEntry + + issues = AgentConfig().validate() + assert issues == [], f"config validation failed: {issues}" + + entry = MemoryEntry(content="smoke", category="fact", project="ci") + assert entry.id == "" + print("smoke test OK: imports, config, MemoryEntry") + EOF + - name: Unit tests + env: + MEMORY_BACKEND: engram + ELASTIC_CLOUD_ID: stub + ELASTIC_API_KEY: stub + run: python -m pytest tests/ -v