我非常接近这项工作,但我不知道足够的 yaml-foo 来查看解决方案。
很明显,没有办法告诉 Coverlet ( https://github.com/coverlet-coverage/coverlet ) 不要在结果路径中使用随机 GUID:
(来自https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/VSTestIntegration.md)。
我正在做一堆代码覆盖率报告,作为其中的一部分,我想使用https://github.com/simon-k/dotnet-code-coverage-badge为项目生成一个 GitHub 徽章。
我的构建工作流程:
name: Build Terminal.Gui with .NET Core
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.100
- name: Install dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Test
run: dotnet test --no-restore --verbosity normal --collect:"XPlat Code Coverage" --settings UnitTests/coverlet.runsettings
- name: Create Test Coverage Badge
uses: simon-k/dotnet-code-coverage-badge@v1.0.0
id: create_coverage_badge
with:
label: Unit Test Coverage
color: brightgreen
path: UnitTest/TestResults/<uuid>/coverage.opencover.xml
gist-filename: code-coverage.json
# https://gist.github.com/migueldeicaza/90ef67a684cb71db1817921a970f8d27
gist-id: 90ef67a684cb71db1817921a970f8d27
gist-auth-token: ${{ secrets.GIST_AUTH_TOKEN }}
徽章工具需要 opencover.xml 文件的路径。我可以很好地生成文件,但它最终在一个文件夹UnitTests/TestResults/<UUID>/coverage.opencover.xml
中。
根据上述内容,我不能(显然)改变 VSTest 的行为。所以我需要想办法将输出中的 UUID 捕获到变量中并在path:
.
那个 UUID 就在测试运行结果中,我只需要以某种方式抓住它:
这可能吗?或者,是否有某种方法可以使用通配符执行复制命令,将其内容复制UnitTest/TestResults/*/
到某个确定性的地方?