[PR #202] [MERGED] ci: test on Python 3.10-3.14 and Windows, probe the live API weekly #201

Closed
opened 2026-10-13 19:48:45 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Glitchy-Sheep/boosty-downloader/pull/202
Author: @Glitchy-Sheep
Created: 9/22/2026
Status: ✅ Merged
Merged: 9/23/2026
Merged by: @Glitchy-Sheep

Base: main ← Head: ci/test-matrix-and-canary


📝 Commits (10+)

  • a4e7dbe [ci] Test on Python 3.10, 3.12, 3.14 and on Windows
  • 17102e1 [renderer] Give zip attachments the archive icon on Windows
  • c7f49cf [ci] Probe the live Boosty API weekly and open an issue on drift
  • e451ae1 docs: ask for the --debug log in bug reports, describe the real test tree
  • f85ff1c ci: run the canary on Saturdays before the weekly report
  • b2a6097 docs: make the debug log optional in the bug report
  • e7f7c97 docs: shorten the debug log hint
  • 68fc8da docs: say the debug log is safe to attach
  • 610998d docs: say when a debug log helps a bug report
  • 61bf789 docs: put how before when in the debug log hint

📊 Changes

14 files changed (+344 additions, -43 deletions)

View changed files

📝 .github/ISSUE_TEMPLATE/bug_report.md (+15 -0)
📝 .github/actions/setup/action.yml (+17 -4)
➕ .github/workflows/canary.yaml (+67 -0)
📝 .github/workflows/ci.yaml (+24 -5)
📝 CHANGELOG.md (+4 -0)
📝 Taskfile.yml (+16 -0)
📝 boosty_downloader/infrastructure/html_generator/renderer.py (+2 -0)
📝 docs/development/02-testing.md (+32 -20)
📝 docs/development/03-ci.md (+39 -2)
📝 pyproject.toml (+3 -2)
📝 test/ABOUT_TESTING.md (+14 -10)
➕ test/canary/__init__.py (+0 -0)
➕ test/canary/api_drift_test.py (+95 -0)
📝 test/unit/html_generator/html_templates_test.py (+16 -0)

📄 Description

📝 Summary

The package promises Python 3.10 to 3.14 and runs on Windows, but CI tested one Python on Ubuntu. Boosty's API has no contract, and so far its changes were found by users. This PR makes CI test every promised Python plus Windows, and adds a weekly probe of the live API that opens an issue when the answer no longer fits our models. Audit stage 6.

🔧 What changes

  • The test job is a matrix: Ubuntu with Python 3.10, 3.12, 3.14 and Windows with 3.12. Lint, types and the build stay on the 3.12 pin. fail-fast: false: one red cell does not cancel the others.
  • The setup action takes python-version and hands it to setup-uv. Empty means the pin from .python-version, so release.yaml is not affected. The test step runs under bash on every OS.
  • canary.yaml runs task test:canary against the public blog in the CANARY_AUTHOR repository variable, every Saturday at 06:00 UTC, three hours before the weekly report (#207), and on demand. It checks that every post parses, nothing in the answer is unknown to the client and an open post carries content. On failure it opens one issue with the api-drift label, and no second one while the first is open.
  • The Windows cell found a bug: a .zip attachment got the generic file icon on Windows, because Windows names the zip type application/x-zip-compressed. Fixed, with a CHANGELOG entry.
  • The bug report template asks for the --debug log and the Python version.
  • docs/development/02-testing.md, 03-ci.md and test/ABOUT_TESTING.md describe the real test tree, the matrix and the canary.

🧪 Tests

  • 4 test jobs green: py3.10 / ubuntu, py3.12 / ubuntu, py3.14 / ubuntu, py3.12 / windows.
  • Locally: the suite passes on 3.10 and 3.14 through uv run --python X --isolated pytest.
  • A unit test pins the zip icon under the Windows MIME name.
  • Both YAML files pass check-jsonschema against the GitHub workflow and action schemas.

⏭️ Next

  • After merge: a manual canary run on the real blog is green; a run with a made-up author opens one issue, and a second run does not duplicate it. workflow_dispatch works only once the workflow is on main.
  • The canary also checks live answers against docs/api/boosty-api.yaml (#203).

✅ Checklist

  • Tested live on a real blog (feature or fix)
  • Updated CLI --help and README if needed
  • Updated docs/ if the download flow or dev process changed
  • Added a line to ## Unreleased in CHANGELOG.md (or the ci/skip-changelog label if not user-facing)

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Glitchy-Sheep/boosty-downloader/pull/202 **Author:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Created:** 9/22/2026 **Status:** ✅ Merged **Merged:** 9/23/2026 **Merged by:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Base:** `main` ← **Head:** `ci/test-matrix-and-canary` --- ### 📝 Commits (10+) - [`a4e7dbe`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/a4e7dbed3b5330556cebbfe01275aeb9edc8ac85) [ci] Test on Python 3.10, 3.12, 3.14 and on Windows - [`17102e1`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/17102e13380c6a70b11fa6bd3c4cb5df73fd82b3) [renderer] Give zip attachments the archive icon on Windows - [`c7f49cf`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/c7f49cff81e60d539eafb2e4712d2d74ffea23d0) [ci] Probe the live Boosty API weekly and open an issue on drift - [`e451ae1`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/e451ae15c79f01b31b2c712182cad459dca7bc08) docs: ask for the --debug log in bug reports, describe the real test tree - [`f85ff1c`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/f85ff1c434cb5a9470693835e75cd6992fcba56d) ci: run the canary on Saturdays before the weekly report - [`b2a6097`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/b2a609791f610d6a2d4be73fba234675ef946718) docs: make the debug log optional in the bug report - [`e7f7c97`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/e7f7c97352eaf53d9d98f38d9be1f6cb0708774f) docs: shorten the debug log hint - [`68fc8da`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/68fc8da082ec988f04c045a8e3b583e89cdf88e1) docs: say the debug log is safe to attach - [`610998d`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/610998d62c5ccc9eda27bb162273ac6209a8e942) docs: say when a debug log helps a bug report - [`61bf789`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/61bf7894d5baf8c1df543cae3f1904b5df8e43c9) docs: put how before when in the debug log hint ### 📊 Changes **14 files changed** (+344 additions, -43 deletions) <details> <summary>View changed files</summary> 📝 `.github/ISSUE_TEMPLATE/bug_report.md` (+15 -0) 📝 `.github/actions/setup/action.yml` (+17 -4) ➕ `.github/workflows/canary.yaml` (+67 -0) 📝 `.github/workflows/ci.yaml` (+24 -5) 📝 `CHANGELOG.md` (+4 -0) 📝 `Taskfile.yml` (+16 -0) 📝 `boosty_downloader/infrastructure/html_generator/renderer.py` (+2 -0) 📝 `docs/development/02-testing.md` (+32 -20) 📝 `docs/development/03-ci.md` (+39 -2) 📝 `pyproject.toml` (+3 -2) 📝 `test/ABOUT_TESTING.md` (+14 -10) ➕ `test/canary/__init__.py` (+0 -0) ➕ `test/canary/api_drift_test.py` (+95 -0) 📝 `test/unit/html_generator/html_templates_test.py` (+16 -0) </details> ### 📄 Description ## 📝 Summary The package promises Python 3.10 to 3.14 and runs on Windows, but CI tested one Python on Ubuntu. Boosty's API has no contract, and so far its changes were found by users. This PR makes CI test every promised Python plus Windows, and adds a weekly probe of the live API that opens an issue when the answer no longer fits our models. Audit stage 6. ## 🔧 What changes - The test job is a matrix: Ubuntu with Python 3.10, 3.12, 3.14 and Windows with 3.12. Lint, types and the build stay on the 3.12 pin. `fail-fast: false`: one red cell does not cancel the others. - The setup action takes `python-version` and hands it to setup-uv. Empty means the pin from `.python-version`, so release.yaml is not affected. The test step runs under bash on every OS. - `canary.yaml` runs `task test:canary` against the public blog in the `CANARY_AUTHOR` repository variable, every Saturday at 06:00 UTC, three hours before the weekly report (#207), and on demand. It checks that every post parses, nothing in the answer is unknown to the client and an open post carries content. On failure it opens one issue with the `api-drift` label, and no second one while the first is open. - The Windows cell found a bug: a `.zip` attachment got the generic file icon on Windows, because Windows names the zip type `application/x-zip-compressed`. Fixed, with a CHANGELOG entry. - The bug report template asks for the `--debug` log and the Python version. - `docs/development/02-testing.md`, `03-ci.md` and `test/ABOUT_TESTING.md` describe the real test tree, the matrix and the canary. ## 🧪 Tests - 4 test jobs green: py3.10 / ubuntu, py3.12 / ubuntu, py3.14 / ubuntu, py3.12 / windows. - Locally: the suite passes on 3.10 and 3.14 through `uv run --python X --isolated pytest`. - A unit test pins the zip icon under the Windows MIME name. - Both YAML files pass `check-jsonschema` against the GitHub workflow and action schemas. ## ⏭️ Next - After merge: a manual canary run on the real blog is green; a run with a made-up author opens one issue, and a second run does not duplicate it. `workflow_dispatch` works only once the workflow is on `main`. - The canary also checks live answers against `docs/api/boosty-api.yaml` (#203). ## ✅ Checklist <!-- Tick an item that doesn't apply too --> - [x] Tested live on a real blog (feature or fix) - [x] Updated CLI `--help` and README if needed - [x] Updated `docs/` if the download flow or dev process changed - [x] Added a line to `## Unreleased` in CHANGELOG.md (or the `ci/skip-changelog` label if not user-facing) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-13 19:48:45 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Glitchy-Sheep/boosty-downloader#201
No description provided.