Add create TRSP solver function #783
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Measure Code Coverage | |
| env: | |
| CLONE_PATH: ${{ github.workspace }} | |
| GH_ACTIONS_PATH: ${{ github.workspace }}/.github/workflows | |
| MINQ_COMMIT_FILE: ${{ github.workspace }}/REQUIRED_MINQ_COMMIT | |
| IBCDFO_PKG: ${{ github.workspace }}/ibcdfo_pypkg | |
| MINQ5_M_PATH: ${{ github.workspace }}/MINQ/m/minq5 | |
| MINQ8_M_PATH: ${{ github.workspace }}/MINQ/m/minq8 | |
| BENDFO_M_PATH: ${{ github.workspace }}/BenDFO/m | |
| BENDFO_DATA_PATH: ${{ github.workspace }}/BenDFO/data | |
| POUNDERS_M_PATH: ${{ github.workspace }}/pounders/m | |
| MSAMP_M_PATH: ${{ github.workspace }}/manifold_sampling/m | |
| BENDFO_PY_PATH: ${{ github.workspace }}/BenDFO/py | |
| MINQ5_PY_PATH: ${{ github.workspace }}/MINQ/py/minq5 | |
| PY_COV_FILE: coverage_ibcdfo | |
| PY_COV_XML_FILE: cobertura_ibcdfo_py.xml | |
| PY_COV_HTML_FILE: htmlcov_ibcdfo_py | |
| POUNDERS_M_COV_HTML_FILE: htmlcov_ibcdfo_pounders_m | |
| POUNDERS_M_COV_XML_FILE: cobertura_ibcdfo_pounders_m.xml | |
| MSAMP_M_COV_HTML_FILE: htmlcov_ibcdfo_msamp_m | |
| MSAMP_M_COV_XML_FILE: cobertura_ibcdfo_msamp_m.xml | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| # ----- LOAD OFFICIAL MINQ COMMIT INFO FOR PROPER SETUP FOR IBCDFO | |
| # Load this eagerly so that it is available for immediate use in all | |
| # subsequent jobs. | |
| load_minq_sha: | |
| outputs: | |
| minq_sha: ${{ steps.load_sha.outputs.minq_sha }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout IBCDFO repository | |
| uses: actions/checkout@v6 | |
| - name: Load Official MINQ SHA | |
| id: load_sha | |
| run: | | |
| MINQ_SHA=$(cat $MINQ_COMMIT_FILE) | |
| echo "The valid MINQ commit hash is $MINQ_SHA" | |
| echo "minq_sha=$MINQ_SHA" >> "$GITHUB_OUTPUT" | |
| # ----- MEASURE COVERAGE ACROSS ALL PYTHON PACKAGES | |
| # Prefer using the latest Python version supported by the package | |
| coverage_py: | |
| runs-on: ubuntu-latest | |
| needs: load_minq_sha | |
| env: | |
| MINQ_SHA: ${{ needs.load_minq_sha.outputs.minq_sha }} | |
| steps: | |
| # -- General Setup Steps | |
| - name: Checkout IBCDFO repository | |
| uses: actions/checkout@v6 | |
| - name: Checkout MINQ repository | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: POptUS/MINQ | |
| path: MINQ | |
| ref: ${{ env.MINQ_SHA }} | |
| - name: Checkout BenDFO repository | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: POptUS/BenDFO | |
| path: BenDFO | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.14" | |
| - name: Setup Python with tox | |
| run: $GH_ACTIONS_PATH/setup_tox_github_action.sh ${{ runner.os }} | |
| # -- Run Coverage for All Python Packages | |
| # The tox task downloads dfo.dat automatically | |
| - name: Generate Python coverage reports | |
| run: | | |
| export PYTHONPATH=$BENDFO_PY_PATH:$MINQ5_PY_PATH | |
| echo "PYTHONPATH=$PYTHONPATH" >> $GITHUB_ENV | |
| pushd $IBCDFO_PKG | |
| COVERAGE_FILE=$PY_COV_FILE COVERAGE_XML_FILE=$PY_COV_XML_FILE COVERAGE_HTML_FILE=$PY_COV_HTML_FILE tox -r -e coverage,report | |
| mv $PY_COV_FILE $CLONE_PATH | |
| mv $PY_COV_XML_FILE $CLONE_PATH | |
| mv $PY_COV_HTML_FILE $CLONE_PATH | |
| popd | |
| # -- Publish as artifact for users and subsequent jobs | |
| - name: Archive Python coverage results | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: python-coverage-results | |
| path: | | |
| ${{ env.PY_COV_FILE }} | |
| ${{ env.PY_COV_XML_FILE }} | |
| ${{ env.PY_COV_HTML_FILE }} | |
| # ----- MEASURE COVERAGE ACROSS ALL MATLAB PACKAGES | |
| # Prefer using the latest MATLAB version available | |
| coverage_m: | |
| runs-on: ubuntu-latest | |
| needs: load_minq_sha | |
| env: | |
| MINQ_SHA: ${{ needs.load_minq_sha.outputs.minq_sha }} | |
| steps: | |
| # -- General Setup Steps | |
| - name: Checkout IBCDFO repository | |
| uses: actions/checkout@v6 | |
| - name: Checkout MINQ repository | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: POptUS/MINQ | |
| path: MINQ | |
| ref: ${{ env.MINQ_SHA }} | |
| - name: Checkout BenDFO repository | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: POptUS/BenDFO | |
| path: BenDFO | |
| - name: Set up MATLAB | |
| uses: matlab-actions/setup-matlab@v3 | |
| with: | |
| release: "latest" | |
| products: Optimization_Toolbox | |
| # -- Test Execution Step | |
| # This requires R2023b or higher | |
| - name: Generate code coverage report for MATLAB code | |
| uses: matlab-actions/run-command@v3 | |
| with: | |
| command: > | |
| addpath("${{ env.MINQ5_M_PATH }}"), | |
| addpath("${{ env.MINQ8_M_PATH }}"), | |
| addpath("${{ env.BENDFO_M_PATH }}"), | |
| addpath("${{ env.BENDFO_DATA_PATH }}"), | |
| cd ${{ env.POUNDERS_M_PATH }}, | |
| [results, cov_p] = runtests("IncludeSubfolders", true, "ReportCoverageFor", pwd), | |
| assertSuccess(results), | |
| cd ${{ env.MSAMP_M_PATH }}, | |
| [results, cov_ms] = runtests("IncludeSubfolders", true, "ReportCoverageFor", pwd), | |
| assertSuccess(results), | |
| cd ${{ env.CLONE_PATH }}, | |
| fp = generateHTMLReport(cov_p, "${{ env.POUNDERS_M_COV_HTML_FILE }}"), | |
| generateCoberturaReport(cov_p, "${{ env.POUNDERS_M_COV_XML_FILE }}"); | |
| fp = generateHTMLReport(cov_ms, "${{ env.MSAMP_M_COV_HTML_FILE }}"), | |
| generateCoberturaReport(cov_ms, "${{ env.MSAMP_M_COV_XML_FILE }}"); | |
| # -- Publish as artifact for users and subsequent jobs | |
| - name: Archive MATLAB coverage results | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: matlab-coverage-results | |
| path: | | |
| ${{ env.POUNDERS_M_COV_HTML_FILE }} | |
| ${{ env.POUNDERS_M_COV_XML_FILE }} | |
| ${{ env.MSAMP_M_COV_HTML_FILE }} | |
| ${{ env.MSAMP_M_COV_XML_FILE }} | |
| # ----- PUBLISH FULL CODE COVERAGE REPORT | |
| publish: | |
| needs: [coverage_py, coverage_m] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout IBCDFO repository | |
| uses: actions/checkout@v6 | |
| - name: Access Python coverage reports | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: python-coverage-results | |
| path: ${{ env.CLONE_PATH }} | |
| - name: Access MATLAB coverage reports | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: matlab-coverage-results | |
| path: ${{ env.CLONE_PATH }} | |
| - name: Upload coverage report to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: | | |
| ${{ env.CLONE_PATH }}/${{ env.POUNDERS_M_COV_XML_FILE }}, | |
| ${{ env.CLONE_PATH }}/${{ env.MSAMP_M_COV_XML_FILE }}, | |
| ${{ env.CLONE_PATH }}/${{ env.PY_COV_XML_FILE }} | |
| disable_search: true | |
| verbose: true | |
| fail_ci_if_error: true |