summaryrefslogtreecommitdiff
path: root/.github/workflows/linux_unit_tests.yaml
blob: 78fd0e8ce03ff81bc216e0eed8bbf1aa36b18a18 (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
name: linux tests

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

    steps:
    - uses: actions/checkout@v2
    - name: Setup Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install System packages
      run: |
          sudo apt-get -y update
          sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial ninja-build patchelf
          # Needed for kcov
          sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev 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
          git config --global user.email "spack@example.com"
          git config --global user.name "Test User"
          git fetch -u origin develop:develop
    - 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
    - name: Upload to codecov.io
      uses: codecov/codecov-action@v1
      with:
        flags: unittests,linux
  flake8:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
      with:
        python-version: 3.8
    - name: Install Python packages
      run: |
        pip install --upgrade pip six setuptools flake8
    - name: Setup git configuration
      run: |
        # Need this for the git tests to succeed.
        git --version
        git config --global user.email "spack@example.com"
        git config --global user.name "Test User"
        git fetch -u origin develop:develop
    - name: Run flake8 tests
      run: |
          share/spack/qa/run-flake8-tests
  shell:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
      with:
        python-version: 3.8
    - name: Install System packages
      run: |
          sudo apt-get -y update
          sudo apt-get install -y coreutils gfortran gnupg2 mercurial ninja-build patchelf zsh fish
          # Needed for kcov
          sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev 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
          git config --global user.email "spack@example.com"
          git config --global user.name "Test User"
          git fetch -u origin develop:develop
    - 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
    - name: Upload to codecov.io
      uses: codecov/codecov-action@v1
      with:
        flags: shelltests,linux
  documentation:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
      with:
        python-version: 3.8
    - name: Install System packages
      run: |
        sudo apt-get -y update
        sudo apt-get install -y coreutils ninja-build graphviz
    - name: Install Python packages
      run: |
        pip install --upgrade pip six setuptools
        pip install --upgrade -r lib/spack/docs/requirements.txt
    - name: Build documentation
      run: |
          share/spack/qa/run-doc-tests