# 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 * # * . * # * * # *************************************************************************** # !!! Each step running a single test shall have an'id' defined so its report will be output name: Run all C++ Tests description: "Run all C++ tests, generating logs and reports for each" inputs: reportdir: description: "Report directory where logs will be stored" required: true builddir: description: "Build directory where tests are located" required: true reportFile: description: "Path for report file" required: true runs: using: "composite" steps: - name: C++ Assembly tests id: assembly uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Assembly_tests_run --gtest_output=json:${{ inputs.reportdir }}assembly_gtest_results.json testLogFile: ${{ inputs.reportdir }}assembly_gtest_test_log.txt testName: Assembly - name: C++ app tests id: app uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/App_tests_run --gtest_output=json:${{ inputs.reportdir }}app_gtest_results.json testLogFile: ${{ inputs.reportdir }}app_gtest_test_log.txt testName: App - name: C++ base tests id: base uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Base_tests_run --gtest_output=json:${{ inputs.reportdir }}base_gtest_results.json testLogFile: ${{ inputs.reportdir }}base_gtest_test_log.txt testName: Base - name: C++ Gui tests id: gui uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Gui_tests_run --gtest_output=json:${{ inputs.reportdir }}gui_gtest_results.json testLogFile: ${{ inputs.reportdir }}gui_gtest_test_log.txt testName: Gui - name: C++ Material tests id: material uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Material_tests_run --gtest_output=json:${{ inputs.reportdir }}material_gtest_results.json testLogFile: ${{ inputs.reportdir }}material_gtest_test_log.txt testName: Material - name: C++ Measure tests id: measure uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Material_tests_run --gtest_output=json:${{ inputs.reportdir }}measure_gtest_results.json testLogFile: ${{ inputs.reportdir }}measure_gtest_test_log.txt testName: Measure - name: C++ Mesh tests id: mesh uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Mesh_tests_run --gtest_output=json:${{ inputs.reportdir }}mesh_gtest_results.json testLogFile: ${{ inputs.reportdir }}mesh_gtest_test_log.txt testName: Mesh - name: C++ MeshPart tests id: meshpart uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Mesh_tests_run --gtest_output=json:${{ inputs.reportdir }}meshpart_gtest_results.json testLogFile: ${{ inputs.reportdir }}meshpart_gtest_test_log.txt testName: MeshPart - name: C++ Misc tests id: misc uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Misc_tests_run --gtest_output=json:${{ inputs.reportdir }}misc_gtest_results.json testLogFile: ${{ inputs.reportdir }}misc_gtest_test_log.txt testName: Misc - name: C++ Part tests id: part uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Part_tests_run --gtest_output=json:${{ inputs.reportdir }}part_gtest_results.json testLogFile: ${{ inputs.reportdir }}Part_gtest_test_log.txt testName: Part - name: C++ PartDesign tests id: partdesign uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/PartDesign_tests_run --gtest_output=json:${{ inputs.reportdir }}partdesign_gtest_results.json testLogFile: ${{ inputs.reportdir }}PartDesign_gtest_test_log.txt testName: PartDesign - name: C++ Points tests id: points uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Points_tests_run --gtest_output=json:${{ inputs.reportdir }}points_gtest_results.json testLogFile: ${{ inputs.reportdir }}points_gtest_test_log.txt testName: Points - name: C++ Sketcher tests id: sketcher 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 testName: Sketcher - name: C++ Spreadsheet tests id: spreadsheet uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Sketcher_tests_run --gtest_output=json:${{ inputs.reportdir }}spreadsheet_gtest_results.json testLogFile: ${{ inputs.reportdir }}spreadsheet_gtest_test_log.txt testName: Spreadsheet - name: C++ Start tests id: start uses: ./.github/workflows/actions/runCPPTests/runSingleTest with: testCommand: ${{ inputs.builddir }}/tests/Start_tests_run --gtest_output=json:${{ inputs.reportdir }}start_gtest_results.json testLogFile: ${{ inputs.reportdir }}start_gtest_test_log.txt testName: Start - name: Compose summary report based on test results if: always() shell: bash -l {0} run: | # Print global result if [ ${{ job.status }} != "success" ] then echo "
:fire: C++ tests failed" >> ${{ inputs.reportFile }} else echo "
:heavy_check_mark: C++ tests succeeded" >> ${{ inputs.reportFile }} fi echo "" >> ${{ inputs.reportFile }} echo "
" >> ${{ inputs.reportFile }} #Extract individual results cat > /tmp/data << "EOD" ${{ toJSON(steps) }} EOD echo "$(jq -r ".[].outputs.reportText" /tmp/data)" >> ${{ inputs.reportFile }} # Close report echo "
" >> ${{ inputs.reportFile }} echo "
" >> ${{ inputs.reportFile }} echo "" >> ${{ inputs.reportFile }}