diff options
| author | Craig Jennings <c@cjennings.net> | 2026-02-22 23:20:56 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-02-22 23:20:56 -0600 |
| commit | 3a2445080c880544985f50fb0d916534698cc073 (patch) | |
| tree | 909f98edbbb940aafb95de02457d4d6f7db3cba4 /docs/scripts/tests/test_generate_filenames.py | |
| parent | 3595aa8a8122da543676717fb5825044eee99a9d (diff) | |
| download | archangel-3a2445080c880544985f50fb0d916534698cc073.tar.gz archangel-3a2445080c880544985f50fb0d916534698cc073.zip | |
chore: add docs/ to .gitignore and untrack personal files
docs/ contains session history, personal workflows, and private
protocols that shouldn't be in a public repository.
Diffstat (limited to 'docs/scripts/tests/test_generate_filenames.py')
| -rw-r--r-- | docs/scripts/tests/test_generate_filenames.py | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/docs/scripts/tests/test_generate_filenames.py b/docs/scripts/tests/test_generate_filenames.py deleted file mode 100644 index 07c8f84..0000000 --- a/docs/scripts/tests/test_generate_filenames.py +++ /dev/null @@ -1,157 +0,0 @@ -"""Tests for generate_basename(), generate_email_filename(), generate_attachment_filename().""" - -import sys -import os - -sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) - -import importlib.util -spec = importlib.util.spec_from_file_location( - "eml_script", - os.path.join(os.path.dirname(__file__), '..', 'eml-view-and-extract-attachments.py') -) -eml_script = importlib.util.module_from_spec(spec) -spec.loader.exec_module(eml_script) - -generate_basename = eml_script.generate_basename -generate_email_filename = eml_script.generate_email_filename -generate_attachment_filename = eml_script.generate_attachment_filename - - -# --- generate_basename --- - -class TestGenerateBasename: - def test_standard_from_and_date(self): - metadata = { - 'from': 'Jonathan Smith <jsmith@example.com>', - 'date': 'Wed, 05 Feb 2026 11:36:00 -0600', - } - assert generate_basename(metadata) == "2026-02-05-1136-Jonathan" - - def test_from_with_display_name_first_token(self): - metadata = { - 'from': 'C Ciarm <cciarm@example.com>', - 'date': 'Wed, 05 Feb 2026 11:36:00 -0600', - } - result = generate_basename(metadata) - assert result == "2026-02-05-1136-C" - - def test_from_without_display_name(self): - metadata = { - 'from': 'jsmith@example.com', - 'date': 'Wed, 05 Feb 2026 11:36:00 -0600', - } - result = generate_basename(metadata) - assert result == "2026-02-05-1136-jsmith" - - def test_missing_date(self): - metadata = { - 'from': 'Jonathan Smith <jsmith@example.com>', - 'date': None, - } - result = generate_basename(metadata) - assert result == "unknown-Jonathan" - - def test_missing_from(self): - metadata = { - 'from': None, - 'date': 'Wed, 05 Feb 2026 11:36:00 -0600', - } - result = generate_basename(metadata) - assert result == "2026-02-05-1136-unknown" - - def test_both_missing(self): - metadata = {'from': None, 'date': None} - result = generate_basename(metadata) - assert result == "unknown-unknown" - - def test_unparseable_date(self): - metadata = { - 'from': 'Jonathan <j@example.com>', - 'date': 'not a real date', - } - result = generate_basename(metadata) - assert result == "unknown-Jonathan" - - def test_none_date_no_crash(self): - metadata = {'from': 'Test <t@e.com>', 'date': None} - # Should not raise - result = generate_basename(metadata) - assert "unknown" in result - - -# --- generate_email_filename --- - -class TestGenerateEmailFilename: - def test_standard_subject(self): - result = generate_email_filename( - "2026-02-05-1136-Jonathan", - "Re: Fw: 4319 Danneel Street" - ) - assert result == "2026-02-05-1136-Jonathan-EMAIL-Re-Fw-4319-Danneel-Street" - - def test_subject_with_special_chars(self): - result = generate_email_filename( - "2026-02-05-1136-Jonathan", - "Update: Meeting (draft) & notes!" - ) - # Colons, parens, ampersands, exclamation stripped - assert "EMAIL" in result - assert ":" not in result - assert "(" not in result - assert ")" not in result - assert "&" not in result - assert "!" not in result - - def test_none_subject(self): - result = generate_email_filename("2026-02-05-1136-Jonathan", None) - assert result == "2026-02-05-1136-Jonathan-EMAIL-no-subject" - - def test_empty_subject(self): - result = generate_email_filename("2026-02-05-1136-Jonathan", "") - assert result == "2026-02-05-1136-Jonathan-EMAIL-no-subject" - - def test_very_long_subject(self): - long_subject = "A" * 100 + " " + "B" * 100 - result = generate_email_filename("2026-02-05-1136-Jonathan", long_subject) - # The cleaned subject part should be truncated - # basename (27) + "-EMAIL-" (7) + subject - # Subject itself is limited to 80 chars by _clean_for_filename - subject_part = result.split("-EMAIL-")[1] - assert len(subject_part) <= 80 - - -# --- generate_attachment_filename --- - -class TestGenerateAttachmentFilename: - def test_standard_attachment(self): - result = generate_attachment_filename( - "2026-02-05-1136-Jonathan", - "Ltr Carrollton.pdf" - ) - assert result == "2026-02-05-1136-Jonathan-ATTACH-Ltr-Carrollton.pdf" - - def test_filename_with_spaces_and_parens(self): - result = generate_attachment_filename( - "2026-02-05-1136-Jonathan", - "Document (final copy).pdf" - ) - assert " " not in result - assert "(" not in result - assert ")" not in result - assert result.endswith(".pdf") - - def test_preserves_extension(self): - result = generate_attachment_filename( - "2026-02-05-1136-Jonathan", - "photo.jpg" - ) - assert result.endswith(".jpg") - - def test_none_filename(self): - result = generate_attachment_filename("2026-02-05-1136-Jonathan", None) - assert result == "2026-02-05-1136-Jonathan-ATTACH-unnamed" - - def test_empty_filename(self): - result = generate_attachment_filename("2026-02-05-1136-Jonathan", "") - assert result == "2026-02-05-1136-Jonathan-ATTACH-unnamed" |
