From dec1771d5f080c24dc44052c4373e410c8cec752 Mon Sep 17 00:00:00 2001 From: Hamish Coleman Date: Wed, 29 Sep 2021 12:06:02 +0100 Subject: [PATCH] added test platform MacOS (#828) * Just for a laugh, lets naively throw the same build at non linux OS * Only run apt commands on linux (yes, this is not actually right, but it is close enough for github actions at the moment) * Start installing required macOS packages * Only run apt commands on linux #2 * Ensure that we use a Bourne shell, even on Windows * Until it is clear how to install autotools on windows in github runners, avoid fighting that bear * Only try to run gcovr on ubuntu-latest * Install the right macos dep * Install gcovr on macos and upload all coverage report artifacts * Upload a generated tests output artifact, even if the tests failed * Prepend a quick smoke test to the full matrix and coverage builds * Use short names for jobs --- .github/workflows/tests.yml | 43 +++++++++++++++++++++++++++++++------ Makefile.in | 4 ++++ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d353ef0..f138533 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,13 +1,26 @@ -name: Continuous testing +name: testing on: push: pull_request: jobs: - tests: - name: Run test environment + quicktest: + name: Quick test + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Run minimal test set + run: | + ./autogen.sh + ./configure + make test + + fulltest: + needs: quicktest + name: Full test runs-on: ${{ matrix.os }} strategy: fail-fast: true @@ -15,37 +28,55 @@ jobs: os: - ubuntu-latest - ubuntu-18.04 + - macos-latest steps: - uses: actions/checkout@v2 - - name: Install essential + - if: runner.os == 'Linux' + name: Install essential run: | sudo apt-get update sudo apt-get install build-essential + - if: runner.os == 'macOS' + name: Install packages + run: | + brew install automake gcovr + - name: generate a makefile and use it to install more packages run: | ./autogen.sh ./configure make build-dep + shell: bash - name: Run the real configure step run: | CFLAGS="-fprofile-arcs -ftest-coverage" LDFLAGS="--coverage" ./configure --with-zstd + shell: bash - name: Run embedded tests run: make test + shell: bash + + - if: ${{ always() }} + name: Upload tests output + uses: actions/upload-artifact@v2 + with: + name: tests-out-${{matrix.os}} + path: tests/*.out - - name: Generate a coverage report + - name: Generate coverage reports run: | make cover make gcov + shell: bash - name: Upload gcovr report artifact uses: actions/upload-artifact@v2 with: - name: code-coverage-report + name: coverage-${{matrix.os}} path: coverage - name: Upload data to codecov diff --git a/Makefile.in b/Makefile.in index af1d8a7..76999d4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -116,7 +116,11 @@ gcov: # This is the superset of all packages that might be needed. # It is a convinent target to use during development or from a CI/CD system build-dep: +ifeq ($(OS),Linux) sudo apt install build-essential autoconf libcap-dev libzstd-dev gcovr +else + echo Not attempting to handle build dependancies for non dpkg systems +endif clean: rm -rf $(N2N_OBJS) $(N2N_LIB) $(APPS) $(DOCS) coverage/ *.dSYM *~