After the failure to create GitHub configuration for farmworld
I did not know if I should call it a day or try to find something else where I manage to set up GitHub Actions. I went back to PyDigger and found the wsblib Python package where the name stands for Web Server Base Library.
It had some tests in the tests/
folder.
After looking at the test files I saw that they are using BuPyTest.
I have not hear about it. I saw that both files were prepared to be executed directly using the following:
if __name__ == '__main__':
bupytest.this()
so I went on running them as python tests/test_server.py
.
Later, when I went and looked at the documentation of BuPyTest and saw that it can be also used as a command-line tool.
Stages
First I only configured the CI to run on Ubuntu using Python 3.11.
Then I extended it to run the tests on all 3 operating systems and 3 different versions of Python. That's when I found out that one of the test files consistently fails on Windows and OSX. So I configured the CI that on of the tests files will always run and the other one only when the operating system is Ubuntu Linux.
Finally I switched from running the tests with python
to running them using bupytest
.
GitHub Actions configuration file
This is the most recent version of the file:
name: CI
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: '42 5 * * *'
jobs:
build:
strategy:
fail-fast: false
matrix:
runner: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11"]
runs-on: ${{matrix.runner}}
name: OS ${{matrix.runner}} Python ${{matrix.python-version}}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Run tests on every platform
run: |
bupytest test tests/test_server.py
- name: Run tests only on Linux
if: ${{ failure() && matrix.runner == 'ubuntu-latest' }}
run: |
bupytest test tests/test_socket.py
Conclusion
Sometimes it is simple to set up GitHub Actions, even with testing frameworks that I don't know yet.