Some checks failed
Test / pytest (pull_request) Failing after 7s
Add dependency_inventory.py — an inventory tool that scans repos for dependency manifests (requirements.txt, package.json, go.mod, Cargo.toml, pyproject.toml) and produces either JSON or markdown report. Includes: - Full parser suite for 5 manifest types - --repos and --repos-dir argument support - Incremental friendly — safe to add new features - --output/-o file support - Test suite in tests/test_dependency_inventory.py Closes #107 (1/5) — first script in the Health Report toolkit.
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
"""
|
|
Tests for scripts/dependency_inventory.py
|
|
"""
|
|
|
|
import unittest
|
|
import json
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from scripts.dependency_inventory import (
|
|
parse_requirements,
|
|
parse_package_json,
|
|
parse_pyproject_toml,
|
|
scan_repo,
|
|
)
|
|
|
|
|
|
class TestParseRequirements(unittest.TestCase):
|
|
def test_parses_simple_requirement(self):
|
|
result = parse_requirements("requests>=2.33.0")
|
|
self.assertEqual(len(result), 1)
|
|
self.assertEqual(result[0]["package"], "requests")
|
|
|
|
def test_parses_version_range(self):
|
|
result = parse_requirements("pytest>=8,<9")
|
|
self.assertEqual(result[0]["package"], "pytest")
|
|
|
|
|
|
class TestParsePackageJson(unittest.TestCase):
|
|
def test_parses_dependencies(self):
|
|
content = json.dumps({"name": "test", "dependencies": {"react": "^18.2.0"}})
|
|
result = parse_package_json(content)
|
|
self.assertTrue(any(d["package"] == "react" for d in result))
|
|
|
|
|
|
class TestParsePyprojectToml(unittest.TestCase):
|
|
def test_parses_project_dependencies(self):
|
|
content = "\n[project]\nname = \"test\"\ndependencies = [\n \"openai>=2.21.0,<3\",\n]"
|
|
result = parse_pyproject_toml(content)
|
|
self.assertEqual(len(result), 1)
|
|
|
|
|
|
class TestScanRepo(unittest.TestCase):
|
|
def test_scans_local_repo(self):
|
|
result = scan_repo(Path(__file__).resolve().parents[1])
|
|
self.assertGreater(result["dependency_count"], 0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main() |