diff --git a/.github/workflows/actions/runCPPTests/runAllTests/action.yml b/.github/workflows/actions/runCPPTests/runAllTests/action.yml
new file mode 100644
index 0000000000..1e1218e87b
--- /dev/null
+++ b/.github/workflows/actions/runCPPTests/runAllTests/action.yml
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+# ***************************************************************************
+# * *
+# * Copyright (c) 2023 The FreeCAD Project Association *
+# * *
+# * This file is part of FreeCAD. *
+# * *
+# * FreeCAD is free software: you can redistribute it and/or modify it *
+# * under the terms of the GNU Lesser General Public License as *
+# * published by the Free Software Foundation, either version 2.1 of the *
+# * License, or (at your option) any later version. *
+# * *
+# * FreeCAD is distributed in the hope that it will be useful, but *
+# * WITHOUT ANY WARRANTY; without even the implied warranty of *
+# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+# * Lesser General Public License for more details. *
+# * *
+# * You should have received a copy of the GNU Lesser General Public *
+# * License along with FreeCAD. If not, see *
+# * . *
+# * *
+# ***************************************************************************
+
+name: Run all C++ Tests
+description: "Run all C++ tests, generating logs and reports for each"
+
+inputs:
+ reportdir:
+ description: "Report directory"
+ required: true
+ builddir:
+ description: "Build directory"
+ required: true
+ reportfilename:
+ description: "Report filename"
+ required: true
+
+runs:
+ using: "composite"
+ steps:
+ - name: C++ core tests
+ uses: ./.github/workflows/actions/runCPPTests/runSingleTest
+ with:
+ testCommand: ${{ inputs.builddir }}/tests/Tests_run --gtest_output=json:${{ inputs.reportdir }}core_gtest_results.json
+ testLogFile: ${{ inputs.reportdir }}core_gtest_test_log.txt
+ reportFile: ${{ inputs.reportdir }}${{ inputs.reportfilename }}
+ testName: Core
+ - name: C++ Sketcher tests
+ uses: ./.github/workflows/actions/runCPPTests/runSingleTest
+ with:
+ testCommand: ${{ inputs.builddir }}/tests/Sketcher_tests_run --gtest_output=json:${{ inputs.reportdir }}sketcher_gtest_results.json
+ testLogFile: ${{ inputs.reportdir }}sketcher_gtest_test_log.txt
+ reportFile: ${{ inputs.reportdir }}${{ inputs.reportfilename }}
+ testName: Sketcher
diff --git a/.github/workflows/actions/runCPPTests/action.yml b/.github/workflows/actions/runCPPTests/runSingleTest/action.yml
similarity index 87%
rename from .github/workflows/actions/runCPPTests/action.yml
rename to .github/workflows/actions/runCPPTests/runSingleTest/action.yml
index 25985b9a39..3ad60e5573 100644
--- a/.github/workflows/actions/runCPPTests/action.yml
+++ b/.github/workflows/actions/runCPPTests/runSingleTest/action.yml
@@ -35,11 +35,14 @@ inputs:
reportFile:
description: "Report file"
required: true
+ testName:
+ description: "A descriptive name for the test suite"
+ required: true
runs:
using: "composite"
steps:
- - name: Run C++ unit tests
+ - name: Run C++ tests
shell: bash
run: stdbuf -oL -eL ${{ inputs.testCommand }} |& tee -a ${{ inputs.testLogFile }}
- name: Parse test results
@@ -49,9 +52,9 @@ runs:
result=$(sed -ne "/Global test environment tear-down/,/^$/{/^$/d;p}" ${{ inputs.testLogFile }})
if grep -qF "[ FAILED ]" <<< $result
then
- echo ":fire: GTest C++ unit test suite failed
" >> ${{ inputs.reportFile }}
+ echo ":fire: GTest C++ test suite '${{ inputs.testName }}' failed
" >> ${{ inputs.reportFile }}
else
- echo ":heavy_check_mark: GTest C++ unit test suite succeeded
" >> ${{ inputs.reportFile }}
+ echo ":heavy_check_mark: GTest C++ test suite '${{ inputs.testName }}' succeeded
" >> ${{ inputs.reportFile }}
fi
echo "" >> ${{ inputs.reportFile }}
echo "Results" >> ${{ inputs.reportFile }}
diff --git a/.github/workflows/sub_buildUbuntu2004.yml b/.github/workflows/sub_buildUbuntu2004.yml
index ee8369dff9..cbea492840 100644
--- a/.github/workflows/sub_buildUbuntu2004.yml
+++ b/.github/workflows/sub_buildUbuntu2004.yml
@@ -202,13 +202,13 @@ jobs:
testCommand: xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: C++ unit tests
+ - name: C++ tests
timeout-minutes: 1
- uses: ./.github/workflows/actions/runCPPTests
+ uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
- testCommand: ${{ env.builddir }}/tests/Tests_run --gtest_output=json:${{env.reportdir}}gtest_results.json
- testLogFile: ${{env.reportdir}}gtest_test_log.txt
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
+ reportdir: ${{ env.reportdir }}
+ builddir: ${{ env.builddir }}
+ reportfilename: ${{ env.reportfilename }}
- name: CMake Install
uses: ./.github/workflows/actions/linux/install
with:
diff --git a/.github/workflows/sub_buildUbuntu2204.yml b/.github/workflows/sub_buildUbuntu2204.yml
index 0746d78698..d14ce8242d 100644
--- a/.github/workflows/sub_buildUbuntu2204.yml
+++ b/.github/workflows/sub_buildUbuntu2204.yml
@@ -200,13 +200,13 @@ jobs:
testCommand: xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: C++ unit tests
+ - name: C++ tests
timeout-minutes: 1
- uses: ./.github/workflows/actions/runCPPTests
+ uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
- testCommand: ${{ env.builddir }}/tests/Tests_run --gtest_output=json:${{env.reportdir}}gtest_results.json
- testLogFile: ${{env.reportdir}}gtest_test_log.txt
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
+ reportdir: ${{ env.reportdir }}
+ builddir: ${{ env.builddir }}
+ reportfilename: ${{ env.reportfilename }}
- name: CMake Install
uses: ./.github/workflows/actions/linux/install
with: