mirror of
https://github.com/Cheviiot/Nivora.git
synced 2026-08-03 15:51:12 +00:00
feat: create autonomous Nivora package repository
Maintain a validated cross-distribution package catalog. Automate upstream updates, isolated builds, diagnostics, and direct publication. Build the official GitHub Desktop sources for Linux with working OAuth.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import importlib.util
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
MODULE_PATH = Path(__file__).resolve().parents[1] / "tools/validate_repo.py"
|
||||
SPEC = importlib.util.spec_from_file_location("validate_repo", MODULE_PATH)
|
||||
assert SPEC and SPEC.loader
|
||||
VALIDATOR = importlib.util.module_from_spec(SPEC)
|
||||
SPEC.loader.exec_module(VALIDATOR)
|
||||
|
||||
|
||||
class ParserTests(unittest.TestCase):
|
||||
def test_scalar_and_array(self):
|
||||
text = "name='demo'\narchitectures=('amd64' 'arm64')\n"
|
||||
self.assertEqual(VALIDATOR.scalar(text, "name"), "demo")
|
||||
self.assertEqual(
|
||||
VALIDATOR.array(text, "architectures"), ["amd64", "arm64"]
|
||||
)
|
||||
|
||||
def test_source_arrays_include_architectures(self):
|
||||
text = "sources=('one')\n\nsources_arm64=(\n 'two'\n)\n"
|
||||
self.assertEqual(
|
||||
VALIDATOR.source_arrays(text),
|
||||
{"sources": ["one"], "sources_arm64": ["two"]},
|
||||
)
|
||||
|
||||
def test_local_source_rejects_traversal(self):
|
||||
self.assertEqual(VALIDATOR.local_source_name("local:///LICENSE"), "LICENSE")
|
||||
self.assertEqual(VALIDATOR.local_source_name("local:///../secret"), "")
|
||||
self.assertIsNone(VALIDATOR.local_source_name("https://example.com/file"))
|
||||
|
||||
def test_markdown_targets(self):
|
||||
text = "[Doc](docs/guide.md) <img src='assets/icon.svg'>"
|
||||
self.assertEqual(
|
||||
VALIDATOR.markdown_targets(text), {"docs/guide.md", "assets/icon.svg"}
|
||||
)
|
||||
|
||||
|
||||
class LinkTests(unittest.TestCase):
|
||||
def test_missing_link_is_reported(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "README.md"
|
||||
path.write_text("[missing](no.md)\n", encoding="utf-8")
|
||||
old_root = VALIDATOR.ROOT
|
||||
VALIDATOR.ROOT = Path(directory)
|
||||
try:
|
||||
errors = []
|
||||
VALIDATOR.validate_links(path, errors)
|
||||
self.assertEqual(len(errors), 1)
|
||||
finally:
|
||||
VALIDATOR.ROOT = old_root
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user