From fc8c5e642017e2b4e5299e2093e72b316479690d Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Wed, 10 Nov 2021 01:26:06 -0500 Subject: New upstream version 1.19.2. --- test/test_formatter.py | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) (limited to 'test') diff --git a/test/test_formatter.py b/test/test_formatter.py index 70201f3..088b45b 100644 --- a/test/test_formatter.py +++ b/test/test_formatter.py @@ -11,6 +11,7 @@ import os import sys import unittest import datetime +import tempfile sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from gallery_dl import formatter # noqa E402 @@ -173,6 +174,96 @@ class TestFormatter(unittest.TestCase): self._run_test("{d[a]:?/L1/too long/}", "") self._run_test("{d[c]:?/L5/too long/}", "") + def test_globals_env(self): + os.environ["FORMATTER_TEST"] = value = self.kwdict["a"] + + self._run_test("{_env[FORMATTER_TEST]}" , value) + self._run_test("{_env[FORMATTER_TEST]!l}", value.lower()) + self._run_test("{z|_env[FORMATTER_TEST]}", value) + + def test_globals_now(self): + fmt = formatter.parse("{_now}") + out1 = fmt.format_map(self.kwdict) + self.assertRegex(out1, r"^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d(\.\d+)?$") + + out = formatter.parse("{_now:%Y%m%d}").format_map(self.kwdict) + now = datetime.datetime.now() + self.assertRegex(out, r"^\d{8}$") + self.assertEqual(out, format(now, "%Y%m%d")) + + out = formatter.parse("{z|_now:%Y}").format_map(self.kwdict) + self.assertRegex(out, r"^\d{4}$") + self.assertEqual(out, format(now, "%Y")) + + out2 = fmt.format_map(self.kwdict) + self.assertRegex(out1, r"^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d(\.\d+)?$") + self.assertNotEqual(out1, out2) + + def test_template(self): + with tempfile.TemporaryDirectory() as tmpdirname: + path1 = os.path.join(tmpdirname, "tpl1") + path2 = os.path.join(tmpdirname, "tpl2") + + with open(path1, "w") as fp: + fp.write("{a}") + fmt1 = formatter.parse("\fT " + path1) + + with open(path2, "w") as fp: + fp.write("{a!u:Rh/C/}\nFooBar") + fmt2 = formatter.parse("\fT " + path2) + + self.assertEqual(fmt1.format_map(self.kwdict), self.kwdict["a"]) + self.assertEqual(fmt2.format_map(self.kwdict), "HELLO WORLD\nFooBar") + + with self.assertRaises(OSError): + formatter.parse("\fT /") + + def test_expression(self): + self._run_test("\fE a", self.kwdict["a"]) + self._run_test("\fE name * 2 + ' ' + a", "{}{} {}".format( + self.kwdict["name"], self.kwdict["name"], self.kwdict["a"])) + + def test_module(self): + with tempfile.TemporaryDirectory() as tmpdirname: + path = os.path.join(tmpdirname, "testmod.py") + + with open(path, "w") as fp: + fp.write(""" +def gentext(kwdict): + name = kwdict.get("Name") or kwdict.get("name") or "foo" + return "'{title1}' by {}".format(name, **kwdict) + +def lengths(kwdict): + a = 0 + for k, v in kwdict.items(): + try: + a += len(v) + except TypeError: + pass + return format(a) + +def noarg(): + return "" +""") + sys.path.insert(0, tmpdirname) + try: + fmt1 = formatter.parse("\fM testmod:gentext") + fmt2 = formatter.parse("\fM testmod:lengths") + fmt3 = formatter.parse("\fM testmod:noarg") + + with self.assertRaises(AttributeError): + formatter.parse("\fM testmod:missing") + with self.assertRaises(ImportError): + formatter.parse("\fM missing:missing") + finally: + sys.path.pop(0) + + self.assertEqual(fmt1.format_map(self.kwdict), "'Title' by Name") + self.assertEqual(fmt2.format_map(self.kwdict), "65") + + with self.assertRaises(TypeError): + self.assertEqual(fmt3.format_map(self.kwdict), "") + def _run_test(self, format_string, result, default=None): fmt = formatter.parse(format_string, default) output = fmt.format_map(self.kwdict) -- cgit v1.2.3