From 712ff066e886967dec954d97aea49658bf248195 Mon Sep 17 00:00:00 2001
From: Thibault Lestang <thibault.lestang@protonmail.com>
Date: Fri, 4 Mar 2022 13:48:14 +0000
Subject: [PATCH] Add GH actions workflow for unit tests with pFUnit

---
 .github/workflows/unit_tests.yml | 60 ++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 .github/workflows/unit_tests.yml

diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml
new file mode 100644
index 0000000..49ecf8a
--- /dev/null
+++ b/.github/workflows/unit_tests.yml
@@ -0,0 +1,60 @@
+name: Build
+
+on: push
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+
+    steps:
+
+    - uses: actions/checkout@v2
+
+    # We don't want to build openmpi each time this workflow is
+    # run. Setup caching of OpenMPI after it is built and installed.
+    # See "Caching dependencies to speed up workflows" on the GH
+    # actions docs.
+    - name: Cache OpenMPI
+      id: cache-openmpi
+      uses: actions/cache@v2
+      with:
+        path: openmpi-4.1.2/installed
+        key: openmpi-4.1.2
+
+    # Same goes for pFUnit
+    - name: Cache pFUnit
+      id: cache-pfunit
+      uses: actions/cache@v2
+      with:
+        path: pfunit-4.2.2/installed
+        key: pfunit-4.2.2
+
+    - name: Build openmpi
+      if: steps.cache-openmpi.outputs.cache-hit != 'true'
+      run: |
+        wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz
+        tar -xf openmpi-4.1.2.tar.gz
+        cd openmpi-4.1.2/ && mkdir installed
+        ./configure --prefix=$(pwd)/installed
+        make all install
+
+    - name: Build pFUnit
+      run: |
+        git clone --depth 1 --branch v4.2.2 https://github.com/Goddard-Fortran-Ecosystem/pFUnit.git pfunit-4.2.2
+        mkdir pfunit-4.2.2/build && cd pfunit-4.2.2/build
+        cmake ..
+        make install
+
+    - name: Build the tests
+      run: |
+        export PATH=$(pwd)/openmpi-4.1.2/installed/bin/:$PATH
+        cmake ..
+        make tests
+      env:
+        PFUNIT_DIR: pfunit-4.2.2/build/installed
+
+    - name: Run unit tests
+      run: |
+        export PATH=$(pwd)/openmpi-4.1.2/installed/bin/:$PATH
+        export LD_LIBRARY_PATH=$(pwd)/openmpi-4.1.2/installed/lib:$LD_LIBRARY_PATH
+        mpirun -n 1 build/tests/tests