Skip to content

Commit

Permalink
Merge pull request #2 from hassansalehe/code-quality-set-up
Browse files Browse the repository at this point in the history
Code quality set up
  • Loading branch information
hassansalehe authored Jun 12, 2021
2 parents 90a9d10 + 025ee30 commit fe4a872
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 0 deletions.
66 changes: 66 additions & 0 deletions .github/workflows/C_Integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: CMake

on: [push]

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-20.04

steps:
- name: Install gtest manually
run: sudo apt install googletest libgtest-dev lcov
- uses: actions/checkout@v2

- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE/src/unittests -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON

- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build . --config $BUILD_TYPE

- name: Run tests
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -V -C $BUILD_TYPE

- name: Run Gcov/Lcov and push report to Codecov
working-directory: ${{github.workspace}}
shell: bash
run: |
find ${{runner.workspace}}/build -iname '*.gcno' -exec cp {} ./ \;
find ${{runner.workspace}}/build -iname '*.gcda' -exec cp {} ./ \;
gcov -o . ./tests/race_test.cpp --object-directory ./
lcov --directory . --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' '*/tests/*' --output-file coverage.info
lcov --list coverage.info
bash <(curl -s https://codecov.io/bash) -X gcov -f coverage.info || echo "Failed to upload to Codecov"
#- name: Upload coverage to Codecov
# uses: codecov/codecov-action@v1
# with:
# fail_ci_if_error: true
# gcov_path_exclude: tests/
36 changes: 36 additions & 0 deletions src/unittests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
##################################################################
## TaskSanitizer: a lightweight determinacy race checking
## tool for OpenMP task applications
##
## Copyright (c) 2015 - 2018 Hassan Salehe Matar
## Copying or using this code by any means whatsoever
## without consent of the owner is strictly prohibited.
##
## Contact: hassansalehe-at-gmail-dot-com
##
##################################################################

cmake_minimum_required(VERSION 3.4.3)

enable_testing()

# Locate GTest package
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../../bin/include
${CMAKE_CURRENT_SOURCE_DIR}/../common
${CMAKE_CURRENT_SOURCE_DIR}/../detector
${CMAKE_CURRENT_SOURCE_DIR}/../detector/commutativity)

add_compile_options(-g -O0 -Wall -fprofile-arcs -ftest-coverage -fpermissive)
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE ON)
link_libraries(${GTEST_LIBRARIES} pthread gtest_main gcov --coverage)

# Link commonTests with what we want to test and
# the GTest and pthread library
add_executable(commonTests Common_Defs_gtest.cc)

# Add tests for Ctest
add_test(common_tests, commonTests)
20 changes: 20 additions & 0 deletions src/unittests/Common_Defs_gtest.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include "common/defs.h"
#include <gtest/gtest.h>

//! \brief Test that OperRepresentation converts operations
//! to approriate string representations.
TEST(OperRepresentation, TestConversion) {
ASSERT_EQ("ADD", OperRepresentation(OPERATION::ADD));
ASSERT_EQ("SUB", OperRepresentation(OPERATION::SUB));
ASSERT_EQ("MUL", OperRepresentation(OPERATION::MUL));
ASSERT_EQ("DIV", OperRepresentation(OPERATION::DIV));
ASSERT_EQ("RET", OperRepresentation(OPERATION::RET));
ASSERT_EQ("SHL", OperRepresentation(OPERATION::SHL));
ASSERT_EQ("CALL", OperRepresentation(OPERATION::CALL));
ASSERT_EQ("LOAD", OperRepresentation(OPERATION::LOAD));
ASSERT_EQ("STORE", OperRepresentation(OPERATION::STORE));
ASSERT_EQ("ALLOCA", OperRepresentation(OPERATION::ALLOCA));
ASSERT_EQ("BITCAST", OperRepresentation(OPERATION::BITCAST));
ASSERT_EQ("GETELEMENTPTR", OperRepresentation(OPERATION::GETELEMENTPTR));
}

0 comments on commit fe4a872

Please sign in to comment.