start-gui.sh et améliorations diverses

This commit is contained in:
2026-09-08 12:04:18 +02:00
parent 06d7bad04e
commit db4ed2ef31
14 changed files with 697 additions and 50 deletions
+81
View File
@@ -0,0 +1,81 @@
import tempfile
import unittest
from pathlib import Path
from unittest.mock import Mock
import pymupdf
from copienator.commands.page_splitter import PDFPreviewer, PAGE_SPLITTER_KB
class ReversePagesTests(unittest.TestCase):
def test_reverse_restarts_with_fresh_settings_and_exports_reversed_pages(self):
with tempfile.TemporaryDirectory() as temporary:
source = Path(temporary) / "copy.pdf"
with pymupdf.open() as document:
for index in range(3):
page = document.new_page(width=200 + 20 * index, height=300)
page.insert_text((30, 30), f"Page {index + 1}")
document.save(source)
original = source.read_bytes()
preview = PDFPreviewer.__new__(PDFPreviewer)
preview.doc = pymupdf.open(source)
self.addCleanup(lambda: None if preview.doc.is_closed else preview.doc.close())
preview.current_page_index = 2
preview.page_settings = [{"keep": "none"}, {"keep": "left"}]
preview.current_rotation = 180
preview.file_rotation = 180
preview.global_rotation = 180
preview.processing = False
preview.load_page = Mock()
preview.reverse_pages()
self.assertEqual([page.get_text().strip() for page in preview.doc],
["Page 3", "Page 2", "Page 1"])
self.assertEqual(preview.current_page_index, 0)
self.assertEqual(preview.page_settings, [])
self.assertEqual(preview.current_line_x, 120)
self.assertEqual(preview.current_rotation, 0)
self.assertEqual((preview.file_rotation, preview.global_rotation), (180, 180))
preview.load_page.assert_called_once_with()
self.assertEqual(source.read_bytes(), original)
preview.reverse_pages()
self.assertEqual([page.get_text().strip() for page in preview.doc],
["Page 1", "Page 2", "Page 3"])
preview.reverse_pages()
preview.base_name = "copy"
preview.split_dir = Path(temporary) / "split"
preview.reorder_dir = Path(temporary) / "reorder"
preview.final_file = Path(temporary) / "result.pdf"
preview.output_dir = None
preview.page_settings = [
{"keep": "as_is", "rotation": 0, "line_x": page.rect.width / 2}
for page in preview.doc
]
preview.split_pdf()
preview.reorder_pdfs()
preview.concate_files()
with pymupdf.open(preview.final_file) as result:
self.assertEqual([page.get_text().strip() for page in result],
["Page 3", "Page 2", "Page 1"])
def test_single_page_can_restart_and_processing_ignores_shortcut(self):
preview = PDFPreviewer.__new__(PDFPreviewer)
preview.doc = pymupdf.open()
self.addCleanup(preview.doc.close)
preview.doc.new_page()
preview.processing = True
preview.load_page = Mock()
preview.reverse_pages()
preview.load_page.assert_not_called()
preview.processing = False
preview.reverse_pages()
self.assertEqual(preview.current_page_index, 0)
self.assertEqual(preview.page_settings, [])
preview.load_page.assert_called_once_with()
def test_shortcut_available_with_personal_configuration(self):
self.assertEqual(PAGE_SPLITTER_KB["reverse_pages"], "i")