summaryrefslogtreecommitdiff
path: root/.github/workflows/linux_unit_tests.yaml
blob: 47adfb3e8f5d725d947af80de5b653de54ccf68f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
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