Skip to content

Commit

Permalink
Merge pull request #364 from MissouriMRDT/topic/testing-updates
Browse files Browse the repository at this point in the history
Cleanup Code Coverage and Unit Tests
  • Loading branch information
Byrdman32 authored Jan 10, 2025
2 parents d4946d5 + 0fb6c61 commit 06764cf
Show file tree
Hide file tree
Showing 31 changed files with 1,890 additions and 615 deletions.
175 changes: 88 additions & 87 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -1,96 +1,97 @@
name: Code Coverage

on:
pull_request:
branches: ["development"]
pull_request:
branches: ["development"]

push:
branches: ["development"]
push:
branches: ["development"]

workflow_dispatch:
workflow_dispatch:

concurrency:
group: "coverage"
cancel-in-progress: false
group: "coverage"
cancel-in-progress: false

jobs:
analyze-code-coverage:
runs-on: [self-hosted, linux, X64]

steps:
- name: Setup Action Environment
if: always()
run: |
cd /opt
if [ ! -d "Autonomy_Software" ]; then git clone --recurse-submodules -j8 https://github.com/MissouriMRDT/Autonomy_Software.git; fi
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
ref: ${{ github.event.pull_request.head.sha }}

- name: Fix Dubious Ownership
run: git config --global --add safe.directory /opt/Autonomy_Software

- name: Extract branch name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch

- name: Update Branch
run: |
cd /opt/Autonomy_Software/
git fetch --force --recurse-submodules
branch=${{ steps.extract_branch.outputs.branch }}
echo ${{ github.event.pull_request.head.sha }}
git reset --hard ${{ github.event.pull_request.head.sha }}
git checkout ${{ github.event.pull_request.head.sha }}
# git pull --ff-only
git submodule update --force --recursive --init
git config --global --add safe.directory /opt/Autonomy_Software/external
- name: Configure and Build
run: |
cd /opt/Autonomy_Software/
if [ -d "build" ]; then rm -Rf build; fi
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS_MODE=ON -DBUILD_CODE_COVERAGE=ON -DBUILD_COVERAGE_WATCH=OFF -DBUILD_VERBOSE_MODE=ON
make -j8
- name: Run Tests
run: |
cd /opt/Autonomy_Software/build
ctest --output-on-failure -T Test -T Coverage -R UTest --output-junit UTests.xml
ctest --output-on-failure -T Test -T Coverage -R ITest --output-junit ITests.xml
gcovr --root .. --xml-pretty --output AllCoverage.xml
- name: Upload Test Coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
root_dir: /opt/Autonomy_Software
working-directory: /opt/Autonomy_Software
verbose: true
plugins: gcov
directory: /opt/Autonomy_Software/build
files: /opt/Autonomy_Software/build/AllCoverage.xml

- name: Upload Test Results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
root_dir: /opt/Autonomy_Software
working-directory: /opt/Autonomy_Software/build
verbose: true
directory: /opt/Autonomy_Software/build/
files: UTests.xml, ITests.xml

- name: Cleanup Action Environment
if: always()
run: |
cd /opt
rm -rf /opt/Autonomy_Software
analyze-code-coverage:
runs-on: [self-hosted, linux, X64]

steps:
- name: Setup Action Environment
if: always()
run: |
cd /opt
if [ ! -d "Autonomy_Software" ]; then git clone --recurse-submodules -j8 https://github.com/MissouriMRDT/Autonomy_Software.git; fi
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
ref: ${{ github.event.pull_request.head.sha }}

- name: Fix Dubious Ownership
run: git config --global --add safe.directory /opt/Autonomy_Software

- name: Extract branch name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch

- name: Update Branch
run: |
cd /opt/Autonomy_Software/
git fetch --force --recurse-submodules
branch=${{ steps.extract_branch.outputs.branch }}
echo ${{ github.event.pull_request.head.sha }}
git reset --hard ${{ github.event.pull_request.head.sha }}
git checkout ${{ github.event.pull_request.head.sha }}
# git pull --ff-only
git submodule update --force --recursive --init
git config --global --add safe.directory /opt/Autonomy_Software/external
- name: Configure and Build
run: |
cd /opt/Autonomy_Software/
if [ -d "build" ]; then rm -Rf build; fi
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS_MODE=ON -DBUILD_CODE_COVERAGE=ON -DBUILD_COVERAGE_WATCH=OFF -DBUILD_VERBOSE_MODE=ON
make -j8
- name: Run Tests
run: |
cd /opt/Autonomy_Software/build
ctest --output-on-failure -T Test -T Coverage -L UTest --output-junit UTests.xml
ctest --output-on-failure -T Test -T Coverage -L ITest --output-junit ITests.xml
gcovr --root .. --xml-pretty --output AllCoverage.xml --exclude '.*/tests/.*'
- name: Upload Test Coverage to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
root_dir: /opt/Autonomy_Software
working-directory: /opt/Autonomy_Software
verbose: true
plugins: gcov
directory: /opt/Autonomy_Software/build
files: /opt/Autonomy_Software/build/AllCoverage.xml

