mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
bpo-40624: Add support for the XPath != operator in xml.etree (GH-22147)
This commit is contained in:
parent
4eb41d055e
commit
97e8b1eaea
4 changed files with 78 additions and 7 deletions
|
|
@ -2852,8 +2852,12 @@ class ElementFindTest(unittest.TestCase):
|
|||
['tag'] * 3)
|
||||
self.assertEqual(summarize_list(e.findall('.//tag[@class="a"]')),
|
||||
['tag'])
|
||||
self.assertEqual(summarize_list(e.findall('.//tag[@class!="a"]')),
|
||||
['tag'] * 2)
|
||||
self.assertEqual(summarize_list(e.findall('.//tag[@class="b"]')),
|
||||
['tag'] * 2)
|
||||
self.assertEqual(summarize_list(e.findall('.//tag[@class!="b"]')),
|
||||
['tag'])
|
||||
self.assertEqual(summarize_list(e.findall('.//tag[@id]')),
|
||||
['tag'])
|
||||
self.assertEqual(summarize_list(e.findall('.//section[tag]')),
|
||||
|
|
@ -2875,6 +2879,19 @@ class ElementFindTest(unittest.TestCase):
|
|||
self.assertEqual(summarize_list(e.findall(".//section[ tag = 'subtext' ]")),
|
||||
['section'])
|
||||
|
||||
# Negations of above tests. They match nothing because the sole section
|
||||
# tag has subtext.
|
||||
self.assertEqual(summarize_list(e.findall(".//section[tag!='subtext']")),
|
||||
[])
|
||||
self.assertEqual(summarize_list(e.findall(".//section[tag !='subtext']")),
|
||||
[])
|
||||
self.assertEqual(summarize_list(e.findall(".//section[tag!= 'subtext']")),
|
||||
[])
|
||||
self.assertEqual(summarize_list(e.findall(".//section[tag != 'subtext']")),
|
||||
[])
|
||||
self.assertEqual(summarize_list(e.findall(".//section[ tag != 'subtext' ]")),
|
||||
[])
|
||||
|
||||
self.assertEqual(summarize_list(e.findall(".//tag[.='subtext']")),
|
||||
['tag'])
|
||||
self.assertEqual(summarize_list(e.findall(".//tag[. ='subtext']")),
|
||||
|
|
@ -2890,6 +2907,24 @@ class ElementFindTest(unittest.TestCase):
|
|||
self.assertEqual(summarize_list(e.findall(".//tag[.= ' subtext']")),
|
||||
[])
|
||||
|
||||
# Negations of above tests.
|
||||
# Matches everything but the tag containing subtext
|
||||
self.assertEqual(summarize_list(e.findall(".//tag[.!='subtext']")),
|
||||
['tag'] * 3)
|
||||
self.assertEqual(summarize_list(e.findall(".//tag[. !='subtext']")),
|
||||
['tag'] * 3)
|
||||
self.assertEqual(summarize_list(e.findall('.//tag[.!= "subtext"]')),
|
||||
['tag'] * 3)
|
||||
self.assertEqual(summarize_list(e.findall('.//tag[ . != "subtext" ]')),
|
||||
['tag'] * 3)
|
||||
self.assertEqual(summarize_list(e.findall(".//tag[. != 'subtext']")),
|
||||
['tag'] * 3)
|
||||
# Matches all tags.
|
||||
self.assertEqual(summarize_list(e.findall(".//tag[. != 'subtext ']")),
|
||||
['tag'] * 4)
|
||||
self.assertEqual(summarize_list(e.findall(".//tag[.!= ' subtext']")),
|
||||
['tag'] * 4)
|
||||
|
||||
# duplicate section => 2x tag matches
|
||||
e[1] = e[2]
|
||||
self.assertEqual(summarize_list(e.findall(".//section[tag = 'subtext']")),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue