Skip to content

Commit

Permalink
Add coverage and use reusable workflow from everest-ci
Browse files Browse the repository at this point in the history
Signed-off-by: Kai-Uwe Hermann <[email protected]>
  • Loading branch information
hikinggrass committed Nov 11, 2024
1 parent 049d691 commit 9a65edf
Show file tree
Hide file tree
Showing 9 changed files with 108 additions and 60 deletions.
3 changes: 3 additions & 0 deletions .ci/build-kit/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# syntax=docker/dockerfile:1
ARG BASE_IMAGE_TAG=latest
FROM ghcr.io/everest/everest-ci/build-kit-base:${BASE_IMAGE_TAG}
17 changes: 0 additions & 17 deletions .ci/build-kit/install_and_test.sh

This file was deleted.

23 changes: 23 additions & 0 deletions .ci/build-kit/scripts/compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/sh

cmake \
-B "$EXT_MOUNT/build" \
-S "$EXT_MOUNT/source" \
-G Ninja \
-DBUILD_TESTING=ON \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="$EXT_MOUNT/dist" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON

retVal=$?
if [ $retVal -ne 0 ]; then
echo "Configuring failed with return code $retVal"
exit $retVal
fi

ninja -C "$EXT_MOUNT/build"
retVal=$?
if [ $retVal -ne 0 ]; then
echo "Compiling failed with return code $retVal"
exit $retVal
fi
9 changes: 9 additions & 0 deletions .ci/build-kit/scripts/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/sh

ninja -C "$EXT_MOUNT/build" install
retVal=$?

if [ $retVal -ne 0 ]; then
echo "Installation failed with return code $retVal"
exit $retVal
fi
25 changes: 25 additions & 0 deletions .ci/build-kit/scripts/run_coverage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/sh

ninja \
-C "$EXT_MOUNT/build" \
everest-evse_security_gcovr_coverage
retValHTML=$?

ninja \
-C "$EXT_MOUNT/build" \
everest-evse_security_gcovr_coverage_xml
retValXML=$?

# Copy the generated coverage report and xml to the mounted directory in any case
cp -R "$EXT_MOUNT/build/everest-evse_security_gcovr_coverage" "$EXT_MOUNT/gcovr-coverage"
cp "$EXT_MOUNT/build/everest-evse_security_gcovr_coverage_xml.xml" "$EXT_MOUNT/gcovr-coverage-xml.xml"

if [ $retValHTML -ne 0 ]; then
echo "Coverage HTML report failed with return code $retValHTML"
exit $retValHTML
fi

if [ $retValXML -ne 0 ]; then
echo "Coverage XML report failed with return code $retValXML"
exit $retValXML
fi
12 changes: 12 additions & 0 deletions .ci/build-kit/scripts/run_unit_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/sh

ninja -C "$EXT_MOUNT/build" test
retVal=$?

# Copy the LastTest.log file to the mounted directory in any case
cp "$EXT_MOUNT/build/Testing/Temporary/LastTest.log" "$EXT_MOUNT/ctest-report"

if [ $retVal -ne 0 ]; then
echo "Unit tests failed with return code $retVal"
exit $retVal
fi
63 changes: 20 additions & 43 deletions .github/workflows/build_and_test.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build and test libevse-security
name: Build, Lint and Test
on:
pull_request: {}
workflow_dispatch:
Expand All @@ -11,47 +11,24 @@ on:
options:
- 'ubuntu-22.04'
- 'large-ubuntu-22.04-xxl'
schedule:
- cron: '37 13,1 * * *'

jobs:
lint:
name: Lint
runs-on: ${{ inputs.runner || 'ubuntu-22.04' }}
steps:
- name: Checkout libevse-security
uses: actions/checkout@v3
with:
path: source
- name: Run clang-format
uses: everest/everest-ci/github-actions/[email protected]
with:
source-dir: source
extensions: hpp,cpp
exclude: cache
test:
name: Build and test libevse-security
runs-on: ${{ inputs.runner || 'ubuntu-22.04' }}
steps:
- name: Checkout libevse-security
uses: actions/checkout@v3
with:
path: source
- name: Setup run scripts
run: |
mkdir scripts
rsync -a source/.ci/build-kit/ scripts
- name: Pull docker container
run: |
docker pull --platform=linux/x86_64 --quiet ghcr.io/everest/build-kit-alpine:latest
docker image tag ghcr.io/everest/build-kit-alpine:latest build-kit
- name: Unit test and install
run: |
docker run \
--volume "$(pwd):/ext" \
--name test-container \
build-kit run-script install_and_test
- name: Archive test results
if: always()
uses: actions/upload-artifact@v3
with:
name: ctest-report
path: ${{ github.workspace }}/ctest-report
ci:
name: Build, Lint and Test
uses: everest/everest-ci/.github/workflows/[email protected]
permissions:
contents: read
secrets:
coverage_deploy_token: ${{ secrets.SA_GITHUB_PAT }}
with:
runner: ${{ inputs.runner || 'ubuntu-22.04' }}
artifact_deploy_target_repo: EVerest/everest.github.io
run_coverage: true
do_not_run_coverage_badge_creation: false
run_install_wheels: false
run_integration_tests: false
ctest_report_path: ctest-report
coverage_report_path: gcovr-coverage
coverage_xml_path: gcovr-coverage-xml.xml
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ option(USING_CUSTOM_PROVIDER "Include code for using OpenSSL 3 and the custom pr

if((${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME} OR ${PROJECT_NAME}_BUILD_TESTING) AND BUILD_TESTING)
set(LIBEVSE_SECURITY_BUILD_TESTING ON)
evc_include(CodeCoverage)
append_coverage_compiler_flags()
endif()

if(USING_TPM2 AND USING_CUSTOM_PROVIDER)
Expand Down
14 changes: 14 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,20 @@ add_compile_definitions(BUILD_TESTING_EVSE_SECURITY)

add_test(${TEST_TARGET_NAME} ${TEST_TARGET_NAME})

setup_target_for_coverage_gcovr_html(
NAME ${PROJECT_NAME}_gcovr_coverage
EXECUTABLE ctest
DEPENDENCIES ${TEST_TARGET_NAME}
EXCLUDE "tests/*"
)

setup_target_for_coverage_gcovr_xml(
NAME ${PROJECT_NAME}_gcovr_coverage_xml
EXECUTABLE ctest
DEPENDENCIES ${TEST_TARGET_NAME}
EXCLUDE "tests/*"
)

install(
PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/generate_test_certs.sh"
PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/generate_test_certs_multi.sh"
Expand Down

0 comments on commit 9a65edf

Please sign in to comment.