Phase 2 of M11. Issue #180's errata (E2) confirmed the real enumeration
blockers — no quality extraction in capabilities(from:ppd:) and no
detection roster — were both fixed by #183 in Phase 1. This branch
therefore lands fixture realism + proof tests only: zero production
code changes.
CupsParserTests: the pre-M11 synthetic cupsPrintQuality: Draft *Normal High
listing is replaced by the recorded Epson XP-55 line EPIJ_Qual/Print Quality: 301 302 *303 308 304 305 307 (driver order —
308 between 303 and 304, no 306 exists). Assertions now cover all
seven ids in fixture order, qualityDefault == "303", the full
seven-line XP-55 PPD fragment (Fast Economy, Economy, Normal, Draft,
Fine, Quality, Best Quality), and detection preferring EPIJ_Qual
over OutputMode/Resolution on an Epson-shaped listing (R11).
CupsOptionsFilterTests: captured EPIJ_Qual=304 and the canonical
quality keys survive filter() — roster verified complete post-#183
(EPIJ_Qual, CNIJPrintQuality, PrintQuality all present; EPIJ_Quality kept as harmless capture alias, R16).
LpArgsTests: explicit quality "305" emits -o EPIJ_Qual=305
(captured EPIJ_Qual= still suppresses the emit — covered by the
existing testCapturedWinsQuality).
PrintSessionViewModelTests + Tests/ICCeryUITests/Fixtures/bin/lpoptions:
the recorded seven-choice line feeds the view model and the Stage 2
picker; new UI test asserts the picker lists all seven entries in
driver order.
No source changes: CupsOptionsFilter.relevantKeys, CupsParsers.qualityKeys, capabilities(from:ppd:), and LpArgs
quality emission were verified complete on the milestone tip
(51c3073) — adding them again would be a no-op re-edit.
Milestone11PrintSettingsUITests: 4 executed — testPanelResultAppliesBackToPickers flaked once
(printNotificationText existence; the unchanged env-stubbed panel
path) and passed on the single allowed rerun (R2); the new testQualityPickerListsAllSevenDriverOptions passed first try
Milestone3UITests: 6 passed, 0 failures
Wider pre-merge core suite (-only-testing:ICCeryCoreTests): 468 tests, 0 failures.
Notes
Refs, not Fixes — issue closure is deferred to Phase 5 per the
M11 plan.
No UI changes, no locale/PPD-label precedence work (#181), no panel
capture-return changes (#186), CNIJPrintMode2/CNIJPQualitySlider
remain deferred (#16).
git diff --check clean; diff touches test files and the UI fixture
script only.
Refs #180
## Summary
Phase 2 of M11. Issue #180's errata (E2) confirmed the real enumeration
blockers — no quality extraction in `capabilities(from:ppd:)` and no
detection roster — were both fixed by #183 in Phase 1. This branch
therefore lands **fixture realism + proof tests only**: zero production
code changes.
- `CupsParserTests`: the pre-M11 synthetic `cupsPrintQuality: Draft *Normal High`
listing is replaced by the recorded Epson XP-55 line
`EPIJ_Qual/Print Quality: 301 302 *303 308 304 305 307` (driver order —
308 between 303 and 304, no 306 exists). Assertions now cover all
seven ids in fixture order, `qualityDefault == "303"`, the full
seven-line XP-55 PPD fragment (Fast Economy, Economy, Normal, Draft,
Fine, Quality, Best Quality), and detection preferring `EPIJ_Qual`
over `OutputMode`/`Resolution` on an Epson-shaped listing (R11).
- `CupsOptionsFilterTests`: captured `EPIJ_Qual=304` and the canonical
quality keys survive `filter()` — roster verified complete post-#183
(`EPIJ_Qual`, `CNIJPrintQuality`, `PrintQuality` all present;
`EPIJ_Quality` kept as harmless capture alias, R16).
- `LpArgsTests`: explicit quality `"305"` emits `-o EPIJ_Qual=305`
(captured `EPIJ_Qual=` still suppresses the emit — covered by the
existing `testCapturedWinsQuality`).
- `PrintSessionViewModelTests` + `Tests/ICCeryUITests/Fixtures/bin/lpoptions`:
the recorded seven-choice line feeds the view model and the Stage 2
picker; new UI test asserts the picker lists all seven entries in
driver order.
No source changes: `CupsOptionsFilter.relevantKeys`,
`CupsParsers.qualityKeys`, `capabilities(from:ppd:)`, and `LpArgs`
quality emission were verified complete on the milestone tip
(51c3073) — adding them again would be a no-op re-edit.
## Test gate
```
xcodegen generate --spec project.yml && xcodebuild test \
-scheme ICCery -destination 'platform=macOS' \
-derivedDataPath build/DerivedData-feat-180-epson-qual-options \
ARCHS="$(uname -m)" CODE_SIGNING_ALLOWED=YES CODE_SIGN_IDENTITY='-' \
-only-testing:ICCeryCoreTests/CupsParserTests \
-only-testing:ICCeryCoreTests/CupsOptionsFilterTests \
-only-testing:ICCeryCoreTests/LpArgsTests \
-only-testing:ICCeryCoreTests/PrintSessionViewModelTests \
-only-testing:ICCeryUITests/Milestone11PrintSettingsUITests \
-only-testing:ICCeryUITests/Milestone3UITests
```
Targeted gate (x86_64, macOS 15.2 SDK):
- `CupsParserTests`: 15 passed, 0 failures
- `CupsOptionsFilterTests`: 6 passed, 0 failures
- `LpArgsTests`: 14 passed, 0 failures
- `PrintSessionViewModelTests`: 8 passed, 0 failures
- `Milestone11PrintSettingsUITests`: 4 executed —
`testPanelResultAppliesBackToPickers` flaked once
(`printNotificationText` existence; the unchanged env-stubbed panel
path) and **passed on the single allowed rerun** (R2); the new
`testQualityPickerListsAllSevenDriverOptions` passed first try
- `Milestone3UITests`: 6 passed, 0 failures
Wider pre-merge core suite (`-only-testing:ICCeryCoreTests`):
**468 tests, 0 failures.**
## Notes
- `Refs`, not `Fixes` — issue closure is deferred to Phase 5 per the
M11 plan.
- No UI changes, no locale/PPD-label precedence work (#181), no panel
capture-return changes (#186), `CNIJPrintMode2`/`CNIJPQualitySlider`
remain deferred (#16).
- `git diff --check` clean; diff touches test files and the UI fixture
script only.
The Phase 1 (#183) quality plumbing already covers detection,
extraction, capture, and lp emission — this change proves the Epson
path end-to-end with recorded fixtures.
- CupsParserTests: replace the synthetic cupsPrintQuality listing with
the recorded XP-55 line (301 302 *303 308 304 305 307 — driver order,
308 between 303 and 304); assert all seven ids enumerate unsorted,
the * default is 303, all seven PPD labels resolve, and EPIJ_Qual
wins detection over OutputMode/Resolution (R11).
- CupsOptionsFilterTests: captured EPIJ_Qual + canonical quality keys
survive the filter (roster verified complete post-#183 — no source
change needed; EPIJ_Quality kept as harmless alias, R16).
- LpArgsTests: explicit quality 305 emits -o EPIJ_Qual=305.
- PrintSessionViewModelTests + UI lpoptions fixture: recorded
seven-choice line feeds the picker; Stage 2 picker lists all seven
entries in driver order (new UI test).
Devin-AI: Devin <devin@cognition.ai>
Co-authored-by: Devin <devin@cognition.ai>
gronod
self-assigned this 2026-09-15 19:07:14 +01:00
gronod
added this to the M11 — Printer settings completeness & dialog binding milestone 2026-09-15 19:07:14 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Refs #180
Summary
Phase 2 of M11. Issue #180's errata (E2) confirmed the real enumeration
blockers — no quality extraction in
capabilities(from:ppd:)and nodetection roster — were both fixed by #183 in Phase 1. This branch
therefore lands fixture realism + proof tests only: zero production
code changes.
CupsParserTests: the pre-M11 syntheticcupsPrintQuality: Draft *Normal Highlisting is replaced by the recorded Epson XP-55 line
EPIJ_Qual/Print Quality: 301 302 *303 308 304 305 307(driver order —308 between 303 and 304, no 306 exists). Assertions now cover all
seven ids in fixture order,
qualityDefault == "303", the fullseven-line XP-55 PPD fragment (Fast Economy, Economy, Normal, Draft,
Fine, Quality, Best Quality), and detection preferring
EPIJ_Qualover
OutputMode/Resolutionon an Epson-shaped listing (R11).CupsOptionsFilterTests: capturedEPIJ_Qual=304and the canonicalquality keys survive
filter()— roster verified complete post-#183(
EPIJ_Qual,CNIJPrintQuality,PrintQualityall present;EPIJ_Qualitykept as harmless capture alias, R16).LpArgsTests: explicit quality"305"emits-o EPIJ_Qual=305(captured
EPIJ_Qual=still suppresses the emit — covered by theexisting
testCapturedWinsQuality).PrintSessionViewModelTests+Tests/ICCeryUITests/Fixtures/bin/lpoptions:the recorded seven-choice line feeds the view model and the Stage 2
picker; new UI test asserts the picker lists all seven entries in
driver order.
No source changes:
CupsOptionsFilter.relevantKeys,CupsParsers.qualityKeys,capabilities(from:ppd:), andLpArgsquality emission were verified complete on the milestone tip
(
51c3073) — adding them again would be a no-op re-edit.Test gate
Targeted gate (x86_64, macOS 15.2 SDK):
CupsParserTests: 15 passed, 0 failuresCupsOptionsFilterTests: 6 passed, 0 failuresLpArgsTests: 14 passed, 0 failuresPrintSessionViewModelTests: 8 passed, 0 failuresMilestone11PrintSettingsUITests: 4 executed —testPanelResultAppliesBackToPickersflaked once(
printNotificationTextexistence; the unchanged env-stubbed panelpath) and passed on the single allowed rerun (R2); the new
testQualityPickerListsAllSevenDriverOptionspassed first tryMilestone3UITests: 6 passed, 0 failuresWider pre-merge core suite (
-only-testing:ICCeryCoreTests):468 tests, 0 failures.
Notes
Refs, notFixes— issue closure is deferred to Phase 5 per theM11 plan.
capture-return changes (#186),
CNIJPrintMode2/CNIJPQualitySliderremain deferred (#16).
git diff --checkclean; diff touches test files and the UI fixturescript only.