Some checks failed
Docker Build and Publish / build-and-push (pull_request) Has been skipped
Contributor Attribution Check / check-attribution (pull_request) Failing after 33s
Supply Chain Audit / Scan PR for supply chain risks (pull_request) Successful in 27s
Tests / e2e (pull_request) Successful in 3m19s
Tests / test (pull_request) Failing after 59m22s
82 lines
2.1 KiB
Python
82 lines
2.1 KiB
Python
"""
|
|
Tests for skill dependency resolver
|
|
|
|
Issue: #754
|
|
"""
|
|
|
|
import unittest
|
|
from unittest.mock import patch, MagicMock
|
|
|
|
from tools.skill_deps import (
|
|
parse_requires,
|
|
check_dependency,
|
|
check_dependencies,
|
|
resolve_dependencies,
|
|
)
|
|
|
|
|
|
class TestParseRequires(unittest.TestCase):
|
|
|
|
def test_list(self):
|
|
fm = {"requires": ["pkg1", "pkg2"]}
|
|
self.assertEqual(parse_requires(fm), ["pkg1", "pkg2"])
|
|
|
|
def test_string(self):
|
|
fm = {"requires": "pkg1"}
|
|
self.assertEqual(parse_requires(fm), ["pkg1"])
|
|
|
|
def test_empty(self):
|
|
fm = {}
|
|
self.assertEqual(parse_requires(fm), [])
|
|
|
|
def test_none(self):
|
|
fm = {"requires": None}
|
|
self.assertEqual(parse_requires(fm), [])
|
|
|
|
|
|
class TestCheckDependency(unittest.TestCase):
|
|
|
|
def test_installed(self):
|
|
installed, version = check_dependency("json")
|
|
self.assertTrue(installed)
|
|
|
|
def test_not_installed(self):
|
|
installed, version = check_dependency("nonexistent_package_xyz_123")
|
|
self.assertFalse(installed)
|
|
|
|
|
|
class TestCheckDependencies(unittest.TestCase):
|
|
|
|
def test_all_installed(self):
|
|
installed, missing = check_dependencies(["json", "os"])
|
|
self.assertEqual(len(missing), 0)
|
|
|
|
def test_some_missing(self):
|
|
installed, missing = check_dependencies(["json", "nonexistent_xyz"])
|
|
self.assertIn("json", installed)
|
|
self.assertIn("nonexistent_xyz", missing)
|
|
|
|
|
|
class TestResolveDependencies(unittest.TestCase):
|
|
|
|
def test_no_requires(self):
|
|
satisfied, installed, missing = resolve_dependencies({})
|
|
self.assertTrue(satisfied)
|
|
|
|
def test_all_satisfied(self):
|
|
satisfied, installed, missing = resolve_dependencies(
|
|
{"requires": ["json"]}, auto_install=False
|
|
)
|
|
self.assertTrue(satisfied)
|
|
|
|
def test_missing_no_auto(self):
|
|
satisfied, installed, missing = resolve_dependencies(
|
|
{"requires": ["nonexistent_xyz"]}, auto_install=False
|
|
)
|
|
self.assertFalse(satisfied)
|
|
self.assertIn("nonexistent_xyz", missing)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|