From 7015d38f973ea8ab0d68fd7a6d7177c9c92258a0 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 23 Apr 2023 11:26:32 -0500 Subject: [PATCH] Tests: Add Sketcher unit tests to CI Co-authored-by: 0penBrain <48731257+0penBrain@users.noreply.github.com> --- .../runCPPTests/runAllTests/action.yml | 54 +++++++++++++++++++ .../{ => runSingleTest}/action.yml | 9 ++-- .github/workflows/sub_buildUbuntu2004.yml | 10 ++-- .github/workflows/sub_buildUbuntu2204.yml | 10 ++-- 4 files changed, 70 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/actions/runCPPTests/runAllTests/action.yml rename .github/workflows/actions/runCPPTests/{ => runSingleTest}/action.yml (87%) 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: