view .github/workflows/ci-test.yml @ 6860:69928bcce59d

fix env again.
author John Rouillard <rouilj@ieee.org>
date Wed, 31 Aug 2022 23:16:26 -0400
parents ebdadf3b2653
children 097578791f7b
line wrap: on
line source

# merged in python-package.yml workflow

name: roundup-ci

on: 
    push:
        branches: [ "master" ]
#    pull_request:
#        branches: [ "master" ]
#    schedule:
#        - cron '0 11 * * 1-5'

jobs:
  test:
    name: CI build test

    runs-on: ubuntu-latest
    # use below if running on multiple OS's.
    # runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        # Run in all these versions of Python
        python-version: [ "2.7", "3.10" ]
        #python-version: [ "2.7", "3.10", "3.9", "3.8", "3.6" ]
    # use for multiple os or ubuntu versions
    #    os: [ubuntu-latest, macos-latest, windows-latest]

    env:
      #  OS: ${{ matrix.os }}
      PYTHON_VERSION: ${{ matrix.python-version }}

    steps:
      # Checkout the latest code from the repo
      - name: Checkout source
        uses: actions/checkout@v3

      # Setup which version of Python to use
      - name: Set Up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}

      # Display the Python version being used
      - name: Display Python version
        run: python -c "import sys; print(sys.version)"; echo $PYTHON_VERSION

      # Install the databases
      - name: Install postgres
        run: |
          sudo apt-get install postgresql
          # Disable fsync for speed, don't care about data durability when testing
          sudo sed -i -e '$a\fsync = off' /etc/postgresql/*/*/postgresql.conf
          sudo service postgresql restart; sleep 30
          # set up postgresql database
          sudo -u postgres psql -c "CREATE ROLE rounduptest WITH CREATEDB LOGIN PASSWORD 'rounduptest';" -U postgres

      - name: Install mysql/mariadb
        run: |
          sudo apt-get install mysql-server mysql-client
          # set up mysql database
          sudo sed -i -e '/^\[mysqld\]/,/^\[mysql/s/^max_allowed_packet.*/max_allowed_packet = 500M/' /etc/mysql/my.cnf
          cat /etc/mysql/my.cnf
          sudo service mysql restart
          sudo mysql -u root -e 'GRANT ALL ON rounduptest.* TO rounduptest@localhost IDENTIFIED BY "rounduptest";'

      - name: Update pip
        run: python -m pip install --upgrade pip

      - name: Install db libraries
        run: pip install psycopg2 mysqlclient

      - name: Install auxilary packages
        run: |
          sudo apt-get install swig gpgsm libgpgme-dev
          pip install beautifulsoup4 brotli jinja2 markdown2 \
              pyjwt pytz whoosh
          # pip install gpg

      - name: Install aux packages that need versions differences
        # if zstd fails install, keep going with test, don't abort
        run: |
          set -xv
          pip install zstd || true
          if [[ $(python -c 'import sys; print("%d.%d.%d"%(sys.version_info.major, sys.version_info.minor, sys.version_info.micro))') != "2."* ]]; then 
              pip install Markdown; fi

      - name: Install pytest and other packages needed for running tests
        run: pip install codecov flake8 pytest pytest-cov requests

      - name: Test build roundup and install locale so lang tests work.
        run: |
          sudo apt-get install gettext
          python setup.py build
          (cd locale; make local_install; ls -lR locale/de/LC_MESSAGES)

      - name: run flake8 - abort for syntax error, otherwise warn only
        run: |
            # stop the build for Python syntax errors or undefined names
            # talgettext is a utility function ignore it.
            flake8 roundup --count --select=E9,F63,F7,F82 --show-source --statistics --extend-exclude talgettext.py
            # exit-zero treats all errors as warnings.
            #   The GitHub editor is 127 chars wide
            flake8 roundup --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

      # Run the tests using pytest with test files in tests directory.
      - name: Run tests
        run: |
          if [[ $(python -c 'import sys; print("%d.%d.%d"%(sys.version_info.major, sys.version_info.minor, sys.version_info.micro))') != "2."* ]]; then 
            pytest -r a \
              -W default \
              -W "ignore:SelectableGroups:DeprecationWarning" \
              -W "ignore:the imp module:DeprecationWarning:gpg.gpgme:15" \
              -W "ignore:'U' mode::docutils.io"  \
              -W "ignore:unclosed:ResourceWarning:roundup.roundup.demo" \
              -W "ignore:unclosed file:ResourceWarning:enum" \
              -v --maxfail=5 test/ --cov=roundup
          else
            # python2 case
            pytest -v -r a --maxfail=5 test/ --cov=roundup
          fi

      - name: Upload coverage to Codecov
        # see: https://github.com/codecov/codecov-action#usage
        uses: codecov/codecov-action@v3
        with:
          verbose: true

      - name: test build_doc
        run: |
          python ./setup.py build_doc

Roundup Issue Tracker: http://roundup-tracker.org/