From: Bob Halley Date: Tue, 4 Aug 2020 13:05:19 +0000 (-0700) Subject: test constants with independent code X-Git-Tag: v2.1.0rc1~112^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c33265d94c275978169174a460de2c1fa0f1d517;p=thirdparty%2Fdnspython.git test constants with independent code --- 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()