tests/test_canonical.py
back to source
import unittest
from numos.canonical import canonical_body, content_hash
class TestCanonical(unittest.TestCase):
def test_body_joins_with_lf_and_trailing_newline(self):
self.assertEqual(canonical_body(["V 1", "A x86_64"]), "V 1\nA x86_64\n")
def test_body_excludes_the_c_line(self):
self.assertEqual(canonical_body(["V 1", "C deadbeef", "A x86_64"]), "V 1\nA x86_64\n")
def test_hash_is_64_lowercase_hex_chars(self):
h = content_hash(["V 1"])
self.assertEqual(len(h), 64)
self.assertTrue(all(c in "0123456789abcdef" for c in h),
"non-lowercase-hex character in %r" % h)
def test_hash_is_stable_across_calls(self):
self.assertEqual(content_hash(["V 1", "A x86_64"]), content_hash(["V 1", "A x86_64"]))
def test_hash_ignores_existing_c_line(self):
self.assertEqual(content_hash(["V 1", "C 00"]), content_hash(["V 1"]))
def test_hash_changes_when_body_changes(self):
self.assertNotEqual(content_hash(["V 1"]), content_hash(["V 2"]))
if __name__ == "__main__":
unittest.main()