- name: Upload Test Results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
root_dir: /opt/Autonomy_Software
working-directory: /opt/Autonomy_Software/build
verbose: true
directory: /opt/Autonomy_Software/build/
files: UTests.xml, ITests.xml

- name: Cleanup Action Environment
if: always()
run: |
cd /opt
rm -rf /opt/Autonomy_Software
7 changes: 5 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ endif()
## Build Unit and Integration Tests
if (BUILD_TESTS_MODE)
message("-- [x]: Build Unit and Integration Tests: Enabled")
include(CTest)
enable_testing()
else()
message("-- [ ]: Build Unit and Integration Tests: Disabled")
Expand Down Expand Up @@ -359,7 +360,8 @@ if (BUILD_TESTS_MODE)

foreach(test_file ${UTests_SRC})
get_filename_component(test_name ${test_file} NAME_WE)
add_test(NAME UTest_${test_name} COMMAND ${EXE_NAME}_UnitTests --gtest_filter=${test_name}Test.* --timestamp=${CURRENT_TIMESTAMP})
add_test(NAME UTest_${test_name} COMMAND ${EXE_NAME}_UnitTests --gtest_filter=${test_name}Test*.* --timestamp=${CURRENT_TIMESTAMP})
set_tests_properties(UTest_${test_name} PROPERTIES LABELS "UTest")
endforeach()
else()
message("No Unit Tests!")
Expand All @@ -371,7 +373,8 @@ if (BUILD_TESTS_MODE)

foreach(test_file ${ITests_SRC})
get_filename_component(test_name ${test_file} NAME_WE)
add_test(NAME ITest_${test_name} COMMAND ${EXE_NAME}_IntegrationTests --gtest_filter=${test_name}Test.* --timestamp=${CURRENT_TIMESTAMP})
add_test(NAME ITest_${test_name} COMMAND ${EXE_NAME}_IntegrationTests --gtest_filter=${test_name}Test*.* --timestamp=${CURRENT_TIMESTAMP})
set_tests_properties(ITest_${test_name} PROPERTIES LABELS "iTest")
endforeach()
else()
message("No Integration Tests!")
Expand Down
26 changes: 18 additions & 8 deletions codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,32 @@ coverage:
changes: false

ignore:
# Project Directories to be ignored
- "examples/*"
- "external/*"
- "tools/*"
- "tests/**"
- "**/CMakeFiles/*"
- "**/build/*"

# Extensions to be ignored
- "**/*.md"
- "**/*.yml"
- "**/build/*"

# System Files to be ignored
- "/usr/include/*"

# Project Source Files to be ignored
- "src/main.cpp"

flags:
unit_tests:
paths:
- "tests/Unit/**"
integration_tests:
paths:
- "tests/Integration/**"
flag_management:
individual_flags:
- name: unit_tests
paths:
- "tests/Unit/**"
- name: unit_tests
paths:
- "tests/Integration/**"

component_management:
individual_components:
Expand Down
3 changes: 0 additions & 3 deletions src/AutonomyGlobals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@ namespace globals
// Forward declarations for namespace variables and objects.
/////////////////////////////////////////

// Versioning:
IdentitySoftware* g_pIdentifySoftware;

// Waypoint Handler:
WaypointHandler* g_pWaypointHandler;

Expand Down
3 changes: 0 additions & 3 deletions src/AutonomyGlobals.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#ifndef AUTONOMY_GLOBALS_H
#define AUTONOMY_GLOBALS_H

#include "IdentitySoftware.h"
#include "drivers/DriveBoard.h"
#include "drivers/MultimediaBoard.h"
#include "drivers/NavigationBoard.h"
Expand Down Expand Up @@ -40,8 +39,6 @@ namespace globals
/////////////////////////////////////////
// Declare namespace external variables and objects.
/////////////////////////////////////////
// Versioning:
extern IdentitySoftware* g_pIdentifySoftware; // Global Version Handler

// Waypoint Handler:
extern WaypointHandler* g_pWaypointHandler; // Global Waypoint Handler
Expand Down
94 changes: 0 additions & 94 deletions src/IdentitySoftware.cpp

This file was deleted.

Loading

0 comments on commit 06764cf

Please sign in to comment.