name: Tests on: push: branches: [ master ] paths-ignore: - 'doc/**' - 'src/pretix/locale/**' pull_request: branches: [ master ] paths-ignore: - 'doc/**' - 'src/pretix/locale/**' permissions: contents: read # to fetch code (actions/checkout) env: FORCE_COLOR: 1 jobs: test: runs-on: ubuntu-22.04 name: Tests strategy: matrix: python-version: ["3.9", "3.10", "3.11"] database: [sqlite, postgres] exclude: - database: sqlite python-version: "3.9" - database: sqlite python-version: "3.10" steps: - uses: actions/checkout@v4 - uses: harmon758/postgresql-action@v1 with: postgresql version: '15' postgresql db: 'pretix' postgresql user: 'postgres' postgresql password: 'postgres' if: matrix.database == 'postgres' - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Install system dependencies run: sudo apt update && sudo apt install gettext - name: Install Python dependencies run: pip3 install --ignore-requires-python -e ".[dev]" psycopg2-binary # We ignore that flake8 needs newer python as we don't run flake8 during tests - name: Run checks run: python manage.py check working-directory: ./src - name: Install JS dependencies working-directory: ./src run: make npminstall - name: Compile working-directory: ./src run: make all compress - name: Run tests working-directory: ./src run: PRETIX_CONFIG_FILE=tests/travis_${{ matrix.database }}.cfg py.test -n 3 -p no:sugar --cov=./ --cov-report=xml --reruns 3 tests --maxfail=100 - name: Run concurrency tests working-directory: ./src run: PRETIX_CONFIG_FILE=tests/travis_${{ matrix.database }}.cfg py.test tests/concurrency_tests/ --reruns 0 --reuse-db if: matrix.database == 'postgres' - name: Upload coverage uses: codecov/codecov-action@v1 with: file: src/coverage.xml token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true if: matrix.database == 'postgres' && matrix.python-version == '3.11'