forked from BU-DiSC/bliss_benchmark
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Feature] Add Github actions workflow (BU-DiSC#35)
* Create cmake-single-platform.yml for Github actions workflow * Update cmake-single-platform.yml * added a verifier to check if unit tests exist * minor edit * minor edit
- Loading branch information
1 parent
6be89ef
commit 45a59ad
Showing
2 changed files
with
79 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. | ||
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml | ||
name: Basic Tests for BLISS Benchmark | ||
|
||
on: | ||
push: | ||
branches: | ||
- "main" | ||
pull_request: | ||
branches: [ "main" ] | ||
|
||
env: | ||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | ||
BUILD_TYPE: Release | ||
|
||
jobs: | ||
build: | ||
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. | ||
# You can convert this to a matrix build if you need cross-platform coverage. | ||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: 'true' | ||
token: ${{ secrets.ACTIONS_ACCESS_TOKEN }} | ||
|
||
- name: Configure CMake | ||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | ||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | ||
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | ||
|
||
- name: Build | ||
# Build your program with the given configuration | ||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | ||
|
||
- name: Verify Tests Exist | ||
|
||
working-directory: ${{github.workspace}}/tests | ||
run: sh unit_test_exists.sh | ||
|
||
- name: Test | ||
working-directory: ${{github.workspace}}/build | ||
# Execute tests defined by the CMake configuration. | ||
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | ||
run: ctest -C ${{env.BUILD_TYPE}} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
|
||
# boolean flag to check if test passed | ||
test_passed=true | ||
|
||
# loop through all files in src/bliss directory excluding subdirectories | ||
for file in $(find ../src/bliss -type f -name "bench_*.h"); do | ||
# get the filename without the path | ||
filename=$(basename $file) | ||
# get the filename without the extension | ||
filename_no_ext="${filename%.*}" | ||
# get index name from filename which is of format bench_<index>.h | ||
index=$(echo $filename_no_ext | cut -d'_' -f2) | ||
|
||
# check if the test folder exists | ||
if [ ! -d "test_$index" ]; then | ||
echo "tests/test_$index/ directory does not exist" | ||
test_passed=false | ||
break | ||
else | ||
# check if test folder contains a CMakeLists.txt or <index>_tests.cpp file | ||
if [ ! -f "test_$index/CMakeLists.txt" ] && [ ! -f "test_$index/${index}_tests.cpp" ]; then | ||
echo "tests/test_$index/ directory does not contain CMakeLists.txt or ${index}_tests.cpp file" | ||
test_passed=false | ||
break | ||
fi | ||
fi | ||
done | ||
|
||
if [ "$test_passed" = true ]; then | ||
echo "unit tests exist for all indexes" | ||
fi |