name: tests

on:
  pull_request:
    branches:
      - "16.0*"
  push:
    branches:
      - "16.0"
      - "16.0-ocabot-*"

jobs:
  unreleased-deps:
    runs-on: ubuntu-latest
    name: Detect unreleased dependencies
    steps:
      - uses: actions/checkout@v3
      - run: |
          for reqfile in requirements.txt test-requirements.txt ; do
              if [ -f ${reqfile} ] ; then
                  result=0
                  # reject non-comment lines that contain a / (i.e. URLs, relative paths)
                  grep "^[^#].*/" ${reqfile} || result=$?
                  if [ $result -eq 0 ] ; then
                      echo "Unreleased dependencies found in ${reqfile}."
                      exit 1
                  fi
              fi
          done
  test:
    runs-on: ubuntu-22.04
    container: ${{ matrix.container }}
    name: ${{ matrix.name }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - container: ghcr.io/oca/oca-ci/py3.10-odoo16.0:latest
            include: "account_journal_restrict_mode"
            name: test with Odoo
          - container: ghcr.io/oca/oca-ci/py3.10-ocb16.0:latest
            include: "account_journal_restrict_mode"
            name: test with OCB
            makepot: "true"
          - container: ghcr.io/oca/oca-ci/py3.10-odoo16.0:latest
            exclude: "account_journal_restrict_mode"
            name: test with Odoo
          - container: ghcr.io/oca/oca-ci/py3.10-ocb16.0:latest
            exclude: "account_journal_restrict_mode"
            name: test with OCB
            makepot: "true"
    services:
      postgres:
        image: postgres:12.0
        env:
          POSTGRES_USER: odoo
          POSTGRES_PASSWORD: odoo
          POSTGRES_DB: odoo
        ports:
          - 5432:5432
    env:
      INCLUDE: "${{ matrix.include }}"
      EXCLUDE: "${{ matrix.exclude }}"
    steps:
      - uses: actions/checkout@v3
        with:
          persist-credentials: false
      - name: Install addons and dependencies
        run: oca_install_addons
      - name: Check licenses
        run: manifestoo -d . check-licenses
      - name: Check development status
        run: manifestoo -d . check-dev-status --default-dev-status=Beta
      - name: Initialize test db
        run: oca_init_test_database
      - name: Run tests
        run: oca_run_tests
      - uses: codecov/codecov-action@v1
      - name: Update .pot files
        run: oca_export_and_push_pot https://x-access-token:${{ secrets.GIT_PUSH_TOKEN }}@github.com/${{ github.repository }}
        if: ${{ matrix.makepot == 'true' && github.event_name == 'push' && github.repository_owner == 'OCA' }}