aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_traversal.py17
-rw-r--r--test/test_utils.py14
2 files changed, 30 insertions, 1 deletions
diff --git a/test/test_traversal.py b/test/test_traversal.py
index 9179dadda..f1d123bd6 100644
--- a/test/test_traversal.py
+++ b/test/test_traversal.py
@@ -12,9 +12,10 @@ from yt_dlp.utils import (
str_or_none,
)
from yt_dlp.utils.traversal import (
- traverse_obj,
require,
subs_list_to_dict,
+ traverse_obj,
+ trim_str,
)
_TEST_DATA = {
@@ -495,6 +496,20 @@ class TestTraversalHelpers:
{'url': 'https://example.com/subs/en2', 'ext': 'ext'},
]}, '`quality` key should sort subtitle list accordingly'
+ def test_trim_str(self):
+ with pytest.raises(TypeError):
+ trim_str('positional')
+
+ assert callable(trim_str(start='a'))
+ assert trim_str(start='ab')('abc') == 'c'
+ assert trim_str(end='bc')('abc') == 'a'
+ assert trim_str(start='a', end='c')('abc') == 'b'
+ assert trim_str(start='ab', end='c')('abc') == ''
+ assert trim_str(start='a', end='bc')('abc') == ''
+ assert trim_str(start='ab', end='bc')('abc') == ''
+ assert trim_str(start='abc', end='abc')('abc') == ''
+ assert trim_str(start='', end='')('abc') == 'abc'
+
class TestDictGet:
def test_dict_get(self):
diff --git a/test/test_utils.py b/test/test_utils.py
index d4b846f56..04f91547a 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -4,6 +4,7 @@
import os
import sys
import unittest
+import unittest.mock
import warnings
import datetime as dt
@@ -71,6 +72,7 @@ from yt_dlp.utils import (
intlist_to_bytes,
iri_to_uri,
is_html,
+ join_nonempty,
js_to_json,
limit_length,
locked_file,
@@ -343,11 +345,13 @@ class TestUtil(unittest.TestCase):
self.assertEqual(remove_start(None, 'A - '), None)
self.assertEqual(remove_start('A - B', 'A - '), 'B')
self.assertEqual(remove_start('B - A', 'A - '), 'B - A')
+ self.assertEqual(remove_start('non-empty', ''), 'non-empty')
def test_remove_end(self):
self.assertEqual(remove_end(None, ' - B'), None)
self.assertEqual(remove_end('A - B', ' - B'), 'A')
self.assertEqual(remove_end('B - A', ' - B'), 'B - A')
+ self.assertEqual(remove_end('non-empty', ''), 'non-empty')
def test_remove_quotes(self):
self.assertEqual(remove_quotes(None), None)
@@ -2148,6 +2152,16 @@ Line 1
assert run_shell(args) == expected
assert run_shell(shell_quote(args, shell=True)) == expected
+ def test_partial_application(self):
+ assert callable(int_or_none(scale=10)), 'missing positional parameter should apply partially'
+ assert int_or_none(10, scale=0.1) == 100, 'positionally passed argument should call function'
+ assert int_or_none(v=10) == 10, 'keyword passed positional should call function'
+ assert int_or_none(scale=0.1)(10) == 100, 'call after partial applicatino should call the function'
+
+ assert callable(join_nonempty(delim=', ')), 'varargs positional should apply partially'
+ assert callable(join_nonempty()), 'varargs positional should apply partially'
+ assert join_nonempty(None, delim=', ') == '', 'passed varargs should call the function'
+
if __name__ == '__main__':
unittest.main()