From c33265d94c275978169174a460de2c1fa0f1d517 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Tue, 4 Aug 2020 06:05:19 -0700 Subject: [PATCH] test constants with independent code --- tests/test_constants.py | 38 ++++++++++++++++++++++++++++++++++++++ util/constants-tool | 32 +------------------------------- 2 files changed, 39 insertions(+), 31 deletions(-) create mode 100644 tests/test_constants.py diff --git a/tests/test_constants.py b/tests/test_constants.py new file mode 100644 index 00000000..e818bb9b --- /dev/null +++ b/tests/test_constants.py @@ -0,0 +1,38 @@ +# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license + +import unittest + +import dns.dnssec +import dns.rdtypes.dnskeybase +import dns.flags +import dns.rcode +import dns.opcode +import dns.message +import dns.update +import dns.edns + +import tests.util + + +class ConstantsTestCase(unittest.TestCase): + + def test_dnssec_constants(self): + tests.util.check_enum_exports(dns.dnssec, self.assertEqual, + only={dns.dnssec.Algorithm}) + tests.util.check_enum_exports(dns.rdtypes.dnskeybase, self.assertEqual) + + def test_flags_constants(self): + tests.util.check_enum_exports(dns.flags, self.assertEqual) + tests.util.check_enum_exports(dns.rcode, self.assertEqual) + tests.util.check_enum_exports(dns.opcode, self.assertEqual) + + def test_message_constants(self): + tests.util.check_enum_exports(dns.message, self.assertEqual) + tests.util.check_enum_exports(dns.update, self.assertEqual) + + def test_rdata_constants(self): + tests.util.check_enum_exports(dns.rdataclass, self.assertEqual) + tests.util.check_enum_exports(dns.rdatatype, self.assertEqual) + + def test_edns_constants(self): + tests.util.check_enum_exports(dns.edns, self.assertEqual) diff --git a/util/constants-tool b/util/constants-tool index bd843fa8..0fc7cd41 100755 --- a/util/constants-tool +++ b/util/constants-tool @@ -78,38 +78,8 @@ def generate(): print(l, file=nf) os.rename(new_filename, filename) -def check(): - ok = True - for enum_name in enum_names: - dot = enum_name.rindex('.') - module_name = enum_name[:dot] - type_name = enum_name[dot + 1:] - mod = import_module(module_name) - enum = getattr(mod, type_name) - for name, value in enum.__members__.items(): - try: - if value != getattr(mod, name): - ok = False - print(f'{name} != {value}', file=sys.stderr) - except Exception: - ok = False - print('exception checking', name, file=sys.stderr) - return ok - -def usage(): - print('usage: constants-tool [generate|check]', file=sys.stderr) - sys.exit(1) - def main(): - if len(sys.argv) < 2: - usage() - if sys.argv[1] == 'generate': - generate() - elif sys.argv[1] == 'check': - if not check(): - sys.exit(2) - else: - usage() + generate() if __name__ == '__main__': main() -- 2.47.3