fix(ingest): D-04 bibkey heuristic + D-05a/b/c regression tests + __main__
D-04: add _make_bibkey(paper) — ConcatSurnames+Year, ≤3 authors full list,
>3 authors FirstEtAlYear. Applied in ingest_paper when paper.bibkey is
None. ON CONFLICT now fills NULL bibkeys via COALESCE(papers.bibkey,
EXCLUDED.bibkey) while preserving manually-set values.
D-05b: add codex/__main__.py so `python -m codex` dispatches to the CLI.
D-05c: fix test_ingest.py:75 — rename var to raw_api_citations (the raw
OpenAlex payload with citing_id=openalex_id) and add regression
assertion: citing_id written to DB must equal paper.id (DOI), not
paper.openalex_id.
D-05a (proxy): add TestEntryPoint.test_python_m_codex_help — runs
`sys.executable -m codex --help` via subprocess, covering the
non-uv-run entry path. 253 tests green, ruff+mypy clean.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -351,3 +351,27 @@ class TestAsk:
|
||||
|
||||
assert result.exit_code == 1
|
||||
assert "not yet implemented" in result.stdout or "not yet implemented" in result.stderr
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# D-05a/b — Entry-point smoke tests (python -m codex, no uv run)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class TestEntryPoint:
|
||||
"""Verify that `python -m codex` works without `uv run` (D-05a/b)."""
|
||||
|
||||
def test_python_m_codex_help(self) -> None:
|
||||
"""`python -m codex --help` exits 0 and prints usage."""
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
proc = subprocess.run(
|
||||
[sys.executable, "-m", "codex", "--help"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
assert proc.returncode == 0, f"Non-zero exit: {proc.stderr}"
|
||||
assert "Usage" in proc.stdout or "usage" in proc.stdout.lower(), (
|
||||
f"No usage in output: {proc.stdout[:200]}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user