mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-11-04 11:43:47 +00:00 
			
		
		
		
	[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