The eight test files Q98 leaves open (plus test_bfs.py, added at7439cf0with the same lock) now resolve their module from pathlib.Path(__file__).resolve().parent instead of /root/.hermes/wizard-outputs/<lane>. tools/import_resolve_check.py --repo . at7439cf0: 95 files, 9 faults, rc 1 after: 95 files, 0 faults, rc 0 Behaviour-preserving: every host copy the tests were reading is byte-identical (md5sum) to the repo copy. Three absolute literals in spark/test_validator.py that the static leg does not grade (load_json(...) argument strings at pre-fix lines 12/16/25) are re-pointed too. ledger/test_scratch_manifest.py was red before any edit (str ROOT vs gen_manifest ROOT.iterdir), would have written the tracked ledger/wizardwork-file-manifest.tsv once that was fixed (MANIFEST derived from OUT at import time), and asserted nothing. It now re-points ROOT/OUT/MANIFEST, guards MANIFEST inside a tempfile.mkdtemp(), and asserts the exact manifest row. Non-vacuity: scratch/q98b/poison_probe.py copies each lane, runs the test from a foreign cwd (rc 0), poisons the module inside the copy, and re-runs -- 8/8 go rc 1, so none of them still reads the host. Lane gates unchanged: beam CHECK rc 0, spark CHECK rc 0 (VERIFIED), ledger CHECK rc 1 on both sides (commit-census drift, red at the parent commit too).
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Comprehensive test suite for email_validator.py"""
|
|
|
|
import pathlib
|
|
import sys
|
|
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parent))
|
|
from email_validator import is_valid_email, validate_email
|
|
|
|
# Test cases: (email, expected_valid)
|
|
tests = [
|
|
# Valid emails
|
|
("user@example.com", True),
|
|
("test.email@domain.co.uk", True),
|
|
("user+tag@example.org", True),
|
|
("UPPERCASE@EXAMPLE.COM", True),
|
|
("user123@test-site.net", True),
|
|
|
|
# Invalid emails
|
|
("", False),
|
|
("invalid", False),
|
|
("@missing-local.com", False),
|
|
("missing-at-sign.com", False),
|
|
("user@", False),
|
|
("user@.com", False),
|
|
(" ", False),
|
|
(None, False),
|
|
]
|
|
|
|
all_passed = True
|
|
print("Running email validation tests...")
|
|
for email, expected in tests:
|
|
result = is_valid_email(email)
|
|
status = "PASS" if result == expected else "FAIL"
|
|
if result != expected:
|
|
all_passed = False
|
|
print(f" [{status}] {repr(email)}: got {result}, expected {expected}")
|
|
|
|
print(f"\nAll tests passed: {all_passed}")
|
|
sys.exit(0 if all_passed else 1) |