How Are Tests Run in the Hiring-Agent Repository? A Guide to Smoke Checks and Manual Validation
The hiring-agent repository does not use pytest or unittest; instead, it relies on manual smoke-check scripts that exercise each processing stage by running the CLI against sample PDFs.
The interviewstreet/hiring-agent codebase handles the end-to-end pipeline of parsing resumes, enriching them with GitHub data, and evaluating candidates. Because the project lacks a conventional automated test suite, understanding how are tests run in the hiring-agent repository requires familiarity with its smoke-check workflow and manual verification steps.
Testing Approach: Smoke Checks vs. Automated Suites
The repository deliberately avoids traditional unit test frameworks. Instead, validation occurs through executable scripts that process real data through each pipeline stage.
Why There Is No Traditional Test Suite
According to the source code analysis, the project ships no formal test files like test_*.py or *_test.py. The complexity of LLM-dependent transformations—such as converting PDF sections to structured JSON—makes deterministic unit testing difficult. Consequently, the repository treats manual execution of the processing pipeline as the primary verification method.
The Smoke-Check Methodology
Smoke checks in this context involve running the actual entry points with minimal inputs to verify that components execute without errors. The repository breaks down into discrete stages, each testable via specific scripts:
- PDF → Markdown: Run
pymupdf_rag.pyorpdf.pyagainst a small PDF file - Section → JSON Resume: Execute
pdf.pyto invoke LLM prompting per section and build aJSONResumeobject - GitHub Enrichment: Run
github.pywith a known username to fetch profile data - Evaluation: Invoke
evaluator.pyon enriched JSON to obtain scores - End-to-End: Use
score.pyto orchestrate the complete pipeline
How to Run the Smoke Checks
Running the smoke-check suite requires three sequential steps: dependency installation, environment configuration, and manual execution of the pipeline or individual components.
Prerequisites and Environment Setup
First, install the required dependencies:
pip install -r requirements.txt
Next, configure the environment variables required for LLM providers and GitHub API access:
cp .env.example .env
# Edit .env to set LLM_PROVIDER, DEFAULT_MODEL, GEMINI_API_KEY, and GITHUB_TOKEN
Executing the End-to-End Pipeline
The primary smoke test runs the CLI entry point score.py against a sample resume:
python score.py examples/sample_resume.pdf
This command exercises the full stack: PDF parsing, LLM-based section extraction, GitHub enrichment, and final evaluation. The script outputs a human-readable evaluation to stdout, confirming that all integrated components function correctly.
Testing Individual Components
For targeted debugging, run individual stage scripts:
- PDF conversion:
python pymupdf_rag.py sample.pdf - GitHub fetch:
python github.py <username> - Evaluation logic:
python evaluator.py <enriched_json_path>
These granular checks isolate failures to specific modules without executing the full pipeline.
Key Files Involved in Testing
Understanding the testing workflow requires familiarity with these specific source files:
score.py: The CLI entry point that orchestrates the complete pipeline and serves as the primary smoke-test interfacepymupdf_rag.py: Handles low-level PDF-to-markdown conversion using PyMuPDFpdf.py: Manages PDF reading, LLM prompting per section, andJSONResumeassembly via Pydantic modelsgithub.py: Fetches and classifies GitHub repository data for resume enrichmentevaluator.py: Implements fairness-aware scoring logic on the enriched candidate datamodels.py: Contains Pydantic schemas and provider-agnostic LLM wrappers used across the pipelineCONTRIBUTING.md: Guidelines for adding new smoke-check scripts and verification steps
Development Mode and Caching
When DEVELOPMENT_MODE=True (the default setting), the pipeline caches intermediate JSON artifacts under the cache/ directory and appends evaluation results to resume_evaluations.csv. This behavior facilitates iterative smoke testing by preserving LLM outputs and allowing inspection of transformation stages without re-running expensive API calls.
Contributing New Smoke Checks
The repository encourages contributors to add smoke-check scripts that call pipeline stages with minimal inputs. As documented in CONTRIBUTING.md, pull requests should include verification steps demonstrating that each modified component executes successfully against representative test data. Adding a formal pytest suite remains a documented future contribution opportunity.
Summary
- The hiring-agent repository uses smoke-check scripts rather than pytest or unittest for verification
- Run the complete pipeline with
python score.py <path_to_pdf>to test end-to-end functionality - Test individual components by executing
pymupdf_rag.py,pdf.py,github.py, orevaluator.pydirectly - Set
DEVELOPMENT_MODE=Trueto enable caching of intermediate JSON results undercache/ - No formal automated test suite exists; contributors verify changes through manual CLI execution
Frequently Asked Questions
Does the hiring-agent repository have unit tests?
No, the repository does not contain unit tests or automated test suites. Verification relies entirely on manual smoke-check scripts that execute the actual processing pipeline against sample PDFs and known data inputs.
How do I verify that my changes work correctly?
Run the CLI entry point python score.py examples/sample_resume.pdf to execute the full pipeline. For targeted testing, run individual stage scripts like python github.py <username> or python evaluator.py <json_path> to isolate specific components.
What is the purpose of the DEVELOPMENT_MODE environment variable?
When DEVELOPMENT_MODE=True (the default), the pipeline caches intermediate JSON outputs to the cache/ directory and logs evaluations to resume_evaluations.csv. This facilitates iterative smoke testing by avoiding redundant LLM API calls and preserving transformation artifacts for inspection.
Where can I find guidelines for adding tests?
Refer to CONTRIBUTING.md in the repository root. This file outlines expectations for adding new smoke-check scripts and verification steps, though it notes that implementing a formal pytest-based test suite is currently left as a future contribution opportunity.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →