GitHub Action CI for wsblib Python
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:
examples/wsblib/ci.yml
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.
Published on 2022-12-03