LT-22651: Fix Dictionary letter headings only Uppercase if sorting is… #3854
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: Flex CI | |
| on: | |
| push: | |
| branches: ["release/**", "main", "feature/PubSub"] | |
| pull_request: | |
| branches: ["release/**", "main", "feature/PubSub"] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| checks: write | |
| pull-requests: write | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| debug_build_and_test: | |
| name: Build Debug and run tests | |
| runs-on: windows-2022 | |
| steps: | |
| - name: Checkout Files | |
| uses: actions/checkout@v7 | |
| id: checkout | |
| # Real-runtime check: this repo is authored on PowerShell 7 but | |
| # build.ps1/test.ps1 run under Windows PowerShell 5.1 below. A script | |
| # can parse identically on both and still resolve differently at | |
| # runtime (see comment-hygiene's ASCII-replacement map, which used to | |
| # do exactly that). windows-2022 ships both engines, so run the | |
| # comment-hygiene fixture suite under each rather than assuming one | |
| # implies the other. | |
| - name: Comment hygiene fixture tests (PowerShell 7) | |
| id: comment-hygiene-tests-pwsh | |
| shell: pwsh | |
| run: | | |
| Build/Agent/CommentHygiene.Tests.ps1 | |
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
| Build/Agent/Test-BuildCommentHygieneComment.ps1 | |
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
| - name: Comment hygiene fixture tests (Windows PowerShell 5.1) | |
| id: comment-hygiene-tests-winps | |
| shell: powershell | |
| run: | | |
| Build\Agent\CommentHygiene.Tests.ps1 | |
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
| Build\Agent\Test-BuildCommentHygieneComment.ps1 | |
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
| - name: Build with tests | |
| id: build | |
| shell: powershell | |
| run: | | |
| .\build.ps1 -Configuration Debug -BuildTests | |
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
| # Native tests run under OpenCppCoverage inside the test step below; without the tool they | |
| # would fall back to a bare run and the native Codecov upload would fail on missing files. | |
| - name: Install OpenCppCoverage | |
| shell: powershell | |
| run: | | |
| choco install opencppcoverage --version=0.9.9.0 -y --no-progress | |
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
| - name: Run tests | |
| id: test | |
| shell: powershell | |
| run: | | |
| .\test.ps1 -Configuration Debug -NoBuild -Coverage -TestFilter 'TestCategory!=LongRunning&TestCategory!=ByHand&TestCategory!=SmokeTest&TestCategory!=DesktopRequired' | |
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
| - name: Upload coverage to Codecov | |
| if: ${{ !cancelled() }} | |
| uses: ./.github/actions/codecov-upload | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: Output/Debug/TestResults/CoverageReport/Cobertura.xml | |
| flags: managed | |
| name: FieldWorks | |
| - name: Upload native coverage to Codecov | |
| if: ${{ !cancelled() }} | |
| uses: ./.github/actions/codecov-upload | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: Output/Debug/TestResults/native.testGenericLib.cobertura.xml,Output/Debug/TestResults/native.TestViews.cobertura.xml | |
| flags: native | |
| name: FieldWorks-native | |
| - name: Summarize native test results | |
| if: ${{ always() }} | |
| shell: powershell | |
| run: | | |
| .\Build\Agent\Summarize-NativeTestResults.ps1 -Configuration Debug | |
| - name: Collect render comparison artifacts | |
| id: render_artifacts | |
| if: ${{ !cancelled() && failure() }} | |
| shell: pwsh | |
| run: .\Build\Agent\Collect-RenderArtifacts.ps1 -SearchRoot . -OutputDirectory .\Output\RenderArtifacts | |
| - name: Upload render comparison artifacts | |
| id: upload_render_artifacts | |
| if: ${{ !cancelled() && steps.render_artifacts.outputs.has_artifacts == 'true' }} | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: render-comparison-artifacts-${{ github.run_id }}-${{ github.run_attempt }} | |
| path: Output/RenderArtifacts | |
| retention-days: 30 | |
| if-no-files-found: error | |
| - name: Summarize render comparison artifacts | |
| if: ${{ github.event_name == 'pull_request' && !cancelled() && (success() || steps.render_artifacts.outputs.has_artifacts == 'true') }} | |
| shell: pwsh | |
| continue-on-error: true | |
| env: | |
| ARTIFACT_URL: ${{ steps.upload_render_artifacts.outputs.artifact-url }} | |
| FAILURE_COUNT: ${{ steps.render_artifacts.outputs.failure_count }} | |
| HAS_ARTIFACTS: ${{ steps.render_artifacts.outputs.has_artifacts }} | |
| run: .\Build\Agent\Report-RenderArtifacts.ps1 -SkipComment | |
| - name: Build render comparison failure comment | |
| id: render_failure_comment | |
| if: ${{ github.event_name == 'pull_request' && !cancelled() && steps.render_artifacts.outputs.has_artifacts == 'true' }} | |
| shell: pwsh | |
| env: | |
| ARTIFACT_URL: ${{ steps.upload_render_artifacts.outputs.artifact-url }} | |
| FAILURE_COUNT: ${{ steps.render_artifacts.outputs.failure_count }} | |
| HAS_ARTIFACTS: ${{ steps.render_artifacts.outputs.has_artifacts }} | |
| PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} | |
| run: .\Build\Agent\Build-RenderArtifactComment.ps1 | |
| - name: Update render comparison PR comment for failures | |
| if: ${{ github.event_name == 'pull_request' && !cancelled() && steps.render_artifacts.outputs.has_artifacts == 'true' }} | |
| uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4 | |
| with: | |
| header: fieldworks-render-comparison-artifacts | |
| path: ${{ steps.render_failure_comment.outputs.comment_path }} | |
| skip_unchanged: true | |
| - name: Build render comparison resolved comment | |
| id: render_clean_comment | |
| if: ${{ github.event_name == 'pull_request' && !cancelled() && success() }} | |
| shell: pwsh | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| HAS_ARTIFACTS: false | |
| PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} | |
| run: .\Build\Agent\Build-RenderArtifactComment.ps1 | |
| - name: Update render comparison PR comment for clean run | |
| if: ${{ github.event_name == 'pull_request' && !cancelled() && success() }} | |
| uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4 | |
| with: | |
| header: fieldworks-render-comparison-artifacts | |
| only_update: true | |
| path: ${{ steps.render_clean_comment.outputs.comment_path }} | |
| skip_unchanged: true | |
| - name: Upload TRX test results (managed) | |
| if: ${{ !cancelled() }} | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: trx-results | |
| path: | | |
| **/*.trx | |
| if-no-files-found: warn | |
| - uses: actions/upload-artifact@v7 | |
| if: ${{ !cancelled() && failure() }} | |
| with: | |
| name: build-logs | |
| path: | | |
| ./*.log | |
| ./Output/**/*.log | |
| ./Output/**/*.log.stderr | |
| publish_test_results: | |
| name: Publish Test Results | |
| if: ${{ !cancelled() }} | |
| needs: debug_build_and_test | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| issues: read | |
| checks: write | |
| pull-requests: write | |
| steps: | |
| - name: Download TRX artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: trx-results | |
| path: test-results | |
| - name: Publish Test Results | |
| uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 | |
| with: | |
| files: 'test-results/**/*.trx' | |
| check_name: NUnit Tests | |
| comment_mode: ${{ github.event_name == 'pull_request' && 'always' || 'off' }} | |
| job_summary: true | |
| fail_on: test failures |