Something went wrong. Try again.
Manifests and a static winget source for jcollie's Windows programs, built and signed on Linux.
Something went wrong. Try again.
2.9 kB · 81 lines
Python
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182# SPDX-FileCopyrightText: © 2026 Jeffrey C. Ollie <jeff@ocjtech.us># SPDX-License-Identifier: MIT
import pathlibimport unittest
from wingetsource.normalize import normalize_name, normalize_publisher
DATA = pathlib.Path(__file__).parent / "data" / "winget-cli"
def _lines(name: str) -> list[str]: return (DATA / name).read_text(encoding="utf-8").split("\n")
class WingetTestData(unittest.TestCase): """winget-cli's own `NameNorm_Database_Initial` test, with its data: every name and publisher pair has to normalize to exactly the identifier winget produces, or packages in this source will not correlate with what is installed."""
def test_initial(self): names = _lines("InputNames.txt") publishers = _lines("InputPublishers.txt") expected = _lines("NormalizationInitialIds.txt") self.assertEqual(len(names), len(publishers)) self.assertEqual(len(names), len(expected)) for name, publisher, want in zip(names, publishers, expected): if not (name or publisher or want): continue with self.subTest(name=name, publisher=publisher): got = normalize_publisher(publisher) + "." + normalize_name(name).name self.assertEqual(want, got)
class WingetTestCases(unittest.TestCase): """The rest of winget-cli's `NameNormalization.cpp` tests."""
def test_architecture(self): cases = { "Name": None, "Name x86": "X86", "Name x86_64": "X64", "Name (64 bit)": "X64", "Name 32/64 bit": None, "Fox86": None, } for name, architecture in cases.items(): with self.subTest(name=name): self.assertEqual(architecture, normalize_name(name).architecture)
def test_locale(self): cases = { "Name": "", "Name en-US": "en-us", "Name (es-mx)": "es-mx", "Names-mx": "", } for name, locale in cases.items(): with self.subTest(name=name): self.assertEqual(locale, normalize_name(name).locale)
def test_kb_numbers(self): self.assertEqual("FixforKB42", normalize_name("Fix for (KB42)").name)
def test_preserve_whitespace(self): self.assertEqual("Some Name", normalize_name("Some Name", preserve_whitespace=True).name) self.assertEqual("Some Publisher", normalize_publisher("Some Publisher Corp", preserve_whitespace=True))
def test_normalized_name(self): name = normalize_name("Name(X64)") self.assertEqual("Name", name.get()) self.assertEqual("Name(X64)", name.get(include_architecture=True))
name = normalize_name("Name") self.assertEqual("Name", name.get()) self.assertEqual("Name", name.get(include_architecture=True))
if __name__ == "__main__": unittest.main()