The suite had 8 empty `pass` tests, two tests that made live network calls to a production healthcheck endpoint, and a write_csv test that only asserted the file existed. CI ran only test_komodo_deploy, so the main suite never executed at all. - Split tests by module: test_qlist, test_qprocess, test_qlogging_extra, test_apprise, test_qbt; rewrote test_qbitmaid and test_write_csv. - qbt_fakes.py: shared fakes (FakeQbt, FakeQbtClient, FakeAPIError, StubPushover, FailingPushover, torrent factory). - test_qbt.py loads the hyphenated qbit-maid.py via importlib and covers the __main__ entry point. - Replaced the live-network tests with a RecordingRequests stub (suite time 14s -> 0.035s). - .coveragerc + CI unit-tests job running the full suite with --fail-under=100. 127 unit tests, 100% statement coverage on all 5 first-party modules (440 stmts), 15/15 mutations caught. Seven pre-existing bugs are pinned by tests with KNOWN BUG docstrings and left unfixed pending a decision.
36 lines
1017 B
YAML
36 lines
1017 B
YAML
name: test
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- dev*
|
|
pull_request:
|
|
|
|
jobs:
|
|
unit-tests:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install dependencies
|
|
# Mirrors the Dockerfile: the container installs qbittorrent-api
|
|
# unpinned, so requirements.txt is not used here.
|
|
run: |
|
|
python3 -m pip install --upgrade pip
|
|
python3 -m pip install requests qbittorrent-api coverage
|
|
- name: Run the full suite with coverage
|
|
run: |
|
|
python3 -m coverage run --rcfile=.coveragerc -m unittest \
|
|
test_qbitmaid test_write_csv test_qlist test_qprocess \
|
|
test_qlogging_extra test_apprise test_qbt
|
|
python3 -m coverage report -m --fail-under=100
|
|
|
|
komodo-deploy-script:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Run komodo-deploy.sh tests
|
|
run: python3 -m unittest -v test_komodo_deploy
|