Skip to content

Commit 9eb27a7

Browse files
authored
Merge pull request #66 from taguptamw/code-cov-tarun
Add support for code coverage, model coverage and test results reports in HTML
2 parents 8f14e06 + f263879 commit 9eb27a7

5 files changed

Lines changed: 80 additions & 16 deletions

File tree

.github/workflows/bat.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ jobs:
6363
test-results-simulink-test: test-results/simulinktest.mldatx
6464
model-coverage-cobertura: test-results/modelcoverage.xml
6565
test-results-pdf: test-results/pdf-results.pdf
66+
test-results-junit: test-results/results.xml
67+
code-coverage-cobertura: test-results/coverage.xml
68+
code-coverage-html: test-results/coverageHTML
69+
model-coverage-html: test-results/modelcoverageHTML
70+
test-results-html: test-results/resultsHTML
6671
select-by-folder: sample
6772
strict: true
6873
use-parallel: true
@@ -73,8 +78,16 @@ jobs:
7378
(test -f test-results/simulinktest.mldatx) || (echo "File simulinktest.mldatx does not exist" && exit 1)
7479
(test -f test-results/modelcoverage.xml) || (echo "File modelcoverage.xml does not exist" && exit 1)
7580
(test -f test-results/pdf-results.pdf) || (echo "File pdf-results.pdf does not exist" && exit 1)
81+
(test -f test-results/results.xml) || (echo "File results.xml does not exist" && exit 1)
82+
(test -f test-results/coverage.xml) || (echo "File coverage.xml does not exist" && exit 1)
83+
(test -d test-results/coverageHTML) || (echo "Directory coverageHTML does not exist" && exit 1)
84+
(test -f test-results/coverageHTML/*.html) || (echo "No HTML file found" && exit 1)
85+
(test -d test-results/modelcoverageHTML) || (echo "Directory modelcoverageHTML does not exist" && exit 1)
86+
(test -f test-results/modelcoverageHTML/*.html) || (echo "No HTML file found" && exit 1)
87+
(test -d test-results/resultsHTML) || (echo "Directory resultsHTML does not exist" && exit 1)
88+
(test -f test-results/resultsHTML/*.html) || (echo "No HTML file found" && exit 1)
7689
grep -q "runner.addPlugin(FailOnWarningsPlugin())" console.log
7790
grep -q "runInParallel" console.log
7891
grep -q "'OutputDetail', 3" console.log
7992
grep -q "'LoggingLevel', 3" console.log
80-
shell: bash
93+
shell: bash

action.yml

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,42 @@ inputs:
4141
default: ""
4242
test-results-pdf:
4343
description: >-
44-
Path to write test results report in PDF format
44+
File path to write test results in PDF format
45+
required: false
46+
default: ""
47+
test-results-html:
48+
description: >-
49+
Folder path to write test results in HTML format
4550
required: false
4651
default: ""
4752
test-results-junit:
4853
description: >-
49-
Path to write test results report in JUnit XML format
54+
File path to write test results in JUnit-style XML format
5055
required: false
5156
default: ""
5257
test-results-simulink-test:
5358
description: >-
54-
Path to export Simulink Test Manager results in MLDATX format
59+
File path to export Simulink Test Manager results in MLDATX format
5560
required: false
5661
default: ""
5762
code-coverage-cobertura:
5863
description: >-
59-
Path to write code coverage report in Cobertura XML format
64+
File path to write code coverage results in Cobertura XML format
65+
required: false
66+
default: ""
67+
code-coverage-html:
68+
description: >-
69+
Folder path to write code coverage results in HTML format
6070
required: false
6171
default: ""
6272
model-coverage-cobertura:
6373
description: >-
64-
Path to write model coverage report in Cobertura XML format
74+
File path to write model coverage results in Cobertura XML format
75+
required: false
76+
default: ""
77+
model-coverage-html:
78+
description: >-
79+
Folder path to write model coverage results in HTML format
6580
required: false
6681
default: ""
6782
startup-options:

src/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { matlab } from "run-matlab-command-action";
66
import * as scriptgen from "./scriptgen";
77

88
/**
9-
* Gather action inputs and then run action.
9+
* Gather action inputs and then run action
1010
*/
1111
async function run() {
1212
const platform = process.platform;
@@ -16,10 +16,13 @@ async function run() {
1616
const options: scriptgen.RunTestsOptions = {
1717
JUnitTestResults: core.getInput("test-results-junit"),
1818
CoberturaCodeCoverage: core.getInput("code-coverage-cobertura"),
19+
HTMLCodeCoverage: core.getInput("code-coverage-html"),
1920
SourceFolder: core.getInput("source-folder"),
2021
PDFTestReport: core.getInput("test-results-pdf"),
22+
HTMLTestReport: core.getInput("test-results-html"),
2123
SimulinkTestResults: core.getInput("test-results-simulink-test"),
2224
CoberturaModelCoverage: core.getInput("model-coverage-cobertura"),
25+
HTMLModelCoverage: core.getInput("model-coverage-html"),
2326
SelectByTag: core.getInput("select-by-tag"),
2427
SelectByFolder: core.getInput("select-by-folder"),
2528
Strict: core.getBooleanInput("strict"),

src/scriptgen.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@ import * as path from "path";
99
export interface RunTestsOptions {
1010
JUnitTestResults?: string;
1111
CoberturaCodeCoverage?: string;
12+
HTMLCodeCoverage?: string;
1213
SourceFolder?: string;
1314
PDFTestReport?: string;
15+
HTMLTestReport?: string;
1416
SimulinkTestResults?: string;
1517
CoberturaModelCoverage?: string;
18+
HTMLModelCoverage?: string;
1619
SelectByTag?: string;
1720
SelectByFolder?: string;
1821
Strict?: boolean;
@@ -32,10 +35,13 @@ export function generateCommand(options: RunTestsOptions): string {
3235
testScript = genscript('Test',
3336
'JUnitTestResults','${options.JUnitTestResults || ""}',
3437
'CoberturaCodeCoverage','${options.CoberturaCodeCoverage || ""}',
38+
'HTMLCodeCoverage','${options.HTMLCodeCoverage || ""}',
3539
'SourceFolder','${options.SourceFolder || ""}',
3640
'PDFTestReport','${options.PDFTestReport || ""}',
41+
'HTMLTestReport','${options.HTMLTestReport || ""}',
3742
'SimulinkTestResults','${options.SimulinkTestResults || ""}',
3843
'CoberturaModelCoverage','${options.CoberturaModelCoverage || ""}',
44+
'HTMLModelCoverage','${options.HTMLModelCoverage || ""}',
3945
'SelectByTag','${options.SelectByTag || ""}',
4046
'SelectByFolder','${options.SelectByFolder || ""}',
4147
'Strict',${options.Strict || false},

src/scriptgen.unit.test.ts

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ describe("command generation", () => {
77
const options: scriptgen.RunTestsOptions = {
88
JUnitTestResults: "",
99
CoberturaCodeCoverage: "",
10+
HTMLCodeCoverage: "",
1011
SourceFolder: "",
1112
PDFTestReport: "",
13+
HTMLTestReport: "",
1214
SimulinkTestResults: "",
1315
CoberturaModelCoverage: "",
16+
HTMLModelCoverage: "",
1417
SelectByTag: "",
1518
SelectByFolder: "",
1619
Strict: false,
@@ -24,20 +27,23 @@ describe("command generation", () => {
2427
expect(actual.includes("genscript('Test'")).toBeTruthy();
2528
expect(actual.includes("'JUnitTestResults',''")).toBeTruthy();
2629
expect(actual.includes("'CoberturaCodeCoverage',''")).toBeTruthy();
30+
expect(actual.includes("'HTMLCodeCoverage',''")).toBeTruthy();
2731
expect(actual.includes("'SourceFolder',''")).toBeTruthy();
2832
expect(actual.includes("'PDFTestReport',''")).toBeTruthy();
33+
expect(actual.includes("'HTMLTestReport',''")).toBeTruthy();
2934
expect(actual.includes("'SimulinkTestResults',''")).toBeTruthy();
3035
expect(actual.includes("'CoberturaModelCoverage',''")).toBeTruthy();
36+
expect(actual.includes("'HTMLModelCoverage',''")).toBeTruthy();
3137
expect(actual.includes("'SelectByTag',''")).toBeTruthy();
3238
expect(actual.includes("'SelectByFolder',''")).toBeTruthy();
3339
expect(actual.includes("'Strict',false")).toBeTruthy();
3440
expect(actual.includes("'UseParallel',false")).toBeTruthy();
3541
expect(actual.includes("'OutputDetail',''")).toBeTruthy();
3642
expect(actual.includes("'LoggingLevel',''")).toBeTruthy();
3743

38-
const expected = `genscript('Test', 'JUnitTestResults','', 'CoberturaCodeCoverage','',
39-
'SourceFolder','', 'PDFTestReport','', 'SimulinkTestResults','',
40-
'CoberturaModelCoverage','', 'SelectByTag','', 'SelectByFolder','',
44+
const expected = `genscript('Test', 'JUnitTestResults','', 'CoberturaCodeCoverage','', 'HTMLCodeCoverage','',
45+
'SourceFolder','', 'PDFTestReport','', 'HTMLTestReport','', 'SimulinkTestResults','',
46+
'CoberturaModelCoverage','', 'HTMLModelCoverage','', 'SelectByTag','', 'SelectByFolder','',
4147
'Strict',false, 'UseParallel',false, 'OutputDetail','', 'LoggingLevel','')`
4248
.replace(/\s+/g, "");
4349
expect(actual.replace(/\s+/g, "").includes(expected)).toBeTruthy();
@@ -47,10 +53,13 @@ describe("command generation", () => {
4753
const options: scriptgen.RunTestsOptions = {
4854
JUnitTestResults: "test-results/results.xml",
4955
CoberturaCodeCoverage: "code-coverage/coverage.xml",
56+
HTMLCodeCoverage: "code-coverage/coverage.html",
5057
SourceFolder: "source",
5158
PDFTestReport: "test-results/pdf-results.pdf",
59+
HTMLTestReport: "test-results/html-results.html",
5260
SimulinkTestResults: "test-results/simulinkTest.mldatx",
5361
CoberturaModelCoverage: "test-results/modelcoverage.xml",
62+
HTMLModelCoverage: "test-results/modelcoverage.html",
5463
SelectByTag: "FeatureA",
5564
SelectByFolder: "test/tools;test/toolbox",
5665
Strict: true,
@@ -66,27 +75,45 @@ describe("command generation", () => {
6675
expect(
6776
actual.includes("'CoberturaCodeCoverage','code-coverage/coverage.xml'")
6877
).toBeTruthy();
78+
expect(
79+
actual.includes("'HTMLCodeCoverage','code-coverage/coverage.html'")
80+
).toBeTruthy();
6981
expect(actual.includes("'SourceFolder','source'")).toBeTruthy();
7082
expect(actual.includes("'PDFTestReport','test-results/pdf-results.pdf'")).toBeTruthy();
83+
expect(actual.includes("'HTMLTestReport','test-results/html-results.html'")).toBeTruthy();
7184
expect(
7285
actual.includes("'SimulinkTestResults','test-results/simulinkTest.mldatx'")
7386
).toBeTruthy();
7487
expect(
7588
actual.includes("'CoberturaModelCoverage','test-results/modelcoverage.xml'")
7689
).toBeTruthy();
90+
expect(
91+
actual.includes("'HTMLModelCoverage','test-results/modelcoverage.html'")
92+
).toBeTruthy();
7793
expect(actual.includes("'SelectByTag','FeatureA'")).toBeTruthy();
7894
expect(actual.includes("'SelectByFolder','test/tools;test/toolbox'")).toBeTruthy();
7995
expect(actual.includes("'Strict',true")).toBeTruthy();
8096
expect(actual.includes("'UseParallel',true")).toBeTruthy();
8197
expect(actual.includes("'OutputDetail','Detailed'")).toBeTruthy();
8298
expect(actual.includes("'LoggingLevel','Detailed'")).toBeTruthy();
8399

84-
const expected = `genscript('Test', 'JUnitTestResults','test-results/results.xml',
85-
'CoberturaCodeCoverage','code-coverage/coverage.xml', 'SourceFolder','source',
86-
'PDFTestReport','test-results/pdf-results.pdf', 'SimulinkTestResults','test-results/simulinkTest.mldatx',
87-
'CoberturaModelCoverage','test-results/modelcoverage.xml', 'SelectByTag','FeatureA',
88-
'SelectByFolder','test/tools;test/toolbox', 'Strict',true, 'UseParallel',true, 'OutputDetail','Detailed',
89-
'LoggingLevel','Detailed' )`.replace(/\s+/g, "");
100+
const expected = `genscript('Test',
101+
'JUnitTestResults','test-results/results.xml',
102+
'CoberturaCodeCoverage','code-coverage/coverage.xml',
103+
'HTMLCodeCoverage','code-coverage/coverage.html',
104+
'SourceFolder','source',
105+
'PDFTestReport','test-results/pdf-results.pdf',
106+
'HTMLTestReport','test-results/html-results.html',
107+
'SimulinkTestResults','test-results/simulinkTest.mldatx',
108+
'CoberturaModelCoverage','test-results/modelcoverage.xml',
109+
'HTMLModelCoverage','test-results/modelcoverage.html',
110+
'SelectByTag','FeatureA',
111+
'SelectByFolder','test/tools;test/toolbox',
112+
'Strict',true,
113+
'UseParallel',true,
114+
'OutputDetail','Detailed',
115+
'LoggingLevel','Detailed' )`
116+
.replace(/\s+/g, "");
90117
expect(actual.replace(/\s+/g, "").includes(expected)).toBeTruthy();
91118
});
92119
});

0 commit comments

Comments
 (0)