mudlet/.github/workflows
Vadim Peretokin 3c64303e65
Infrastructure: busted specs for the last uncovered UI functions (#9775)
#### Brief overview of PR changes/additions

- 134 new busted specs in `UI_spec.lua` for 24 UI functions that had no
coverage anywhere: label movies, console buffer sizing, main window
size, saved window layout, the application/profile style sheets, toolbar
buttons, command line actions, `setPopup` and `createLabel` into a user
window.
- Effects are read back for real, not just return values: movies through
`getProfileStats().gifs`, buffer limits through observed line trimming,
`setAppStyleSheet` through the `sysAppStyleSheetChange` it raises,
toolbars through `isActive()`, and the user window label by hiding its
parent. No binary fixture is committed - the movie specs assemble a
three-frame GIF89a at run time.
- The button specs install a tiny action package for the block, because
Lua cannot make a push-down button and cannot remove a `tempButton`
again; everything created is taken away in teardown, including the two
layout files that live outside the profile.

#### Motivation for adding to Mudlet

Last of the busted-reachable UI rows in the Lua API test-coverage
program. Nine functions turned out to have no reachable readback at all
and are marked `pending()` with the reason rather than given a spec that
cannot fail.

#### Other info (issues closed, discussion etc)

Bugs found while writing these, all left unspecced and marked
`pending()` instead:
- `Host::setMovie` hands the `QMovie` to the gif tracker before reading
the file, so a refused `setMovie` still counts one in
`getProfileStats()`, and over a working movie it leaves the label
driving a dead one.
- `createLabel` puts the label in the main window and answers `true`
when the parent window name is not a window.
- `showToolBar`/`hideToolBar` only answer to a package's name, never a
packaged toolbar's own name, and move every toolbar in the package at
once; an unmatched name is a silent no-op.
- `setPopup` takes a `luaL_ref` per function command before its size
check and window lookup, so both error paths strand registry references.
- `clearCmdLineSuggestions` gates on `n == 1` where
`addCmdLineSuggestion` gates on `n > 1`, so a second argument silently
retargets the main command line.
- `setConsoleBufferSize` never floors the batch deletion size, so `0`
stops the buffer shrinking at all.

Pre-existing and untouched here: on a reused profile the suite's second
run fails `getMainWindowSize returns a positive width and height` - it
reproduces identically on development.

**Test case:** full busted suite green on a fresh profile (2534
successes, 141 pending, +2.7s in `UI_spec`), and twice on one reused
profile with the same single pre-existing failure development has; 35 of
the 134 new specs (26%) verified to fail when the underlying C++ is
locally broken, and the new `MUDLET_TEST_REQUIRE_WINDOW_RESIZE` gate
proven to fail rather than skip when a resize stops working.

Assisted-by: Claude:claude-opus-5
2026-08-11 08:08:27 +02:00
..
build-mudlet-pr.yml Infrastructure: busted specs for the last uncovered UI functions (#9775) 2026-08-11 08:08:27 +02:00
build-mudlet-win-pr.yml infrastructure: keep QTest's output visible when ctest runs on Windows (#9751) 2026-08-10 22:18:08 +02:00
build-mudlet-win.yml infrastructure: keep QTest's output visible when ctest runs on Windows (#9751) 2026-08-10 22:18:08 +02:00
build-mudlet.yml infrastructure: keep QTest's output visible when ctest runs on Windows (#9751) 2026-08-10 22:18:08 +02:00
check-mpackages.yml improve: ship every default package as an mpackage (#9626) 2026-08-04 10:18:48 +02:00
check_pr_labels.yml Infrastructure: Verify documentation is available for new features (#8028) 2025-08-19 09:57:29 +02:00
codeql-analysis.yml Infrastructure: Bump lukka/get-cmake from 4.4.0 to 4.4.2 (#9729) 2026-08-08 13:34:03 +02:00
codespell-analysis.yml Infrastructure: Bump actions/checkout from 6 to 7 (#9348) 2026-06-27 17:59:12 +02:00
create-github-release.yml infrastructure: reject a release tag that does not match APP_VERSION (#9701) 2026-08-07 06:14:11 +02:00
dangerjs.yml infrastructure: don't run DangerJS on release PRs (#9375) 2026-07-02 17:00:56 +02:00
generate-changelog.yml Infrastructure: Bump actions/checkout from 6 to 7 (#9348) 2026-06-27 17:59:12 +02:00
generate-coder-attribution.yml Infrastructure: Bump actions/checkout from 6 to 7 (#9348) 2026-06-27 17:59:12 +02:00
link-ptbs-to-dblsqd.yml Infrastructure: Bump actions/setup-node from 6 to 7 (#9457) 2026-07-17 20:04:44 +02:00
performance-analysis.yml Infrastructure: Bump lukka/get-cmake from 4.4.0 to 4.4.2 (#9729) 2026-08-08 13:34:03 +02:00
tag-pull-requests.yml infrastructure: assign milestones with the built-in token, not a PAT (#9696) 2026-08-06 08:14:12 +02:00
update-3rdparty.yml improve: ship every default package as an mpackage (#9626) 2026-08-04 10:18:48 +02:00
update-autocompletion.yml Infrastructure: Bump actions/setup-node from 6 to 7 (#9457) 2026-07-17 20:04:44 +02:00
update-en-us-plural.yml Infrastructure: Bump actions/checkout from 6 to 7 (#9348) 2026-06-27 17:59:12 +02:00
update-geyser-docs.yml Infrastructure: Bump actions/checkout from 6 to 7 (#9348) 2026-06-27 17:59:12 +02:00
update-translations.yml Infrastructure: Bump actions/checkout from 6 to 7 (#9348) 2026-06-27 17:59:12 +02:00