99 lines
3.9 KiB
Markdown
99 lines
3.9 KiB
Markdown
# JOURNAL — phase cfold
|
|
|
|
## 2026-06-11 — Phase cfold start
|
|
|
|
### Investigation findings
|
|
|
|
Pre-existing test layout:
|
|
- 60 files in `functional/` subdirs across 20 recipes
|
|
- 4 files in `playwright/` subdirs (cryptpad, custom-html, uptime-kuma)
|
|
- Helper modules to move: `_discourse.py`, `_ghost.py`, `_mailu.py`, `_mm.py`, `_mumble_proto.py`, `drone/functional/__init__.py`
|
|
- `mailu/test_backup.py`, `test_restore.py`, `ops.py` explicitly add `functional/` to sys.path — need updating to `custom/`
|
|
|
|
### Decision: deprecated aliases
|
|
|
|
Per plan §2 option (RECOMMENDED): keep recognizing `functional/`/`playwright/` as deprecated aliases
|
|
AND emit a loud one-line warning when a test is found in a deprecated folder. Using `warnings.warn()`
|
|
at import time of discovery or `print()` directly. Will use `print()` (stderr) so it shows up in CI
|
|
logs without needing to configure warning filters.
|
|
|
|
Implementation: `subdirs = ("custom", "functional", "playwright")` — canonical first — and after
|
|
finding a test in `functional/` or `playwright/`, emit:
|
|
`print(f"WARNING [cfold]: test found in deprecated folder '{sub}/' — move to custom/: {path}", flush=True, file=sys.stderr)`
|
|
|
|
This way:
|
|
- `custom/` is canonical and gets discovered first
|
|
- Old folders still work (zero breakage for repo-local tests) but emit a loud warning
|
|
- No silent coverage loss possible
|
|
|
|
## 2026-06-12 — M1 checkpoint: canonical `custom/` layout landed locally
|
|
|
|
Code/work completed:
|
|
- `runner/harness/discovery.py`: canonical `custom/` discovery, deprecated alias warnings, and
|
|
`custom_subdir_label()` normalization helper.
|
|
- `runner/harness/manifest.py`: custom-test counts now normalize to canonical `custom`.
|
|
- all cc-ci custom tests/helper modules moved from `tests/<recipe>/{functional,playwright}/` into
|
|
`tests/<recipe>/custom/`.
|
|
- helper-import fallout fixed where needed (`tests/mailu/{ops.py,test_backup.py,test_restore.py}`).
|
|
- docs updated to describe `custom/` as the canonical layout and explain the alias-compatibility window.
|
|
|
|
Mechanical move summary:
|
|
- 64 custom test files relocated into `custom/`
|
|
- helper modules relocated too: `_discourse.py`, `_ghost.py`, `_mailu.py`, `_mm.py`,
|
|
`_mumble_proto.py`, `tests/drone/custom/__init__.py`
|
|
|
|
Verification:
|
|
```bash
|
|
nix shell nixpkgs#python312Packages.pytest --command pytest \
|
|
tests/unit/test_discovery.py tests/unit/test_discovery_phase2.py tests/unit/test_manifest.py -q
|
|
# ..................
|
|
# 18 passed in 0.09s
|
|
```
|
|
|
|
Post-move grep state:
|
|
- remaining `functional/` / `playwright/` matches in live code are intentional: alias-policy docs,
|
|
deprecated-folder assertions in the unit tests, and discovery comments describing the alias behavior.
|
|
- the pre-migration inventory in `BACKLOG-cfold.md` is intentionally unchanged because it is the M1
|
|
baseline record the Adversary will compare against.
|
|
|
|
## 2026-06-12 — M1 coverage proof assembled
|
|
|
|
Verification commands + observed outputs:
|
|
|
|
```bash
|
|
$ git ls-files "tests/*/custom/test_*.py" | wc -l
|
|
64
|
|
|
|
$ git ls-files "tests/*/functional/*" "tests/*/playwright/*"
|
|
# no output
|
|
|
|
$ for recipe in bluesky-pds cryptpad custom-html custom-html-tiny discourse drone ghost hedgedoc immich keycloak lasuite-docs lasuite-drive lasuite-meet mailu matrix-synapse mattermost-lts mumble n8n plausible uptime-kuma; do count=$(git ls-files "tests/$recipe/custom/test_*.py" | wc -l); printf "%s %s\n" "$recipe" "$count"; done
|
|
bluesky-pds 4
|
|
cryptpad 4
|
|
custom-html 4
|
|
custom-html-tiny 1
|
|
discourse 3
|
|
drone 1
|
|
ghost 4
|
|
hedgedoc 2
|
|
immich 3
|
|
keycloak 3
|
|
lasuite-docs 5
|
|
lasuite-drive 3
|
|
lasuite-meet 3
|
|
mailu 3
|
|
matrix-synapse 3
|
|
mattermost-lts 3
|
|
mumble 5
|
|
n8n 4
|
|
plausible 2
|
|
uptime-kuma 4
|
|
|
|
$ nix shell nixpkgs#python311Packages.pytest -c pytest tests/unit/test_discovery.py tests/unit/test_discovery_phase2.py tests/unit/test_manifest.py -q
|
|
..................
|
|
18 passed in 0.14s
|
|
```
|
|
|
|
Conclusion: the migrated tree still contains the exact same 64 custom test files with the same
|
|
per-recipe cardinality as the pre-cfold baseline in `BACKLOG-cfold.md`; only the folder paths changed.
|