name: Test on: push: branches: - master pull_request: branches: - master schedule: - cron: "00 16 07 * *" # = monthly # Allow manually running (from GitHub Web) workflow_dispatch: # Allow calling this workflow (e.g. from release workflow) workflow_call: jobs: test: strategy: fail-fast: false matrix: python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12", "3.13" ] runs-on: "ubuntu-latest" steps: - name: Set up Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Checkout uses: actions/checkout@v4 - name: Install possible lxml build requirements (if building from source) run: sudo apt-get install -y libxml2-dev libxslt-dev python3-dev - name: Install possible shapely build requirements (if building from source) run: sudo apt-get install -y libgeos-dev - name: Update pip run: python3 -m pip install -U pip - name: Install requirements*.txt run: | for requirements_txt in requirements*.txt; do python3 -m pip install -r $requirements_txt; done - name: Test run: | cd src python3 -m pytest --junitxml=../${{matrix.python-version}}-junit.xml -o junit_family=legacy - name: Upload test results uses: actions/upload-artifact@v4 if: success() || failure() with: name: test-results-${{matrix.python-version}} path: ${{matrix.python-version}}-junit.xml