suever/MATL-Online

View on GitHub
.github/workflows/tests.yml

Summary

Maintainability
Test Coverage
name: tests
on: push

jobs:
  integration-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Cache Docker Layers
        uses: actions/cache@v4
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Build image
        uses: docker/build-push-action@v5
        with:
          context: .
          load: true
          file: Dockerfile
          push: false
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new

      - name: run tests
        run: make integration-tests

      - name: Move cache
        run: |
          rm -rf /tmp/.buildx-cache
          mv /tmp/.buildx-cache-new /tmp/.buildx-cache

  unit-tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version:
          - "3.10"
          - "3.11"

    steps:
      - uses: actions/checkout@v4

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install Octave
        run: |
          sudo apt-get update -qq
          sudo apt-get install -qq octave liboctave-dev libmpfr-dev

      - name: Install Yarn and Node
        uses: actions/setup-node@v4
        with:
          node-version: 18.x

      - name: Install Node dependencies
        run: yarn install --frozen-lockfile

      - name: Install Python dependencies
        run: |
          pip install --upgrade pip setuptools wheel coveralls
          pip install --only-binary=numpy,scipy -r requirements.txt

      - name: Run tests
        run: |
          export PATH="$(yarn bin):$PATH"
          make test

      - name: Report Coverage
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          coveralls --service=github