Skip to content

Commit c20603d

Browse files
ARCH-2011 - Troubleshooting tests
1 parent ff79363 commit c20603d

13 files changed

+391
-271
lines changed

.github/workflows/build-and-review-pr.yml

Lines changed: 209 additions & 101 deletions
Large diffs are not rendered by default.

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
lib/
33
node_modules
44
/.vscode/launch.json
5-
reportgeneratortool
5+
reportgeneratortool
6+
test-results/

dist/index.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3390,17 +3390,20 @@ async function run() {
33903390
if (!areReportTypesValid(reportTypes)) return;
33913391
let output = '';
33923392
const toolPath = 'reportgeneratortool';
3393-
core.info('Detecting .NET Core SDK...');
3393+
core.info('\nDetecting .NET Core SDK...');
33943394
try {
3395+
core.startGroup('dotnet version output');
33953396
await exec.exec('dotnet', ['--version'], {
33963397
listeners: {
33973398
stdout: data => {
33983399
output += data.toString();
33993400
}
34003401
}
34013402
});
3402-
core.info(`Detected .NET Core SDK version '${output}'`);
3403+
core.endGroup();
3404+
core.info(`Detected .NET Core SDK version '${output.trim()}'`);
34033405
} catch (error) {
3406+
core.endGroup();
34043407
const shortMsg = 'dotnet not available';
34053408
core.setOutput('error-reason', shortMsg);
34063409
core.setFailed(shortMsg);
@@ -3411,13 +3414,14 @@ async function run() {
34113414
core.info(" dotnet-version: '8.x' # 5.0 or higher");
34123415
return;
34133416
}
3414-
core.info('Installing ReportGenerator global tool...');
3415-
core.info('https://www.nuget.org/packages/dotnet-reportgenerator-globaltool');
3417+
core.info('\nChecking for ReportGenerator global tool...');
34163418
if (fs.existsSync(toolPath)) {
34173419
core.info('ReportGenerator global tool already installed');
34183420
} else {
34193421
output = '';
34203422
try {
3423+
core.startGroup('Installing ReportGenerator global tool');
3424+
core.info('https://www.nuget.org/packages/dotnet-reportgenerator-globaltool');
34213425
await exec.exec(
34223426
'dotnet',
34233427
[
@@ -3438,13 +3442,15 @@ async function run() {
34383442
}
34393443
}
34403444
);
3445+
core.endGroup();
34413446
core.info('Successfully installed ReportGenerator global tool');
34423447
} catch (error) {
3448+
core.endGroup();
34433449
core.setFailed('Failed to install ReportGenerator global tool');
34443450
return;
34453451
}
34463452
}
3447-
core.info('Executing ReportGenerator');
3453+
core.info('\nExecuting ReportGenerator global tool');
34483454
try {
34493455
let args = [
34503456
`-reports:${core.getInput('reports')}`,
@@ -3457,15 +3463,18 @@ async function run() {
34573463
`-title:${core.getInput('title')}`,
34583464
`-tag:${core.getInput('tag')}`
34593465
];
3466+
core.startGroup('reportgenerator output');
34603467
await exec.exec(`${toolPath}/reportgenerator`, args, {
34613468
listeners: {
34623469
stdout: data => {
34633470
output += data.toString();
34643471
}
34653472
}
34663473
});
3474+
core.endGroup();
34673475
core.info('Successfully executed ReportGenerator');
34683476
} catch (error) {
3477+
core.endGroup();
34693478
if (output.includes('No matching files found.')) {
34703479
const shortMsg = 'No matching files found';
34713480
core.setOutput('error-reason', shortMsg);

src/reportgenerator.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,20 @@ async function run() {
1515
let output = '';
1616
const toolPath = 'reportgeneratortool';
1717

18-
core.info('Detecting .NET Core SDK...');
18+
core.info('\nDetecting .NET Core SDK...');
1919
try {
20+
core.startGroup('dotnet version output');
2021
await exec.exec('dotnet', ['--version'], {
2122
listeners: {
2223
stdout: data => {
2324
output += data.toString();
2425
}
2526
}
2627
});
27-
core.info(`Detected .NET Core SDK version '${output}'`);
28+
core.endGroup();
29+
core.info(`Detected .NET Core SDK version '${output.trim()}'`);
2830
} catch (error) {
31+
core.endGroup();
2932
const shortMsg = 'dotnet not available';
3033
core.setOutput('error-reason', shortMsg);
3134
core.setFailed(shortMsg);
@@ -37,14 +40,15 @@ async function run() {
3740
return;
3841
}
3942

40-
core.info('Installing ReportGenerator global tool...');
41-
core.info('https://www.nuget.org/packages/dotnet-reportgenerator-globaltool');
43+
core.info('\nChecking for ReportGenerator global tool...');
4244
if (fs.existsSync(toolPath)) {
4345
core.info('ReportGenerator global tool already installed');
4446
} else {
4547
output = '';
4648

4749
try {
50+
core.startGroup('Installing ReportGenerator global tool');
51+
core.info('https://www.nuget.org/packages/dotnet-reportgenerator-globaltool');
4852
await exec.exec(
4953
'dotnet',
5054
[
@@ -65,14 +69,16 @@ async function run() {
6569
}
6670
}
6771
);
72+
core.endGroup();
6873
core.info('Successfully installed ReportGenerator global tool');
6974
} catch (error) {
75+
core.endGroup();
7076
core.setFailed('Failed to install ReportGenerator global tool');
7177
return;
7278
}
7379
}
7480

75-
core.info('Executing ReportGenerator');
81+
core.info('\nExecuting ReportGenerator global tool');
7682
try {
7783
let args = [
7884
`-reports:${core.getInput('reports')}`,
@@ -85,16 +91,18 @@ async function run() {
8591
`-title:${core.getInput('title')}`,
8692
`-tag:${core.getInput('tag')}`
8793
];
88-
94+
core.startGroup('reportgenerator output');
8995
await exec.exec(`${toolPath}/reportgenerator`, args, {
9096
listeners: {
9197
stdout: data => {
9298
output += data.toString();
9399
}
94100
}
95101
});
102+
core.endGroup();
96103
core.info('Successfully executed ReportGenerator');
97104
} catch (error) {
105+
core.endGroup();
98106
if (output.includes('No matching files found.')) {
99107
const shortMsg = 'No matching files found';
100108
core.setOutput('error-reason', shortMsg);

test/assert-dir-does-not-exist.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Asserting '$dir' does not exist"
1818

1919
if [ -d "$dir" ]; then
2020
echo "The target directory exists when it should not."
21+
ls -r $dir
2122
exit 1
2223
else
2324
echo "The target directory does not exist, which is expected."

test/assert-dir-exists.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ echo "
1717
Asserting '$dir' exists"
1818

1919
if [ -d "$dir" ]; then
20-
echo "The target directory exists, which is expected."
20+
echo "The target directory exists, which is expected. It contains:"
21+
ls -r $dir
2122
else
2223
echo "The target directory does not exist but it should."
2324
exit 1

test/assert-dir-is-empty.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/bash
2+
3+
dir=''
4+
5+
for arg in "$@"; do
6+
case $arg in
7+
--dir)
8+
dir=$2
9+
shift # Remove argument --dir from `$@`
10+
shift # Remove argument value from `$@`
11+
;;
12+
esac
13+
done
14+
15+
echo "
16+
Asserting '$dir' exists and that it is empty"
17+
18+
if [ -d "$dir" ]; then
19+
echo "The target directory exists, which is expected."
20+
else
21+
echo "The target directory does not exist but it should."
22+
exit 1
23+
fi
24+
25+
if [ -z "$(ls -A $dir)" ]; then
26+
echo "The target directory is empty, which is expected."
27+
else
28+
echo "The target directory is not empty but it should be."
29+
echo "These items exist under the directory:"
30+
ls -r $dir
31+
exit 1
32+
fi

test/assert-file-contains-expected-content.sh

Lines changed: 0 additions & 59 deletions
This file was deleted.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module.exports = async (core, fs, fullStringFile, substringFile) => {
2+
core.info('Asserting that the file contains the expected substring');
3+
4+
core.info(`Asserting full file contains substring:`);
5+
6+
const fullString = fs.readFileSync(fullStringFile, 'utf8');
7+
core.startGroup(`Full file contents from '${fullStringFile}'`);
8+
core.info(`'${fullString}'`);
9+
core.endGroup();
10+
11+
const substring = fs.readFileSync(substringFile, 'utf8');
12+
core.startGroup(`Substring from '${substringFile}'`);
13+
core.info(`'${substring}'`);
14+
core.endGroup();
15+
16+
if (fullString.includes(substring.trim())) {
17+
core.info('The file contains the substring, which is expected.');
18+
} else {
19+
core.setFailed('The file does not contain the substring, which is not expected.');
20+
}
21+
};
Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
<Parser>OpenCoverParser</Parser>
2-
<Assemblies>2</Assemblies>
3-
<Classes>7</Classes>
4-
<Files>7</Files>
5-
<Coveredlines>141</Coveredlines>
6-
<Uncoveredlines>16</Uncoveredlines>
7-
<Coverablelines>157</Coverablelines>
8-
<Totallines>0</Totallines>
9-
<Linecoverage>89.8</Linecoverage>
10-
<Coveredbranches>26</Coveredbranches>
11-
<Totalbranches>32</Totalbranches>
12-
<Branchcoverage>81.2</Branchcoverage>
13-
<Title>MyProj Code Coverage AssemblyFilter</Title>
14-
<Tag>assembly-filter-tag</Tag>
15-
</Summary>
16-
<Coverage>
17-
<Assembly name="MyProj" classes="4" coverage="100" coveredlines="111" coverablelines="111" totallines="0" branchcoverage="100" coveredbranches="22" totalbranches="22">
18-
<Class name="MyProj.Features.Notes.NotesController" coverage="100" coveredlines="48" coverablelines="48" totallines="0" branchcoverage="100" coveredbranches="10" totalbranches="10" />
19-
<Class name="MyProj.Features.Reports.ReportsController" coverage="100" coveredlines="31" coverablelines="31" totallines="0" branchcoverage="100" coveredbranches="6" totalbranches="6" />
20-
<Class name="MyProj.Features.Steps.StepsController" coverage="100" coveredlines="27" coverablelines="27" totallines="0" branchcoverage="100" coveredbranches="6" totalbranches="6" />
21-
<Class name="MyProj.Features.Steps.StepsVm" coverage="100" coveredlines="5" coverablelines="5" totallines="0" branchcoverage="" coveredbranches="0" totalbranches="0" />
22-
</Assembly>
23-
<Assembly name="MyProj.Core" classes="3" coverage="65.2" coveredlines="30" coverablelines="46" totallines="0" branchcoverage="40" coveredbranches="4" totalbranches="10">
24-
<Class name="MyProj.Core.Container" coverage="44.4" coveredlines="12" coverablelines="27" totallines="0" branchcoverage="33.3" coveredbranches="2" totalbranches="6" />
25-
<Class name="MyProj.Core.EnumExtensions" coverage="90.9" coveredlines="10" coverablelines="11" totallines="0" branchcoverage="50" coveredbranches="2" totalbranches="4" />
26-
<Class name="MyProj.Core.Grade" coverage="100" coveredlines="8" coverablelines="8" totallines="0" branchcoverage="" coveredbranches="0" totalbranches="0" />
27-
</Assembly>
28-
</Coverage>
1+
<Parser>OpenCoverParser</Parser>
2+
<Assemblies>2</Assemblies>
3+
<Classes>7</Classes>
4+
<Files>7</Files>
5+
<Coveredlines>141</Coveredlines>
6+
<Uncoveredlines>16</Uncoveredlines>
7+
<Coverablelines>157</Coverablelines>
8+
<Totallines>0</Totallines>
9+
<Linecoverage>89.8</Linecoverage>
10+
<Coveredbranches>26</Coveredbranches>
11+
<Totalbranches>32</Totalbranches>
12+
<Branchcoverage>81.2</Branchcoverage>
13+
<Title>MyProj Code Coverage AssemblyFilter</Title>
14+
<Tag>assembly-filter-tag</Tag>
15+
</Summary>
16+
<Coverage>
17+
<Assembly name="MyProj" classes="4" coverage="100" coveredlines="111" coverablelines="111" totallines="0" branchcoverage="100" coveredbranches="22" totalbranches="22">
18+
<Class name="MyProj.Features.Notes.NotesController" coverage="100" coveredlines="48" coverablelines="48" totallines="0" branchcoverage="100" coveredbranches="10" totalbranches="10" />
19+
<Class name="MyProj.Features.Reports.ReportsController" coverage="100" coveredlines="31" coverablelines="31" totallines="0" branchcoverage="100" coveredbranches="6" totalbranches="6" />
20+
<Class name="MyProj.Features.Steps.StepsController" coverage="100" coveredlines="27" coverablelines="27" totallines="0" branchcoverage="100" coveredbranches="6" totalbranches="6" />
21+
<Class name="MyProj.Features.Steps.StepsVm" coverage="100" coveredlines="5" coverablelines="5" totallines="0" branchcoverage="" coveredbranches="0" totalbranches="0" />
22+
</Assembly>
23+
<Assembly name="MyProj.Core" classes="3" coverage="65.2" coveredlines="30" coverablelines="46" totallines="0" branchcoverage="40" coveredbranches="4" totalbranches="10">
24+
<Class name="MyProj.Core.Container" coverage="44.4" coveredlines="12" coverablelines="27" totallines="0" branchcoverage="33.3" coveredbranches="2" totalbranches="6" />
25+
<Class name="MyProj.Core.EnumExtensions" coverage="90.9" coveredlines="10" coverablelines="11" totallines="0" branchcoverage="50" coveredbranches="2" totalbranches="4" />
26+
<Class name="MyProj.Core.Grade" coverage="100" coveredlines="8" coverablelines="8" totallines="0" branchcoverage="" coveredbranches="0" totalbranches="0" />
27+
</Assembly>
28+
</Coverage>
2929
</CoverageReport>

0 commit comments

Comments
 (0)