mirror of
https://github.com/Cheviiot/Nivora.git
synced 2026-08-03 15:51:12 +00:00
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.
58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
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()
|