[test_utils] Add more tests for xpath
This commit is contained in:
		
							parent
							
								
									8e636da499
								
							
						
					
					
						commit
						87f70ab39d
					
				| @ -57,7 +57,9 @@ from youtube_dl.utils import ( | |||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
|     version_tuple, |     version_tuple, | ||||||
|     xpath_with_ns, |     xpath_with_ns, | ||||||
|  |     xpath_element, | ||||||
|     xpath_text, |     xpath_text, | ||||||
|  |     xpath_attr, | ||||||
|     render_table, |     render_table, | ||||||
|     match_str, |     match_str, | ||||||
|     parse_dfxp_time_expr, |     parse_dfxp_time_expr, | ||||||
| @ -264,6 +266,16 @@ class TestUtil(unittest.TestCase): | |||||||
|         self.assertEqual(find('media:song/media:author').text, 'The Author') |         self.assertEqual(find('media:song/media:author').text, 'The Author') | ||||||
|         self.assertEqual(find('media:song/url').text, 'http://server.com/download.mp3') |         self.assertEqual(find('media:song/url').text, 'http://server.com/download.mp3') | ||||||
| 
 | 
 | ||||||
|  |     def test_xpath_element(self): | ||||||
|  |         doc = xml.etree.ElementTree.Element('root') | ||||||
|  |         div = xml.etree.ElementTree.SubElement(doc, 'div') | ||||||
|  |         p = xml.etree.ElementTree.SubElement(div, 'p') | ||||||
|  |         p.text = 'Foo' | ||||||
|  |         self.assertEqual(xpath_element(doc, 'div/p'), p) | ||||||
|  |         self.assertEqual(xpath_element(doc, 'div/bar', default='default'), 'default') | ||||||
|  |         self.assertTrue(xpath_element(doc, 'div/bar') is None) | ||||||
|  |         self.assertRaises(ExtractorError, xpath_element, doc, 'div/bar', fatal=True) | ||||||
|  | 
 | ||||||
|     def test_xpath_text(self): |     def test_xpath_text(self): | ||||||
|         testxml = '''<root> |         testxml = '''<root> | ||||||
|             <div> |             <div> | ||||||
| @ -272,9 +284,25 @@ class TestUtil(unittest.TestCase): | |||||||
|         </root>''' |         </root>''' | ||||||
|         doc = xml.etree.ElementTree.fromstring(testxml) |         doc = xml.etree.ElementTree.fromstring(testxml) | ||||||
|         self.assertEqual(xpath_text(doc, 'div/p'), 'Foo') |         self.assertEqual(xpath_text(doc, 'div/p'), 'Foo') | ||||||
|  |         self.assertEqual(xpath_text(doc, 'div/bar', default='default'), 'default') | ||||||
|         self.assertTrue(xpath_text(doc, 'div/bar') is None) |         self.assertTrue(xpath_text(doc, 'div/bar') is None) | ||||||
|         self.assertRaises(ExtractorError, xpath_text, doc, 'div/bar', fatal=True) |         self.assertRaises(ExtractorError, xpath_text, doc, 'div/bar', fatal=True) | ||||||
| 
 | 
 | ||||||
|  |     def test_xpath_attr(self): | ||||||
|  |         testxml = '''<root> | ||||||
|  |             <div> | ||||||
|  |                 <p x="a">Foo</p> | ||||||
|  |             </div> | ||||||
|  |         </root>''' | ||||||
|  |         doc = xml.etree.ElementTree.fromstring(testxml) | ||||||
|  |         self.assertEqual(xpath_attr(doc, 'div/p', 'x'), 'a') | ||||||
|  |         self.assertEqual(xpath_attr(doc, 'div/bar', 'x'), None) | ||||||
|  |         self.assertEqual(xpath_attr(doc, 'div/p', 'y'), None) | ||||||
|  |         self.assertEqual(xpath_attr(doc, 'div/bar', 'x', default='default'), 'default') | ||||||
|  |         self.assertEqual(xpath_attr(doc, 'div/p', 'y', default='default'), 'default') | ||||||
|  |         self.assertRaises(ExtractorError, xpath_attr, doc, 'div/bar', 'x', fatal=True) | ||||||
|  |         self.assertRaises(ExtractorError, xpath_attr, doc, 'div/p', 'y', fatal=True) | ||||||
|  | 
 | ||||||
|     def test_smuggle_url(self): |     def test_smuggle_url(self): | ||||||
|         data = {"ö": "ö", "abc": [3]} |         data = {"ö": "ö", "abc": [3]} | ||||||
|         url = 'https://foo.bar/baz?x=y#a' |         url = 'https://foo.bar/baz?x=y#a' | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user