aboutsummaryrefslogtreecommitdiff
path: root/docs/scripts/tests/test_generate_filenames.py
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-02-22 23:20:56 -0600
committerCraig Jennings <c@cjennings.net>2026-02-22 23:20:56 -0600
commit3a2445080c880544985f50fb0d916534698cc073 (patch)
tree909f98edbbb940aafb95de02457d4d6f7db3cba4 /docs/scripts/tests/test_generate_filenames.py
parent3595aa8a8122da543676717fb5825044eee99a9d (diff)
downloadarchangel-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.py157
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"