From 06e57990f7b12328a68471309ae460f320006354 Mon Sep 17 00:00:00 2001
From: pukkandan
Date: Tue, 14 Dec 2021 22:33:47 +0530
Subject: Allow multiple and nested configuration files
---
test/test_utils.py | 10 ++++++++++
1 file changed, 10 insertions(+)
(limited to 'test/test_utils.py')
diff --git a/test/test_utils.py b/test/test_utils.py
index 2e33308c7..1a9f71947 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -23,6 +23,7 @@ from yt_dlp.utils import (
caesar,
clean_html,
clean_podcast_url,
+ Config,
date_from_str,
datetime_from_str,
DateRange,
@@ -1701,6 +1702,15 @@ Line 1
self.assertEqual(format_bytes(1024**7), '1.00ZiB')
self.assertEqual(format_bytes(1024**8), '1.00YiB')
+ def test_hide_login_info(self):
+ self.assertEqual(Config.hide_login_info(['-u', 'foo', '-p', 'bar']),
+ ['-u', 'PRIVATE', '-p', 'PRIVATE'])
+ self.assertEqual(Config.hide_login_info(['-u']), ['-u'])
+ self.assertEqual(Config.hide_login_info(['-u', 'foo', '-u', 'bar']),
+ ['-u', 'PRIVATE', '-u', 'PRIVATE'])
+ self.assertEqual(Config.hide_login_info(['--username=foo']),
+ ['--username=PRIVATE'])
+
if __name__ == '__main__':
unittest.main()
--
cgit v1.2.3
From 6f32a0b5b70fe0f8b14c2946b40840b795044662 Mon Sep 17 00:00:00 2001
From: Zenon Mousmoulas
Date: Wed, 5 Jan 2022 20:37:49 +0200
Subject: [utils] Improve parsing for nested HTML elements (#2129)
and add functions to return the HTML of elements
Authored by: zmousm
---
test/test_utils.py | 107 +++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 92 insertions(+), 15 deletions(-)
(limited to 'test/test_utils.py')
diff --git a/test/test_utils.py b/test/test_utils.py
index 1a9f71947..c3ec798dc 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -44,6 +44,12 @@ from yt_dlp.utils import (
get_element_by_attribute,
get_elements_by_class,
get_elements_by_attribute,
+ get_element_html_by_class,
+ get_element_html_by_attribute,
+ get_elements_html_by_class,
+ get_elements_html_by_attribute,
+ get_elements_text_and_html_by_attribute,
+ get_element_text_and_html_by_tag,
InAdvancePagedList,
int_or_none,
intlist_to_bytes,
@@ -118,6 +124,7 @@ from yt_dlp.compat import (
compat_chr,
compat_etree_fromstring,
compat_getenv,
+ compat_HTMLParseError,
compat_os_name,
compat_setenv,
)
@@ -1575,46 +1582,116 @@ Line 1
self.assertEqual(urshift(3, 1), 1)
self.assertEqual(urshift(-3, 1), 2147483646)
+ GET_ELEMENT_BY_CLASS_TEST_STRING = '''
+ nice
+ '''
+
def test_get_element_by_class(self):
- html = '''
- nice
- '''
+ html = self.GET_ELEMENT_BY_CLASS_TEST_STRING
self.assertEqual(get_element_by_class('foo', html), 'nice')
self.assertEqual(get_element_by_class('no-such-class', html), None)
+ def test_get_element_html_by_class(self):
+ html = self.GET_ELEMENT_BY_CLASS_TEST_STRING
+
+ self.assertEqual(get_element_html_by_class('foo', html), html.strip())
+ self.assertEqual(get_element_by_class('no-such-class', html), None)
+
+ GET_ELEMENT_BY_ATTRIBUTE_TEST_STRING = '''
+ foo
+ '''
+
def test_get_element_by_attribute(self):
- html = '''
- nice
- '''
+ html = self.GET_ELEMENT_BY_CLASS_TEST_STRING
self.assertEqual(get_element_by_attribute('class', 'foo bar', html), 'nice')
self.assertEqual(get_element_by_attribute('class', 'foo', html), None)
self.assertEqual(get_element_by_attribute('class', 'no-such-foo', html), None)
- html = '''
- foo
- '''
+ html = self.GET_ELEMENT_BY_ATTRIBUTE_TEST_STRING
self.assertEqual(get_element_by_attribute('itemprop', 'author', html), 'foo')
+ def test_get_element_html_by_attribute(self):
+ html = self.GET_ELEMENT_BY_CLASS_TEST_STRING
+
+ self.assertEqual(get_element_html_by_attribute('class', 'foo bar', html), html.strip())
+ self.assertEqual(get_element_html_by_attribute('class', 'foo', html), None)
+ self.assertEqual(get_element_html_by_attribute('class', 'no-such-foo', html), None)
+
+ html = self.GET_ELEMENT_BY_ATTRIBUTE_TEST_STRING
+
+ self.assertEqual(get_element_html_by_attribute('itemprop', 'author', html), html.strip())
+
+ GET_ELEMENTS_BY_CLASS_TEST_STRING = '''
+ nicealso nice
+ '''
+ GET_ELEMENTS_BY_CLASS_RES = ['nice', 'also nice']
+
def test_get_elements_by_class(self):
- html = '''
- nicealso nice
- '''
+ html = self.GET_ELEMENTS_BY_CLASS_TEST_STRING
self.assertEqual(get_elements_by_class('foo', html), ['nice', 'also nice'])
self.assertEqual(get_elements_by_class('no-such-class', html), [])
+ def test_get_elements_html_by_class(self):
+ html = self.GET_ELEMENTS_BY_CLASS_TEST_STRING
+
+ self.assertEqual(get_elements_html_by_class('foo', html), self.GET_ELEMENTS_BY_CLASS_RES)
+ self.assertEqual(get_elements_html_by_class('no-such-class', html), [])
+
def test_get_elements_by_attribute(self):
- html = '''
- nicealso nice
- '''
+ html = self.GET_ELEMENTS_BY_CLASS_TEST_STRING
self.assertEqual(get_elements_by_attribute('class', 'foo bar', html), ['nice', 'also nice'])
self.assertEqual(get_elements_by_attribute('class', 'foo', html), [])
self.assertEqual(get_elements_by_attribute('class', 'no-such-foo', html), [])
+ def test_get_elements_html_by_attribute(self):
+ html = self.GET_ELEMENTS_BY_CLASS_TEST_STRING
+
+ self.assertEqual(get_elements_html_by_attribute('class', 'foo bar', html), self.GET_ELEMENTS_BY_CLASS_RES)
+ self.assertEqual(get_elements_html_by_attribute('class', 'foo', html), [])
+ self.assertEqual(get_elements_html_by_attribute('class', 'no-such-foo', html), [])
+
+ def test_get_elements_text_and_html_by_attribute(self):
+ html = self.GET_ELEMENTS_BY_CLASS_TEST_STRING
+
+ self.assertEqual(
+ get_elements_text_and_html_by_attribute('class', 'foo bar', html),
+ list(zip(['nice', 'also nice'], self.GET_ELEMENTS_BY_CLASS_RES)))
+ self.assertEqual(get_elements_text_and_html_by_attribute('class', 'foo', html), [])
+ self.assertEqual(get_elements_text_and_html_by_attribute('class', 'no-such-foo', html), [])
+
+ GET_ELEMENT_BY_TAG_TEST_STRING = '''
+ random text lorem ipsum
+
+ this should be returned
+
this should also be returned
+
+ this should also be returned
+
+ closing tag above should not trick, so this should also be returned
+
+ but this text should not be returned
+ '''
+ GET_ELEMENT_BY_TAG_RES_OUTERDIV_HTML = GET_ELEMENT_BY_TAG_TEST_STRING.strip()[32:276]
+ GET_ELEMENT_BY_TAG_RES_OUTERDIV_TEXT = GET_ELEMENT_BY_TAG_RES_OUTERDIV_HTML[5:-6]
+ GET_ELEMENT_BY_TAG_RES_INNERSPAN_HTML = GET_ELEMENT_BY_TAG_TEST_STRING.strip()[78:119]
+ GET_ELEMENT_BY_TAG_RES_INNERSPAN_TEXT = GET_ELEMENT_BY_TAG_RES_INNERSPAN_HTML[6:-7]
+
+ def test_get_element_text_and_html_by_tag(self):
+ html = self.GET_ELEMENT_BY_TAG_TEST_STRING
+
+ self.assertEqual(
+ get_element_text_and_html_by_tag('div', html),
+ (self.GET_ELEMENT_BY_TAG_RES_OUTERDIV_TEXT, self.GET_ELEMENT_BY_TAG_RES_OUTERDIV_HTML))
+ self.assertEqual(
+ get_element_text_and_html_by_tag('span', html),
+ (self.GET_ELEMENT_BY_TAG_RES_INNERSPAN_TEXT, self.GET_ELEMENT_BY_TAG_RES_INNERSPAN_HTML))
+ self.assertRaises(compat_HTMLParseError, get_element_text_and_html_by_tag, 'article', html)
+
def test_iri_to_uri(self):
self.assertEqual(
iri_to_uri('https://www.google.com/search?q=foo&ie=utf-8&oe=utf-8&client=firefox-b'),
--
cgit v1.2.3
From 0254f1627487c137abd201dea230247de6cb7f87 Mon Sep 17 00:00:00 2001
From: Zenon Mousmoulas
Date: Sun, 9 Jan 2022 20:14:56 +0200
Subject: [utils] Improve `get_elements_text_and_html_by_attribute` regex
(#2280)
Authored by: zmousm, pukkandan
---
test/test_utils.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'test/test_utils.py')
diff --git a/test/test_utils.py b/test/test_utils.py
index c3ec798dc..2c8f2c03e 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -1659,10 +1659,10 @@ Line 1
html = self.GET_ELEMENTS_BY_CLASS_TEST_STRING
self.assertEqual(
- get_elements_text_and_html_by_attribute('class', 'foo bar', html),
+ list(get_elements_text_and_html_by_attribute('class', 'foo bar', html)),
list(zip(['nice', 'also nice'], self.GET_ELEMENTS_BY_CLASS_RES)))
- self.assertEqual(get_elements_text_and_html_by_attribute('class', 'foo', html), [])
- self.assertEqual(get_elements_text_and_html_by_attribute('class', 'no-such-foo', html), [])
+ self.assertEqual(list(get_elements_text_and_html_by_attribute('class', 'foo', html)), [])
+ self.assertEqual(list(get_elements_text_and_html_by_attribute('class', 'no-such-foo', html)), [])
GET_ELEMENT_BY_TAG_TEST_STRING = '''
random text lorem ipsum
--
cgit v1.2.3
From 8bd1c00bf399ba7002fc21cd399c931e9d301bd8 Mon Sep 17 00:00:00 2001
From: pukkandan
Date: Wed, 19 Jan 2022 18:11:27 +0530
Subject: [utils] Handle `ss:xxx` in `parse_duration`
Closes #2388
---
test/test_utils.py | 2 ++
1 file changed, 2 insertions(+)
(limited to 'test/test_utils.py')
diff --git a/test/test_utils.py b/test/test_utils.py
index 2c8f2c03e..11a13a691 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -643,6 +643,8 @@ class TestUtil(unittest.TestCase):
self.assertEqual(parse_duration('PT1H0.040S'), 3600.04)
self.assertEqual(parse_duration('PT00H03M30SZ'), 210)
self.assertEqual(parse_duration('P0Y0M0DT0H4M20.880S'), 260.88)
+ self.assertEqual(parse_duration('01:02:03:050'), 3723.05)
+ self.assertEqual(parse_duration('103:050'), 103.05)
def test_fix_xml_ampersands(self):
self.assertEqual(
--
cgit v1.2.3
From 28469edd7da89fba67d22619f7a8f8d3864b4ac7 Mon Sep 17 00:00:00 2001
From: pukkandan
Date: Thu, 3 Feb 2022 23:14:46 +0530
Subject: Release 2022.02.03
---
test/test_utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'test/test_utils.py')
diff --git a/test/test_utils.py b/test/test_utils.py
index 11a13a691..6be5bb642 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -1133,7 +1133,7 @@ class TestUtil(unittest.TestCase):
def test_clean_html(self):
self.assertEqual(clean_html('a:\nb'), 'a: b')
- self.assertEqual(clean_html('a:\n "b"'), 'a: "b"')
+ self.assertEqual(clean_html('a:\n "b"'), 'a: "b"')
self.assertEqual(clean_html('a
\xa0b'), 'a\nb')
def test_intlist_to_bytes(self):
--
cgit v1.2.3