name: test on: push: branches: - master pull_requests: 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.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12" ] # For Python 3.6, we need to fall back to Ubuntu 20.04 runs-on: ${{ matrix.python-version == '3.6' && 'ubuntu-20.04' || 'ubuntu-latest' }} env: test_results_dir: test-results-${{ matrix.python-version }} steps: - name: Set up Python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Checkout uses: actions/checkout@v3 - name: Update pip run: python3 -m pip install -U pip - name: Avoid compiling OpenCV and NumPy on Python 3.6 run: | if python3 --version | grep -q "Python 3.6"; then pip install --prefer-binary -U opencv-python-headless numpy fi - 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 mkdir -p ../$test_results_dir python3 -m pytest --junitxml=../$test_results_dir/junit.xml -o junit_family=legacy - name: Upload test results uses: actions/upload-artifact@v3 if: success() || failure() with: name: ${{ env.test_results_dir }} path: ${{ env.test_results_dir }} - name: Report tests uses: dorny/test-reporter@v1 if: success() || failure() with: name: Results on Python ${{ matrix.python-version }} path: "${{env.test_results_dir }}/junit.xml" reporter: java-junit