-
Notifications
You must be signed in to change notification settings - Fork 0
/
action.yml
98 lines (95 loc) · 4.45 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# action.yml
name: 'Junit Report Action for Java and .NET'
description: 'Generates junit html style reports from surefire test results and .NET .trx test results'
author: "Javier Tuya"
branding:
icon: file-text
color: blue
inputs:
report-enabled:
description: 'Generate the JUnit test reports'
required: false
default: true
report-title:
description: 'The title of the test report'
required: false
default: 'Unit Test Results'
surefire-files:
description: 'Specification of the surefire test report files (can use * and ** wildcards)'
required: false
default: '**/target/surefire-reports/TEST-*.xml'
report-dir:
description: 'Directory where the resulting junit html reports will be generated'
required: false
default: 'target/site'
net-trx-report:
description: 'Specifies one or more result files (`.trx`) that
will be splitted into a set of `TEST-*.xml` files in the folder `net-surefire-folder`
Multiple files are separated by comma'
required: false
default: ''
net-surefire-folder:
description: 'Only if `net-trx-report` is specified: folder where the splitted test report files will be stored'
required: false
default: 'target/surefire-reports'
diff-links-enabled:
description: 'Set to true to activate report reprocessing'
required: false
default: false
diff-links-prefix:
description: 'The path prefix to the diff file that you see in the report'
required: false
default: 'target/'
diff-links-reports:
description: 'A glob specification of all html junit report files'
required: false
default: 'target/site/junit-*/**/*.html'
diff-links-files:
description: 'A glob specification of all diff files'
required: false
default: '**/target/*.html'
runs:
using: "composite"
steps:
- if: ${{ inputs.report-enabled == 'true' && inputs.net-trx-report != ''}}
shell: bash
run: |
dotnet tool install --global DotnetTestSplit
# process each file if separated by comma
IFS=\, read -a fields <<<"${{ inputs.net-trx-report }}"
for TRX in "${fields[@]}" ;do
echo "--- Split file: $TRX"
DotnetTestSplit $TRX ${{ inputs.net-surefire-folder }}
done
echo "--- Splitted files at ${{ inputs.net-surefire-folder }}:"
ls -la ${{ inputs.net-surefire-folder }}
- shell: bash
if: ${{ inputs.report-enabled == 'true'}}
run: |
echo "<project name=\"aggregate-junit-reports\" default=\"aggregate\" >" > junit-reports-ant.xml
echo "<target name=\"aggregate\" >" >> junit-reports-ant.xml
echo "<junitreport>" >> junit-reports-ant.xml
echo "<fileset dir=\".\"><include name=\"${{ inputs.surefire-files }}\" /></fileset>" >> junit-reports-ant.xml
echo "<report format=\"frames\" todir=\"${{ inputs.report-dir }}/junit-frames\" />" >> junit-reports-ant.xml
echo "<report format=\"noframes\" todir=\"${{ inputs.report-dir }}/junit-noframes\" />" >> junit-reports-ant.xml
echo "</junitreport>" >> junit-reports-ant.xml
echo "<replace file=\"${{ inputs.report-dir }}/junit-noframes/junit-noframes.html\" token=\"Unit Test Results\" value=\"${{ inputs.report-title }}\" />" >> junit-reports-ant.xml
echo "<replace file=\"${{ inputs.report-dir }}/junit-frames/index.html\" token=\"Unit Test Results\" value=\"${{ inputs.report-title }}\" />" >> junit-reports-ant.xml
echo "<replace file=\"${{ inputs.report-dir }}/junit-frames/overview-summary.html\" token=\"Unit Test Results\" value=\"${{ inputs.report-title }}\" />" >> junit-reports-ant.xml
echo "</target>" >> junit-reports-ant.xml
echo "</project>" >> junit-reports-ant.xml
- shell: bash
if: ${{ inputs.report-enabled == 'true' }}
run: |
ant -file junit-reports-ant.xml
- name: Use Node.js
if: ${{ inputs.diff-links-enabled == 'true'}}
uses: actions/setup-node@v4
with:
node-version: '20.x'
- shell: bash
if: ${{ inputs.diff-links-enabled == 'true'}}
run: |
node --version && npm --version
cd ${{ github.action_path }} && npm install
cd ${{ github.action_path }} && npm start "${{ inputs.diff-links-prefix }}" "${{ github.workspace }}/${{ inputs.diff-links-reports }}" "${{ github.workspace }}/${{ inputs.diff-links-files }}"