GeezerVison is showing github.com — Remove `check_string` and `check_mapping` from `test_xml_etree` · Issue #100933 · python/cpython
Remove check_string and check_mapping from test_xml_etree #100933DescriptionRight now one test in test_xml_etree contains two helpers called check_mapping and check_string:
|
def check_string(string): |
|
len(string) |
|
for char in string: |
|
self.assertEqual(len(char), 1, |
|
msg="expected one-character string, got %r" % char) |
|
new_string = string + "" |
|
new_string = string + " " |
|
string[:0] |
|
|
|
def check_mapping(mapping): |
|
len(mapping) |
|
keys = mapping.keys() |
|
items = mapping.items() |
|
for key in keys: |
|
item = mapping[key] |
|
mapping["key"] = "value" |
|
self.assertEqual(mapping["key"], "value", |
|
msg="expected value string, got %r" % mapping["key"]) |
|
|
|
def check_element(element): |
|
self.assertTrue(ET.iselement(element), msg="not an element") |
|
direlem = dir(element) |
|
for attr in 'tag', 'attrib', 'text', 'tail': |
|
self.assertTrue(hasattr(element, attr), |
|
msg='no %s member' % attr) |
|
self.assertIn(attr, direlem, |
|
msg='no %s visible by dir' % attr) |
|
|
|
check_string(element.tag) |
|
check_mapping(element.attrib) |
|
if element.text is not None: |
|
check_string(element.text) |
|
if element.tail is not None: |
|
check_string(element.tail) |
|
for elem in element: |
|
check_element(elem) |
It originates from very old code:
|
def check_string(string): |
|
len(string) |
|
for char in string: |
|
if len(char) != 1: |
|
print("expected one-character string, got %r" % char) |
|
new_string = string + "" |
|
new_string = string + " " |
|
string[:0] |
|
|
|
def check_mapping(mapping): |
|
len(mapping) |
|
keys = mapping.keys() |
|
items = mapping.items() |
|
for key in keys: |
|
item = mapping[key] |
|
mapping["key"] = "value" |
|
if mapping["key"] != "value": |
|
print("expected value string, got %r" % mapping["key"]) |
|
|
|
def check_element(element): |
|
if not ET.iselement(element): |
|
print("not an element") |
|
if not hasattr(element, "tag"): |
|
print("no tag member") |
|
if not hasattr(element, "attrib"): |
|
print("no attrib member") |
|
if not hasattr(element, "text"): |
|
print("no text member") |
|
if not hasattr(element, "tail"): |
|
print("no tail member") |
It is half-baked with lots of obvious things to be improved.
I think that it is safe just to replace them with:
check_string to assertIsInstance(str)
check_mapping to assertIsInstance(dict)
It is more correct, because both Python and C implementations only use str and dict for checked attributes. And in this case we can skip re-inventing tests for mapping and string.
Linked PRs
Activitychanged the title [-]Remove `check_string` and `chec_mapping` from `test_xml_etree`[/-] [+]Remove `check_string` and `check_mapping` from `test_xml_etree`[/+] on Jan 11, 2023hauntsaninja commented on Feb 9, 2023
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|