From ae2a0f5622beaa6f402526f8a7b939419283a090 Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sat, 16 Jul 2022 00:39:25 -0400 Subject: New upstream version 1.22.4. --- test/test_formatter.py | 60 +++++++++++++++++++++++++++++++++++++++++++--- test/test_postprocessor.py | 29 +++++++++++----------- 2 files changed, 72 insertions(+), 17 deletions(-) (limited to 'test') diff --git a/test/test_formatter.py b/test/test_formatter.py index 5b8ca0a..aec091a 100644 --- a/test/test_formatter.py +++ b/test/test_formatter.py @@ -9,12 +9,13 @@ import os import sys +import time 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 +from gallery_dl import formatter, text, util # noqa E402 class TestFormatter(unittest.TestCase): @@ -98,6 +99,14 @@ class TestFormatter(unittest.TestCase): self._run_test("{missing[key]}", replacement, default) self._run_test("{missing:?a//}", "a" + default, default) + def test_fmt_func(self): + self._run_test("{t}" , self.kwdict["t"] , None, int) + self._run_test("{t}" , self.kwdict["t"] , None, util.identity) + self._run_test("{dt}", self.kwdict["dt"], None, util.identity) + self._run_test("{ds}", self.kwdict["dt"], None, text.parse_datetime) + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z}", self.kwdict["dt"], + None, util.identity) + def test_alternative(self): self._run_test("{a|z}" , "hElLo wOrLd") self._run_test("{z|a}" , "hElLo wOrLd") @@ -184,6 +193,31 @@ class TestFormatter(unittest.TestCase): self._run_test("{ds:D%Y}", "2010-01-01T01:00:00+0100") self._run_test("{l:D%Y}", "None") + def test_offset(self): + self._run_test("{dt:O 01:00}", "2010-01-01 01:00:00") + self._run_test("{dt:O+02:00}", "2010-01-01 02:00:00") + self._run_test("{dt:O-03:45}", "2009-12-31 20:15:00") + + self._run_test("{dt:O12}", "2010-01-01 12:00:00") + self._run_test("{dt:O-24}", "2009-12-31 00:00:00") + + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z/O1}", "2010-01-01 01:00:00") + self._run_test("{t!d:O2}", "2010-01-01 02:00:00") + + orig_daylight = time.daylight + orig_timezone = time.timezone + orig_altzone = time.altzone + try: + time.daylight = False + time.timezone = -3600 + self._run_test("{dt:O}", "2010-01-01 01:00:00") + time.timezone = 7200 + self._run_test("{dt:Olocal}", "2009-12-31 22:00:00") + finally: + time.daylight = orig_daylight + time.timezone = orig_timezone + time.altzone = orig_altzone + def test_chain_special(self): # multiple replacements self._run_test("{a:Rh/C/RE/e/RL/l/}", "Cello wOrld") @@ -202,6 +236,26 @@ class TestFormatter(unittest.TestCase): # parse and format datetime self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z/%Y%m%d}", "20100101") + def test_separator(self): + orig_separator = formatter._SEPARATOR + try: + formatter._SEPARATOR = "|" + self._run_test("{a:Rh|C|RE|e|RL|l|}", "Cello wOrld") + self._run_test("{d[b]!s:R1|Q|R2|A|R0|Y|}", "Y") + + formatter._SEPARATOR = "##" + self._run_test("{l:J-##Rb##E##}", "a-E-c") + self._run_test("{l:J-##[1:-1]}", "-b-") + + formatter._SEPARATOR = "\0" + self._run_test("{d[a]:?<\0>\0L1\0too long\0}", "") + self._run_test("{d[c]:?<\0>\0L5\0too long\0}", "") + + formatter._SEPARATOR = "?" + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z?%Y%m%d}", "20100101") + finally: + formatter._SEPARATOR = orig_separator + def test_globals_env(self): os.environ["FORMATTER_TEST"] = value = self.kwdict["a"] @@ -316,8 +370,8 @@ def noarg(): 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) + def _run_test(self, format_string, result, default=None, fmt=format): + fmt = formatter.parse(format_string, default, fmt) output = fmt.format_map(self.kwdict) self.assertEqual(output, result, format_string) diff --git a/test/test_postprocessor.py b/test/test_postprocessor.py index c382c0e..7a216bb 100644 --- a/test/test_postprocessor.py +++ b/test/test_postprocessor.py @@ -350,10 +350,6 @@ class MetadataTest(BasePostprocessorTest): class MtimeTest(BasePostprocessorTest): - def test_mtime_default(self): - pp = self._create() - self.assertEqual(pp.key, "date") - def test_mtime_datetime(self): self._create(None, {"date": datetime(1980, 1, 1)}) self._trigger() @@ -364,31 +360,36 @@ class MtimeTest(BasePostprocessorTest): self._trigger() self.assertEqual(self.pathfmt.kwdict["_mtime"], 315532800) - def test_mtime_custom(self): + def test_mtime_key(self): self._create({"key": "foo"}, {"foo": 315532800}) self._trigger() self.assertEqual(self.pathfmt.kwdict["_mtime"], 315532800) + def test_mtime_value(self): + self._create({"value": "{foo}"}, {"foo": 315532800}) + self._trigger() + self.assertEqual(self.pathfmt.kwdict["_mtime"], 315532800) + class ZipTest(BasePostprocessorTest): def test_zip_default(self): pp = self._create() - self.assertEqual(self.job.hooks["file"][0], pp.write) - self.assertEqual(pp.path, self.pathfmt.realdirectory) + self.assertEqual(self.job.hooks["file"][0], pp.write_fast) + self.assertEqual(pp.path, self.pathfmt.realdirectory[:-1]) self.assertEqual(pp.delete, True) self.assertEqual(pp.args, ( - pp.path[:-1] + ".zip", "a", zipfile.ZIP_STORED, True, + pp.path + ".zip", "a", zipfile.ZIP_STORED, True, )) self.assertTrue(pp.args[0].endswith("/test.zip")) def test_zip_safe(self): pp = self._create({"mode": "safe"}) self.assertEqual(self.job.hooks["file"][0], pp.write_safe) - self.assertEqual(pp.path, self.pathfmt.realdirectory) + self.assertEqual(pp.path, self.pathfmt.realdirectory[:-1]) self.assertEqual(pp.delete, True) self.assertEqual(pp.args, ( - pp.path[:-1] + ".zip", "a", zipfile.ZIP_STORED, True, + pp.path + ".zip", "a", zipfile.ZIP_STORED, True, )) self.assertTrue(pp.args[0].endswith("/test.zip")) @@ -400,7 +401,7 @@ class ZipTest(BasePostprocessorTest): }) self.assertEqual(pp.delete, False) self.assertEqual(pp.args, ( - pp.path[:-1] + ".cbz", "a", zipfile.ZIP_DEFLATED, True, + pp.path + ".cbz", "a", zipfile.ZIP_DEFLATED, True, )) self.assertTrue(pp.args[0].endswith("/test.cbz")) @@ -439,9 +440,9 @@ class ZipTest(BasePostprocessorTest): with zipfile.ZipFile(pp.zfile.filename) as file: nti = file.NameToInfo self.assertEqual(len(pp.zfile.NameToInfo), 3) - self.assertIn("file0.ext", pp.zfile.NameToInfo) - self.assertIn("file1.ext", pp.zfile.NameToInfo) - self.assertIn("file2.ext", pp.zfile.NameToInfo) + self.assertIn("file0.ext", nti) + self.assertIn("file1.ext", nti) + self.assertIn("file2.ext", nti) os.unlink(pp.zfile.filename) -- cgit v1.2.3