From fe468f5f2887ed8de0a21f26b6b3c5f1c3878c54 Mon Sep 17 00:00:00 2001 From: Edvard Rejthar Date: Tue, 26 Nov 2024 18:02:41 +0100 Subject: [PATCH] WIP media magic tests --- .github/workflows/run-unittest.yml | 2 +- deduplidog/deduplidog.py | 1 + tests.py | 184 ------------------ tests/setup.py | 123 +++++++++++- tests/test_data/disk/folder1/1.txt | 1 + tests/test_data/disk/folder1/2.txt | 1 + .../test_data/disk/folder1/TODO_licence.jpeg | Bin 0 -> 74961 bytes tests/test_data/disk/folder1/unique.txt | 1 + .../disk/folder2/1-different-name.txt | 1 + tests/test_data/disk/folder2/2.txt | 1 + .../test_data/disk/folder2/TODO_licence.jpeg | Bin 0 -> 39505 bytes .../disk/folder2/TODO_licence_other_name.jpeg | Bin 0 -> 39505 bytes tests/test_data/disk/folder2/folder2.1/1.txt | 1 + tests/test_deduplidog.py | 103 ++-------- tests/test_media_magic.py | 65 +++++++ 15 files changed, 204 insertions(+), 280 deletions(-) delete mode 100644 tests.py create mode 100644 tests/test_data/disk/folder1/1.txt create mode 100644 tests/test_data/disk/folder1/2.txt create mode 100644 tests/test_data/disk/folder1/TODO_licence.jpeg create mode 100644 tests/test_data/disk/folder1/unique.txt create mode 100644 tests/test_data/disk/folder2/1-different-name.txt create mode 100644 tests/test_data/disk/folder2/2.txt create mode 100644 tests/test_data/disk/folder2/TODO_licence.jpeg create mode 100644 tests/test_data/disk/folder2/TODO_licence_other_name.jpeg create mode 100644 tests/test_data/disk/folder2/folder2.1/1.txt create mode 100644 tests/test_media_magic.py diff --git a/.github/workflows/run-unittest.yml b/.github/workflows/run-unittest.yml index 1da2119..8b8ae1e 100644 --- a/.github/workflows/run-unittest.yml +++ b/.github/workflows/run-unittest.yml @@ -15,4 +15,4 @@ jobs: - name: Install dependencies run: pip install -e . - name: Run tests - run: python3 tests.py \ No newline at end of file + run: python3 -m unittest discover tests \ No newline at end of file diff --git a/deduplidog/deduplidog.py b/deduplidog/deduplidog.py index 98d18aa..731e039 100644 --- a/deduplidog/deduplidog.py +++ b/deduplidog/deduplidog.py @@ -255,6 +255,7 @@ def start(self, interface=None): self.reset() self.check() self.perform() + return self def perform(self): # build file list of the originals diff --git a/tests.py b/tests.py deleted file mode 100644 index 684fa87..0000000 --- a/tests.py +++ /dev/null @@ -1,184 +0,0 @@ - -from collections.abc import Mapping -from dataclasses import dataclass -from itertools import chain -import os -from pathlib import Path -from tempfile import TemporaryDirectory, mkdtemp -from typing import Self -from unittest import TestCase, main -import random -import string - -from deduplidog import Deduplidog -from deduplidog.deduplidog import Action, Execution, Match, Media, Helper - - -@dataclass -class FileRepresentation: - path: Path - mtime: int = 0 - "relative mtime" - text_seed: int = 1 - - def __post_init__(self): - self._mtime = round(self.path.parent.parent.stat().st_mtime + self.mtime) - - def write(self): - "Writes the representation to the disk." - self.path.write_text(self.get_text()) - os.utime(self.path, (self._mtime,)*2) - return self - - def check(self, test: TestCase): - "Checks the disk whether it contains the file represented." - test.assertTrue(self.path.exists(), msg=self.path) - test.assertEqual(self.get_text(), self.path.read_text(), msg=self.path) - test.assertEqual(self._mtime, self.path.stat().st_mtime, msg=self.path) - - def get_text(self): - random.seed(self.text_seed) - return ''.join(random.choices(string.ascii_letters + string.digits, k=10+self.text_seed*10)) - - def prefixed(self): - self.path = self.path.with_name("✓" + self.path.name) - - def suck(self, other: Self): - "Use the other file. Use its name, however stays in the current directory." - self.path = self.path.with_name(other.path.name) - self._mtime = other._mtime - self.text_seed = other.text_seed - - -@dataclass -class FolderState(Mapping): - test_case: TestCase - _work_dir: Path - _original_dir: Path - work_files: dict[str, FileRepresentation] - originals: dict[str, FileRepresentation] - - def __iter__(self): - yield from ('work_dir', 'original_dir') - - def __len__(self): - return 2 - - def __getitem__(self, key): - if key == 'work_dir': - return self._work_dir - elif key == 'original_dir': - return self._original_dir - else: - raise KeyError(key) - - def check(self, prefixed: tuple[int] = None, suck: tuple[int] = None): - """Checks the file changes - - :param prefixed: These files in the work dir are expected to be prefixed - :param suck: These files in the work dir are expected to be sucked from the originals - """ - [self.work_files[f"file_{i}"].prefixed() for i in prefixed or ()] - [self.work_files[f"file_{i}"].suck(self.originals[f"file_{i}"]) for i in suck or ()] - [f.check(self.test_case) for f in chain(self.work_files.values(), self.originals.values())] - - -def drun(action=None, execution=None, match=None, media=None, helper=None, **kw): - def _(l: list | dict): - if isinstance(l, list): - return {k: True for k in l} - return l - return Deduplidog(Action(**_(action or [])), - Execution(**_(execution or [])), - Match(**_(match or [])), - Media(**_(media or [])), - Helper(**_(helper or [])), - **kw).start() - - -class TestDeduplidog(TestCase): - - def prepare(self, testing_dir: str = None): - self.temp = mkdtemp() # TemporaryDirectory() NOTE - # temp = Path(testing_dir) if testing_dir else self.temp.name NOTE - temp = str(self.temp) - originals = Path(temp, "originals") - work_dir = Path(temp, "work_dir") - if not testing_dir: - originals.mkdir() - work_dir.mkdir() - - original_files = {name: FileRepresentation(originals / name).write() - for name in (f"file_{i}" for i in range(12))} - work_files = {name: FileRepresentation(work_dir / name, *rest).write() for name, *rest in ( - ("file_1", 0, 2), - ("file_2", 0, 3), - ("file_4", 3600), - ("file_5", 7200), - ("file_6", 3601), - ("file_7", 3599), - ("file_8", -3600), - ("file_9", -10), - ("file_10", -3600*24*365), - ("file_11", 0), - )} - - return FolderState(self, work_dir, originals, work_files, original_files) - - def test_simple_prefix(self): - state = self.prepare() - drun(["rename", "execute"], **state) - state.check(prefixed=(11,)) - - def test_date(self): - state = self.prepare() - drun(["rename", "execute"], ["neglect_warning"], ["ignore_date"], **state) - state.check(prefixed=(4, 5, 6, 7, 8, 9, 10, 11)) - state = self.prepare() - drun(["rename", "execute"], match=["ignore_date"], **state) - state.check(prefixed=(4, 5, 6, 7, 11)) - - state = self.prepare() - drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 1}, **state) - state.check(prefixed=(4, 7, 8, 9, 11)) - state = self.prepare() - drun(["rename", "execute"], match={"tolerate_hour": 1}, **state) - state.check(prefixed=(4, 7, 11)) - - state = self.prepare() - drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 2}, **state) - state.check(prefixed=(4, 5, 6, 7, 8, 9, 11)) - state = self.prepare() - drun(["rename", "execute"], match={"tolerate_hour": 2}, **state) - state.check(prefixed=(4, 5, 6, 7, 11)) - - def test_replace_with_original(self): - state = self.prepare() - drun(["replace_with_original", "execute"], ["neglect_warning"], **state) - state.work_files["file_11"].suck(state.originals["file_11"]) - state.check() - - state = self.prepare() - drun(["replace_with_original", "execute"], ["neglect_warning"], {"tolerate_hour": 2}, **state) - state.check(suck=(4, 5, 6, 7, 8, 9, 11)) - - def test_invert_selection(self): - state = self.prepare() - with self.assertRaises(AssertionError): - drun(["replace_with_original", "execute"], match={"tolerate_hour": 2, "invert_selection": True}, **state) - drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 2, "invert_selection": False}, **state) - state.check(prefixed=(4, 5, 6, 7, 8, 9, 11)) - - state = self.prepare() - drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 2, "invert_selection": True}, **state) - state.check(prefixed=(1, 2, 10)) - - # No media file in the test case. - # def test_skip_bigger(self): - # state = self.prepare() - # Deduplidog(*state, rename=True, execute=True, ignore_date=True, skip_bigger=True, `media_magic=True`) - # state.check() - - -if __name__ == '__main__': - main() diff --git a/tests/setup.py b/tests/setup.py index a487653..a3bd649 100644 --- a/tests/setup.py +++ b/tests/setup.py @@ -1,15 +1,132 @@ +import os +import random +import string +from collections.abc import Mapping +from dataclasses import MISSING, dataclass, field +from itertools import chain +from pathlib import Path +from tempfile import TemporaryDirectory, mkdtemp +from typing import Self +from unittest import TestCase, main + from deduplidog import Deduplidog -from deduplidog.deduplidog import Action, Execution, Match, Media, Helper +from deduplidog.deduplidog import Action, Execution, Helper, Match, Media -def drun(action=None, execution=None, match=None, media=None, helper=None, **kw): +def drun(action=None, execution=None, match=None, media=None, helper=None, confirm_one_by_one=False, **kw): def _(l: list | dict): if isinstance(l, list): return {k: True for k in l} return l + + # as confirm_one_by_one affects the testing, this option is lifted up here + exec = {"confirm_one_by_one": confirm_one_by_one} if confirm_one_by_one is not None else {} + return Deduplidog(Action(**_(action or [])), - Execution(**_(execution or [])), + Execution(**_(execution or {}) | exec), Match(**_(match or [])), Media(**_(media or [])), Helper(**_(helper or [])), **kw).start() + + +@dataclass +class FileReal: + path: Path + + def __post_init__(self): + self._mtime = self.path.stat().st_mtime + + def check(self, test: TestCase): + "Checks the disk whether it contains the file represented." + test.assertTrue(self.path.exists(), msg=self.path) + test.assertEqual(self._mtime, self.path.stat().st_mtime, msg=self.path) + + def prefixed(self): + self.path = self.path.with_name("✓" + self.path.name) + + def suck(self, other: Self): + "Use the other file. Use its name, however stays in the current directory." + self.path = self.path.with_name(other.path.name) + self._mtime = other._mtime + + +@dataclass +class FileRepresentation(FileReal): + # path: Path + + mtime: int = 0 + "relative mtime" + text_seed: int = 1 + + def __post_init__(self): + self._mtime = round(self.path.parent.parent.stat().st_mtime + self.mtime) + + def write(self): + "Writes the representation to the disk." + self.path.write_text(self.get_text()) + os.utime(self.path, (self._mtime,)*2) + return self + + def check(self, test: TestCase): + super().check(test) + if self.path.suffix not in (".jpeg",): + test.assertEqual(self.get_text(), self.path.read_text(), msg=self.path) + + def get_text(self): + random.seed(self.text_seed) + return ''.join(random.choices(string.ascii_letters + string.digits, k=10+self.text_seed*10)) + + def suck(self, other: Self): + super().suck(other) + self.text_seed = other.text_seed + + +@dataclass +class FolderState(Mapping): + test_case: TestCase + _work_dir: Path + _original_dir: Path + work_files: dict[str, FileReal] = field(default_factory=lambda: {}) + originals: dict[str, FileReal] = field(default_factory=lambda: {}) + + def __post_init__(self): + def _(dir_: Path, files_: dict): + for file in dir_.rglob('*'): + if file.is_file(): + files_[str(file)] = FileReal(path=file) + + if not self.work_files: + _(self._work_dir, self.work_files) + if not self.originals: + _(self._original_dir, self.originals) + + def __iter__(self): + yield from ('work_dir', 'original_dir') + + def __len__(self): + return 2 + + def __getitem__(self, key): + if key == 'work_dir': + return self._work_dir + elif key == 'original_dir': + return self._original_dir + else: + raise KeyError(key) + + def check(self, prefixed: tuple[str] = None, suck: tuple[str] = None, prefixed_i: tuple[int] = None, suck_i: tuple[int] = None): + """Checks the file changes + + :param prefixed: These files in the work dir are expected to be prefixed + :param suck: These files in the work dir are expected to be sucked from the originals + :param prefixed_i: These file_{i} in the work dir are expected to be prefixed + :param suck_i: These file_{i} in the work dir are expected to be sucked from the originals + """ + [self.work_files[str(self._work_dir / f)].prefixed() for f in prefixed or ()] + [self.work_files[str(self._work_dir / f)].suck(self.originals[str(self._original_dir / f)]) for f in suck or ()] + + [self.work_files[f"file_{i}"].prefixed() for i in prefixed_i or ()] + [self.work_files[f"file_{i}"].suck(self.originals[f"file_{i}"]) for i in suck_i or ()] + + [f.check(self.test_case) for f in chain(self.work_files.values(), self.originals.values())] diff --git a/tests/test_data/disk/folder1/1.txt b/tests/test_data/disk/folder1/1.txt new file mode 100644 index 0000000..5626abf --- /dev/null +++ b/tests/test_data/disk/folder1/1.txt @@ -0,0 +1 @@ +one diff --git a/tests/test_data/disk/folder1/2.txt b/tests/test_data/disk/folder1/2.txt new file mode 100644 index 0000000..f719efd --- /dev/null +++ b/tests/test_data/disk/folder1/2.txt @@ -0,0 +1 @@ +two diff --git a/tests/test_data/disk/folder1/TODO_licence.jpeg b/tests/test_data/disk/folder1/TODO_licence.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a191f443a4656bd29a330e79a648ae53c5e4e7ce GIT binary patch literal 74961 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%0A`iEoo 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 literal 0 HcmV?d00001 diff --git a/tests/test_data/disk/folder1/unique.txt b/tests/test_data/disk/folder1/unique.txt new file mode 100644 index 0000000..96ab826 --- /dev/null +++ b/tests/test_data/disk/folder1/unique.txt @@ -0,0 +1 @@ +this file is unique diff --git a/tests/test_data/disk/folder2/1-different-name.txt b/tests/test_data/disk/folder2/1-different-name.txt new file mode 100644 index 0000000..5626abf --- /dev/null +++ b/tests/test_data/disk/folder2/1-different-name.txt @@ -0,0 +1 @@ +one diff --git a/tests/test_data/disk/folder2/2.txt b/tests/test_data/disk/folder2/2.txt new file mode 100644 index 0000000..f719efd --- /dev/null +++ b/tests/test_data/disk/folder2/2.txt @@ -0,0 +1 @@ +two diff --git a/tests/test_data/disk/folder2/TODO_licence.jpeg b/tests/test_data/disk/folder2/TODO_licence.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c43f0a40b14aa9c55a276849987b9aeddca6f292 GIT binary patch literal 39505 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 literal 0 HcmV?d00001 diff --git a/tests/test_data/disk/folder2/TODO_licence_other_name.jpeg b/tests/test_data/disk/folder2/TODO_licence_other_name.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c43f0a40b14aa9c55a276849987b9aeddca6f292 GIT binary patch literal 39505 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 literal 0 HcmV?d00001 diff --git a/tests/test_data/disk/folder2/folder2.1/1.txt b/tests/test_data/disk/folder2/folder2.1/1.txt new file mode 100644 index 0000000..5626abf --- /dev/null +++ b/tests/test_data/disk/folder2/folder2.1/1.txt @@ -0,0 +1 @@ +one diff --git a/tests/test_deduplidog.py b/tests/test_deduplidog.py index 8912be5..692d9e6 100644 --- a/tests/test_deduplidog.py +++ b/tests/test_deduplidog.py @@ -1,85 +1,10 @@ -from collections.abc import Mapping -from dataclasses import dataclass -from itertools import chain -import os from pathlib import Path from tempfile import TemporaryDirectory, mkdtemp from typing import Self from unittest import TestCase, main -import random -import string -from tests.setup import drun - - -@dataclass -class FileRepresentation: - path: Path - mtime: int = 0 - "relative mtime" - text_seed: int = 1 - - def __post_init__(self): - self._mtime = round(self.path.parent.parent.stat().st_mtime + self.mtime) - - def write(self): - "Writes the representation to the disk." - self.path.write_text(self.get_text()) - os.utime(self.path, (self._mtime,)*2) - return self - - def check(self, test: TestCase): - "Checks the disk whether it contains the file represented." - test.assertTrue(self.path.exists(), msg=self.path) - test.assertEqual(self.get_text(), self.path.read_text(), msg=self.path) - test.assertEqual(self._mtime, self.path.stat().st_mtime, msg=self.path) - - def get_text(self): - random.seed(self.text_seed) - return ''.join(random.choices(string.ascii_letters + string.digits, k=10+self.text_seed*10)) - - def prefixed(self): - self.path = self.path.with_name("✓" + self.path.name) - - def suck(self, other: Self): - "Use the other file. Use its name, however stays in the current directory." - self.path = self.path.with_name(other.path.name) - self._mtime = other._mtime - self.text_seed = other.text_seed - - -@dataclass -class FolderState(Mapping): - test_case: TestCase - _work_dir: Path - _original_dir: Path - work_files: dict[str, FileRepresentation] - originals: dict[str, FileRepresentation] - - def __iter__(self): - yield from ('work_dir', 'original_dir') - - def __len__(self): - return 2 - - def __getitem__(self, key): - if key == 'work_dir': - return self._work_dir - elif key == 'original_dir': - return self._original_dir - else: - raise KeyError(key) - - def check(self, prefixed: tuple[int] = None, suck: tuple[int] = None): - """Checks the file changes - - :param prefixed: These files in the work dir are expected to be prefixed - :param suck: These files in the work dir are expected to be sucked from the originals - """ - [self.work_files[f"file_{i}"].prefixed() for i in prefixed or ()] - [self.work_files[f"file_{i}"].suck(self.originals[f"file_{i}"]) for i in suck or ()] - [f.check(self.test_case) for f in chain(self.work_files.values(), self.originals.values())] +from tests.setup import FileRepresentation, FolderState, drun class TestDeduplidog(TestCase): @@ -114,29 +39,29 @@ def prepare(self, testing_dir: str = None): def test_simple_prefix(self): state = self.prepare() drun(["rename", "execute"], **state) - state.check(prefixed=(11,)) + state.check(prefixed_i=(11,)) def test_date(self): state = self.prepare() drun(["rename", "execute"], ["neglect_warning"], ["ignore_date"], **state) - state.check(prefixed=(4, 5, 6, 7, 8, 9, 10, 11)) + state.check(prefixed_i=(4, 5, 6, 7, 8, 9, 10, 11)) state = self.prepare() drun(["rename", "execute"], match=["ignore_date"], **state) - state.check(prefixed=(4, 5, 6, 7, 11)) + state.check(prefixed_i=(4, 5, 6, 7, 11)) state = self.prepare() drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 1}, **state) - state.check(prefixed=(4, 7, 8, 9, 11)) + state.check(prefixed_i=(4, 7, 8, 9, 11)) state = self.prepare() drun(["rename", "execute"], match={"tolerate_hour": 1}, **state) - state.check(prefixed=(4, 7, 11)) + state.check(prefixed_i=(4, 7, 11)) state = self.prepare() drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 2}, **state) - state.check(prefixed=(4, 5, 6, 7, 8, 9, 11)) + state.check(prefixed_i=(4, 5, 6, 7, 8, 9, 11)) state = self.prepare() drun(["rename", "execute"], match={"tolerate_hour": 2}, **state) - state.check(prefixed=(4, 5, 6, 7, 11)) + state.check(prefixed_i=(4, 5, 6, 7, 11)) def test_replace_with_original(self): state = self.prepare() @@ -146,24 +71,18 @@ def test_replace_with_original(self): state = self.prepare() drun(["replace_with_original", "execute"], ["neglect_warning"], {"tolerate_hour": 2}, **state) - state.check(suck=(4, 5, 6, 7, 8, 9, 11)) + state.check(suck_i=(4, 5, 6, 7, 8, 9, 11)) def test_invert_selection(self): state = self.prepare() with self.assertRaises(AssertionError): drun(["replace_with_original", "execute"], match={"tolerate_hour": 2, "invert_selection": True}, **state) drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 2, "invert_selection": False}, **state) - state.check(prefixed=(4, 5, 6, 7, 8, 9, 11)) + state.check(prefixed_i=(4, 5, 6, 7, 8, 9, 11)) state = self.prepare() drun(["rename", "execute"], ["neglect_warning"], {"tolerate_hour": 2, "invert_selection": True}, **state) - state.check(prefixed=(1, 2, 10)) - - # No media file in the test case. - # def test_skip_bigger(self): - # state = self.prepare() - # Deduplidog(*state, rename=True, execute=True, ignore_date=True, skip_bigger=True, `media_magic=True`) - # state.check() + state.check(prefixed_i=(1, 2, 10)) if __name__ == '__main__': diff --git a/tests/test_media_magic.py b/tests/test_media_magic.py new file mode 100644 index 0000000..4967585 --- /dev/null +++ b/tests/test_media_magic.py @@ -0,0 +1,65 @@ +from pathlib import Path +from shutil import copy, copytree +from tempfile import mkdtemp +from unittest import TestCase, main + +from deduplidog import Deduplidog +from deduplidog.deduplidog import Change +from tests.setup import FolderState, drun + + +class TestMediaMagic(TestCase): + + def setUp(self): + self.disk2 = mkdtemp(dir="/tmp") + temp = str(self.disk2) + self.disk = Path(self.disk2) / "disk" + copytree("tests/test_data/disk", self.disk) + + def log(self, log: list[Change], deduplidog: Deduplidog): + # update the paths + self.assertEqual([ + {self.disk / path: changes for path, changes in row.items()} + for row in log + ], deduplidog.changes) + + +class TestMediaMagicTwoFolders(TestMediaMagic): + def setUp(self): + super().setUp() + self.state = FolderState(self, self.disk / "folder2", self.disk / "folder1") + + def test_basic(self): + d = drun(["rename", "execute"], ["neglect_warning"], [], ["media_magic"], **self.state) + self.state.check(prefixed=("TODO_licence.jpeg",)) + + self.log([{'folder1/TODO_licence.jpeg': [], 'folder2/TODO_licence.jpeg': ['renaming']}], d) + self.assertEqual([{self.disk / 'folder1/TODO_licence.jpeg': [], + self.disk / 'folder2/TODO_licence.jpeg': ['renaming']}], d.changes) + + def test_ignore_name(self): + d = drun(["rename", "execute"], ["neglect_warning"], ["ignore_name"], ["media_magic"], **self.state) + self.state.check(prefixed=("TODO_licence.jpeg", "TODO_licence_other_name.jpeg")) + + +class TestMediaMagicSwapped(TestMediaMagic): + def setUp(self): + super().setUp() + self.state = FolderState(self, self.disk / "folder1", self.disk / "folder2") + + def test_basic(self): + d = drun(["rename", "execute"], ["neglect_warning"], [], ["media_magic"], **self.state) + self.state.check(prefixed=("TODO_licence.jpeg",)) + self.log( + [{"folder1/TODO_licence.jpeg": ['SIZE WARNING 35.5 kB', 'renaming'], + "folder2/TODO_licence.jpeg": ['DATE WARNING + 40 seconds']}], d) + + # NOTE add + # def test_skip_bigger(self): + # state = self.prepare() + # Deduplidog(*state, rename=True, execute=True, ignore_date=True, skip_bigger=True, `media_magic=True`) + # state.check() + + +if __name__ == '__main__': + main()