summaryrefslogblamecommitdiff
path: root/.github/workflows/linux_unit_tests.yaml
blob: c6b9309e99cf930dfafef00df65a5725f548efbc (plain) (tree)
1
2
3
4
5
6
7
8
9




                 
               
                   

               
               
                   




                          
                                                      


                               

                      
                                   




                                                    


                                                                              
                           

                                                                         






                                                                   
                                          
















                                                                                                                                          
                                     

                              



                               

                      

                                   
                           


                                   

                                                                       
                           

                                                                         






                                                                   
                                          














                                                                                                                                          
                                     

                               
 













                                                                  

























                                                                        














                                                                                                 
                                                  




                                       


















































                                                                                                                                            
name: linux tests

on:
  push:
    branches:
      - develop
      - releases/**
  pull_request:
    branches:
      - develop
      - releases/**
jobs:
  unittests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9]

    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install System packages
      run: |
          sudo apt-get -y update
          # Needed for unit tests
          sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial
          sudo apt-get install -y ninja-build patchelf
          # Needed for kcov
          sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
          sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
    - name: Install Python packages
      run: |
          pip install --upgrade pip six setuptools codecov coverage
    - name: Setup git configuration
      run: |
          # Need this for the git tests to succeed.
          git --version
          . .github/workflows/setup_git.sh
    - name: Install kcov for bash script coverage
      env:
          KCOV_VERSION: 34
      run: |
          KCOV_ROOT=$(mktemp -d)
          wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
          tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
          mkdir -p ${KCOV_ROOT}/build
          cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
          make -C ${KCOV_ROOT}/build && sudo  make -C ${KCOV_ROOT}/build install
    - name: Run unit tests
      env:
          COVERAGE: true
      run: |
          share/spack/qa/run-unit-tests
          coverage combine
          coverage xml
    - uses: codecov/codecov-action@v1
      with:
        flags: unittests,linux
  shell:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - uses: actions/setup-python@v2
      with:
        python-version: 3.9
    - name: Install System packages
      run: |
          sudo apt-get -y update
          # Needed for shell tests
          sudo apt-get install -y coreutils csh zsh tcsh fish dash bash
          # Needed for kcov
          sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
          sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
    - name: Install Python packages
      run: |
          pip install --upgrade pip six setuptools codecov coverage
    - name: Setup git configuration
      run: |
          # Need this for the git tests to succeed.
          git --version
          . .github/workflows/setup_git.sh
    - name: Install kcov for bash script coverage
      env:
          KCOV_VERSION: 38
      run: |
          KCOV_ROOT=$(mktemp -d)
          wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
          tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
          mkdir -p ${KCOV_ROOT}/build
          cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
          make -C ${KCOV_ROOT}/build && sudo  make -C ${KCOV_ROOT}/build install
    - name: Run shell tests
      env:
          COVERAGE: true
      run: |
          share/spack/qa/run-shell-tests
    - uses: codecov/codecov-action@v1
      with:
        flags: shelltests,linux

  centos6:
    # Test for Python2.6 run on Centos 6
    runs-on: ubuntu-latest
    container: spack/github-actions:centos6
    steps:
    - name: Run unit tests
      env:
          HOME: /home/spack-test
      run: |
          whoami && echo $HOME && cd $HOME
          git clone https://github.com/spack/spack.git && cd spack
          git fetch origin ${{ github.ref }}:test-branch
          git checkout test-branch
          share/spack/qa/run-unit-tests

  rhel8-platform-python:
    runs-on: ubuntu-latest
    container: registry.access.redhat.com/ubi8/ubi
    steps:
    - name: Install dependencies
      run: |
          dnf install -y \
              bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \
              make patch tcl unzip which xz
    - uses: actions/checkout@v2
    - name: Setup repo and non-root user
      run: |
          git --version
          git fetch --unshallow
          . .github/workflows/setup_git.sh
          useradd spack-test
          chown -R spack-test .
    - name: Run unit tests
      env:
          SPACK_PYTHON: /usr/libexec/platform-python
      shell: runuser -u spack-test -- bash {0}
      run: |
          source share/spack/setup-env.sh
          spack unit-test -k 'not svn and not hg' -x --verbose

  clingo:
    # Test for the clingo based solver
    runs-on: ubuntu-latest
    container: spack/github-actions:clingo
    steps:
      - name: Run unit tests
        run: |
          whoami && echo PWD=$PWD && echo HOME=$HOME && echo SPACK_TEST_SOLVER=$SPACK_TEST_SOLVER
          which clingo && clingo --version
          git clone https://github.com/spack/spack.git && cd spack
          git fetch origin ${{ github.ref }}:test-branch
          git checkout test-branch
          . share/spack/setup-env.sh
          spack compiler find
          spack solve mpileaks%gcc
          coverage run $(which spack) unit-test -v
          coverage combine
          coverage xml
      - uses: codecov/codecov-action@v1
        with:
          flags: unittests,linux,clingo
  clingo-cffi:
    # Test for the clingo based solver using the CFFI package
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - uses: actions/setup-python@v2
        with:
          python-version: 3.8
      - name: Install System packages
        run: |
            sudo apt-get -y update
            # Needed for unit tests
            sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial
            sudo apt-get install -y ninja-build patchelf
            # Needed for kcov
            sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev
            sudo apt-get -y install zlib1g-dev libdw-dev libiberty-dev
      - name: Install Python packages
        run: |
            pip install --upgrade pip six setuptools codecov coverage cffi
            pip install -i https://test.pypi.org/simple/ clingo-cffi
      - name: Setup git configuration
        run: |
            # Need this for the git tests to succeed.
            git --version
            . .github/workflows/setup_git.sh
      - name: Install kcov for bash script coverage
        env:
            KCOV_VERSION: 34
        run: |
            KCOV_ROOT=$(mktemp -d)
            wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
            tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
            mkdir -p ${KCOV_ROOT}/build
            cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
            make -C ${KCOV_ROOT}/build && sudo  make -C ${KCOV_ROOT}/build install
      - name: Run unit tests
        run: |
          whoami && echo PWD=$PWD && echo HOME=$HOME && echo SPACK_TEST_SOLVER=$SPACK_TEST_SOLVER
          python -c "import clingo; print(hasattr(clingo.Symbol, '_rep'), clingo.__version__)"
          . share/spack/setup-env.sh
          spack compiler find
          spack solve mpileaks%gcc
          coverage run $(which spack) unit-test -v
          coverage combine
          coverage xml
      - uses: codecov/codecov-action@v1
        with:
          flags: unittests,linux,clingo