rooibos-roku 5.5.3 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/lib/framework/{unused/CodeCoverage.brs → CodeCoverage.brs} +2 -2
  2. package/dist/lib/framework/Coverage.bs +101 -47
  3. package/dist/lib/framework/TestRunner.bs +11 -9
  4. package/dist/lib/rooibos/Annotation.js +5 -5
  5. package/dist/lib/rooibos/Annotation.js.map +1 -1
  6. package/dist/lib/rooibos/CodeCoverageProcessor.js +145 -97
  7. package/dist/lib/rooibos/CodeCoverageProcessor.js.map +1 -1
  8. package/dist/lib/rooibos/CodeCoverageProcessor.spec.js +385 -61
  9. package/dist/lib/rooibos/CodeCoverageProcessor.spec.js.map +1 -1
  10. package/dist/lib/rooibos/FileFactory.js +24 -4
  11. package/dist/lib/rooibos/FileFactory.js.map +1 -1
  12. package/dist/lib/rooibos/RawCodeExpression.js +22 -0
  13. package/dist/lib/rooibos/RawCodeExpression.js.map +1 -0
  14. package/dist/lib/rooibos/RooibosSession.js +7 -7
  15. package/dist/lib/rooibos/RooibosSession.js.map +1 -1
  16. package/dist/lib/rooibos/TestCase.js +1 -1
  17. package/dist/lib/rooibos/TestCase.js.map +1 -1
  18. package/dist/lib/rooibos/TestGroup.js +24 -23
  19. package/dist/lib/rooibos/TestGroup.js.map +1 -1
  20. package/dist/lib/rooibos/TestSuite.js +4 -4
  21. package/dist/lib/rooibos/TestSuite.js.map +1 -1
  22. package/dist/lib/rooibos/TestSuiteBuilder.js +22 -19
  23. package/dist/lib/rooibos/TestSuiteBuilder.js.map +1 -1
  24. package/dist/lib/rooibos/TestSuiteBuilder.spec.js +169 -169
  25. package/dist/lib/rooibos/TestSuiteBuilder.spec.js.map +1 -1
  26. package/dist/lib/rooibos/Utils.js +1 -1
  27. package/dist/lib/rooibos/Utils.js.map +1 -1
  28. package/dist/plugin.js +30 -7
  29. package/dist/plugin.js.map +1 -1
  30. package/package.json +8 -1
  31. /package/dist/lib/framework/{unused/CodeCoverage.xml → CodeCoverage.xml} +0 -0
  32. /package/dist/lib/framework/{unused/CodeCoverageSupport.brs → CodeCoverageSupport.brs} +0 -0
@@ -6,11 +6,11 @@ function init()
6
6
  end function
7
7
 
8
8
  function setExpectedMap()
9
- m.top.expectedMap = "#EXPECTED_MAP#"
9
+ m.top.expectedMap = #EXPECTED_MAP#
10
10
  end function
11
11
 
12
12
  function setFilePathMap()
13
- m.top.filePathMap = "#FILE_PATH_MAP#"
13
+ m.top.filePathMap = #FILE_PATH_MAP#
14
14
  end function
15
15
 
16
16
  function onEntryChange()
@@ -1,51 +1,105 @@
1
1
  namespace rooibos.Coverage
2
+ function reportCodeCoverage() as void
2
3
 
3
- ' function createLCovOutput()
4
- ' ? "Generating lcov.info file..."
5
-
6
- ' cc = m.global._rbs_ccn
7
- ' expectedMap = cc.expectedMap
8
- ' filePathMap = cc.filePathMap
9
- ' resolvedMap = cc.resolvedMap
10
-
11
- ' buffer = ""
12
-
13
- ' for each module in filePathMap.items()
14
- ' moduleNumber = module.key
15
- ' filePath = module.value
16
- ' packageName = "."
17
-
18
- ' relativePath = filePath.replace("pkg:", packageName)
19
- ' sanitizedPath = relativePath.replace("\\", "/")
20
-
21
- ' buffer = buffer + "TN:" + chr(10)
22
- ' buffer = buffer + "SF:" + sanitizedPath + chr(10)
23
-
24
- ' for each expected in expectedMap[moduleNumber]
25
- ' lineNumber = expected[0]
26
- ' SHIFT = 1
27
-
28
- ' if resolvedMap[moduleNumber] <> invalid and resolvedMap[moduleNumber].doesExist(str(lineNumber)) then
29
- ' buffer = buffer + "DA:" + str(lineNumber + SHIFT) + ",1" + chr(10)
30
- ' else
31
- ' buffer = buffer + "DA:" + str(lineNumber + SHIFT) + ",0" + chr(10)
32
- ' end if
33
- ' end for
34
-
35
- ' buffer = buffer + "end_of_record" + chr(10)
36
- ' end for
37
- ' return buffer
38
- ' end function
39
-
40
- ' function printLCovInfo()
41
- ' ?
42
- ' ? "+++++++++++++++++++++++++++++++++++++++++++"
43
- ' ? "LCOV.INFO FILE"
44
- ' ? "+++++++++++++++++++++++++++++++++++++++++++"
45
- ' ?
46
- ' ? "+-=-coverage:start"
47
- ' ? Coverage.createLCovOutput()
48
- ' ? "+-=-coverage:end"
49
- ' end function
4
+ if m.global._rbs_ccn = invalid
5
+ ? "There was no rooibos code coverage component - not generating coverage report"
6
+ return
7
+ end if
8
+ ? ""
9
+ ? "...Generating code coverage report"
10
+ ? ""
11
+ m.global._rbs_ccn.save = true
12
+ cc = m.global._rbs_ccn
13
+ hitFiles = []
14
+ missFiles = []
15
+ allLinesCount = 0
16
+ allLinesHit = 0
17
+ for each key in cc.expectedMap
18
+ filename = cc.filePathMap[key]
19
+ expectedCount = cc.expectedMap[key].count()
20
+ allLinesCount += expectedCount
21
+ if expectedCount > 0
22
+ if cc.resolvedMap[key] <> invalid
23
+ resolvedCount = cc.resolvedMap[key].count()
24
+ allLinesHit += resolvedCount
25
+ resolvedPercent = (resolvedCount / expectedCount) * 100
26
+ hitFiles.push({ percent: resolvedPercent, text: filename + ": " + str(resolvedPercent).trim() + "% (" + stri(resolvedCount).trim() + "/" + stri(expectedCount).trim() + ")" })
27
+ else
28
+ missFiles.push(filename + ": MISS!")
29
+ end if
30
+ end if
31
+ end for
32
+ allLinesPercent = (allLinesHit / allLinesCount) * 100
33
+ ? ""
34
+ ? ""
35
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
36
+ ? "Code Coverage Report"
37
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
38
+ ? ""
39
+ ? "Total Coverage: " ; str(allLinesPercent).trim() ; "% (" ; stri(allLinesHit).trim() ; "/" + stri(allLinesCount).trim() ; ")"
40
+ ? "Files: " ; cc.resolvedMap.count(); "/" ; cc.expectedMap.count()
41
+ ? ""
42
+ ? "HIT FILES"
43
+ ? "---------"
44
+ hitFiles.SortBy("percent")
45
+ for i = 0 to hitFiles.count() - 1
46
+ ? hitFiles[i].text
47
+ end for
48
+ ? ""
49
+ ? "MISSED FILES"
50
+ ? "------------"
51
+ for i = 0 to missFiles.count() - 1
52
+ ? missFiles[i]
53
+ end for
54
+
55
+ end function
56
+
57
+ function createLCovOutput()
58
+ ? "Generating lcov.info file..."
59
+
60
+ cc = m.global._rbs_ccn
61
+ expectedMap = cc.expectedMap
62
+ filePathMap = cc.filePathMap
63
+ resolvedMap = cc.resolvedMap
64
+
65
+ buffer = ""
66
+
67
+ for each module in filePathMap.items()
68
+ moduleNumber = module.key
69
+ filePath = module.value
70
+ packageName = "."
71
+
72
+ relativePath = filePath.replace("pkg:", packageName)
73
+ sanitizedPath = relativePath.replace("\\", "/")
74
+
75
+ buffer = buffer + "TN:" + chr(10)
76
+ buffer = buffer + "SF:" + sanitizedPath + chr(10)
77
+
78
+ for each expected in expectedMap[moduleNumber]
79
+ lineNumber = expected[0]
80
+ SHIFT = 1
81
+
82
+ if resolvedMap[moduleNumber] <> invalid and resolvedMap[moduleNumber].doesExist(str(lineNumber))
83
+ buffer = buffer + "DA:" + str(lineNumber + SHIFT) + ",1" + chr(10)
84
+ else
85
+ buffer = buffer + "DA:" + str(lineNumber + SHIFT) + ",0" + chr(10)
86
+ end if
87
+ end for
88
+
89
+ buffer = buffer + "end_of_record" + chr(10)
90
+ end for
91
+ return buffer
92
+ end function
93
+
94
+ function printLCovInfo()
95
+ ?
96
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
97
+ ? "LCOV.INFO FILE"
98
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
99
+ ?
100
+ ? "+-=-coverage:start"
101
+ ? rooibos.coverage.createLCovOutput()
102
+ ? "+-=-coverage:end"
103
+ end function
50
104
 
51
105
  end namespace
@@ -106,15 +106,17 @@ namespace rooibos
106
106
  }
107
107
  m.nodeContext.global.testsScene.rooibosTestResult = rooibosResult
108
108
 
109
- 'code coverage is not enabled in rooibos 4.0.0 - will get added again in future
110
- ' if Rooibos.Common.isFunction(RBS_reportCodeCoverage)
111
- ' 'bs:disable-next-line
112
- ' RBS_reportCodeCoverage()
113
-
114
- ' if m.config.printLcov = true
115
- ' Coverage.printLCovInfo()
116
- ' end if
117
- ' end if
109
+ 'bs:disable-next-line
110
+ if Rooibos.Common.isFunction(rooibos.Coverage.reportCodeCoverage)
111
+ 'bs:disable-next-line
112
+ rooibos.Coverage.reportCodeCoverage()
113
+
114
+ if m.config.printLcov = true
115
+ rooibos.Coverage.printLCovInfo()
116
+ end if
117
+ else
118
+ ? "rooibos.Coverage.reportCodeCoverage is not a function"
119
+ end if
118
120
  if m.config.sendHomeOnFinish <> false
119
121
  m.sendHomeKeypress()
120
122
  end if
@@ -92,7 +92,7 @@ class RooibosAnnotation {
92
92
  let describeAnnotations = statement.annotations.filter((a) => getAnnotationType(a.name) === AnnotationType.Describe);
93
93
  if (describeAnnotations.length > 1) {
94
94
  for (let a of describeAnnotations) {
95
- Diagnostics_1.diagnosticMultipleDescribeAnnotations(file, a);
95
+ (0, Diagnostics_1.diagnosticMultipleDescribeAnnotations)(file, a);
96
96
  }
97
97
  }
98
98
  for (let annotation of statement.annotations) {
@@ -142,13 +142,13 @@ class RooibosAnnotation {
142
142
  case AnnotationType.It:
143
143
  const testName = annotation.getArguments()[0];
144
144
  if (!testName || testName.trim() === '') {
145
- Diagnostics_1.diagnosticNoTestNameDefined(file, annotation);
145
+ (0, Diagnostics_1.diagnosticNoTestNameDefined)(file, annotation);
146
146
  }
147
147
  let newAnnotation = new RooibosAnnotation(file, annotation, annotationType, annotation.name, testName, isIgnore, isSolo, undefined, undefined, tags, noCatch);
148
148
  newAnnotation.isAsync = async;
149
149
  newAnnotation.asyncTimeout = asyncTimeout === -1 ? 2000 : asyncTimeout;
150
150
  if (testAnnotation) {
151
- Diagnostics_1.diagnosticMultipleTestOnFunctionDefined(file, newAnnotation.annotation);
151
+ (0, Diagnostics_1.diagnosticMultipleTestOnFunctionDefined)(file, newAnnotation.annotation);
152
152
  }
153
153
  else {
154
154
  testAnnotation = newAnnotation;
@@ -188,11 +188,11 @@ class RooibosAnnotation {
188
188
  this.params.push(new AnnotationParams(annotation, rawParams, annotation.range.start.line, annotation.getArguments(), isIgnore, isSolo, noCatch));
189
189
  }
190
190
  else {
191
- Diagnostics_1.diagnosticIllegalParams(file, annotation);
191
+ (0, Diagnostics_1.diagnosticIllegalParams)(file, annotation);
192
192
  }
193
193
  }
194
194
  catch (e) {
195
- Diagnostics_1.diagnosticIllegalParams(file, annotation);
195
+ (0, Diagnostics_1.diagnosticIllegalParams)(file, annotation);
196
196
  }
197
197
  }
198
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Annotation.js","sourceRoot":"","sources":["../../../src/lib/rooibos/Annotation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Annotation.js","sourceRoot":"","sources":["../../../src/lib/rooibos/Annotation.ts"],"names":[],"mappings":"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"}
@@ -1,114 +1,162 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CodeCoverageProcessor = void 0;
3
+ exports.CodeCoverageProcessor = exports.CodeCoverageLineType = void 0;
4
+ const brighterscript_1 = require("brighterscript");
5
+ const brighterscript = require("brighterscript");
6
+ const RawCodeStatement_1 = require("./RawCodeStatement");
7
+ const BrsTranspileState_1 = require("brighterscript/dist/parser/BrsTranspileState");
8
+ const vscode_languageserver_types_1 = require("vscode-languageserver-types");
9
+ const RawCodeExpression_1 = require("./RawCodeExpression");
10
+ var CodeCoverageLineType;
11
+ (function (CodeCoverageLineType) {
12
+ CodeCoverageLineType[CodeCoverageLineType["noCode"] = 0] = "noCode";
13
+ CodeCoverageLineType[CodeCoverageLineType["code"] = 1] = "code";
14
+ CodeCoverageLineType[CodeCoverageLineType["condition"] = 2] = "condition";
15
+ CodeCoverageLineType[CodeCoverageLineType["branch"] = 3] = "branch";
16
+ })(CodeCoverageLineType = exports.CodeCoverageLineType || (exports.CodeCoverageLineType = {}));
4
17
  class CodeCoverageProcessor {
5
- constructor(builder) {
6
- this._config = builder.options.rooibos || {};
7
- this._fileId = 0;
18
+ constructor(builder, fileFactory) {
19
+ this.coverageBrsTemplate = `
20
+ function RBS_CC_#ID#_reportLine(lineNumber, reportType = 1)
21
+ if m.global = invalid
22
+ '? "global is not available in this scope!! it is not possible to record coverage: #FILE_PATH#(lineNumber)"
23
+ return true
24
+ else
25
+ if m._rbs_ccn = invalid
26
+ '? "Coverage maps are not created - creating now"
27
+ if m.global._rbs_ccn = invalid
28
+ '? "Coverage maps are not created - creating now"
29
+ m.global.addFields({
30
+ "_rbs_ccn": createObject("roSGNode", "CodeCoverage")
31
+ })
32
+ end if
33
+ m._rbs_ccn = m.global._rbs_ccn
34
+ end if
35
+ end if
36
+
37
+ m._rbs_ccn.entry = {"f":"#ID#", "l":stri(lineNumber), "r":reportType}
38
+ return true
39
+ end function
40
+ `;
41
+ this.config = builder.options.rooibos || {};
42
+ this.expectedCoverageMap = {};
43
+ this.filePathMap = {};
44
+ this.fileId = 0;
45
+ this.fileFactory = fileFactory;
8
46
  try {
9
- // this._coverageBrsTemplate = fs.readFileSync(path.join(__dirname, './CodeCoverageTemplate.brs'), 'utf8');
10
- // this._coverageComponentBrsTemplate = fs.readFileSync(path.join(__dirname, './CodeCoverage.brs'), 'utf8');
11
- // this._coverageComponentXmlTemplate = fs.readFileSync(path.join(__dirname, './CodeCoverage.xml'), 'utf8');
12
- // this._coverageSupportTemplate = fs.readFileSync(path.join(__dirname, './CodeCoverageSupport.brs'), 'utf8');
13
47
  }
14
48
  catch (e) {
15
- // console.log('Error:', e.stack);
49
+ console.log('Error:', e.stack);
16
50
  }
17
51
  }
18
- generateMetadata() {
19
- //DO when everythin is ran
20
- this.createCoverageComponent();
21
- this.createCoverageSupport();
52
+ generateMetadata(isUsingCoverage, program) {
53
+ if (isUsingCoverage) {
54
+ this.fileFactory.createCoverageComponent(program, this.expectedCoverageMap, this.filePathMap);
55
+ }
22
56
  }
23
- addCodeCoverage(file) {
24
- //not yet supported
25
- // eslint-disable-next-line no-constant-binary-expression
26
- if (false && this._config.isRecordingCodeCoverage) {
27
- this._processFile();
57
+ addCodeCoverage(file, astEditor) {
58
+ if (this.config.isRecordingCodeCoverage) {
59
+ this.transpileState = new BrsTranspileState_1.BrsTranspileState(file);
60
+ this._processFile(file, astEditor);
28
61
  }
29
- //if matches glob
30
- // this._processFile(file);
31
- //
32
62
  }
33
- _processFile() {
34
- // this._fileId++;
35
- // let fileContents = '';
36
- // let lines = file.getFileContents().split(/\r?\n/);
37
- // let coverageMap: Map<number, number> = new Map<number, number>();
38
- // this.visitableLines = new Map<number, Statement>();
39
- // this.getVisitableLinesForStatements(file.ast);
40
- // //TODO - walks the ast
41
- // for (let lineNumber = 0; lineNumber < lines.length; lineNumber++) {
42
- // let line = lines[lineNumber];
43
- // let statement = this.visitableLines.get(lineNumber);
44
- // let coverageType = CodeCoverageLineType.noCode;
45
- // if (statement) {
46
- // if (statement instanceof IfStatement) {
47
- // let conditionStartPos = statement.condition.range.start.character;
48
- // let conditionEndPos = statement.condition.range.end.character;
49
- // let funcCall = this.getFuncCallText(lineNumber, CodeCoverageLineType.condition);
50
- // let conditionText = line.substr(conditionStartPos, conditionEndPos - conditionStartPos);
51
- // let restofLineText = line.substring(conditionEndPos);
52
- // line = `${line.substr(0, conditionStartPos)} ${funcCall} and (${conditionText}) ${restofLineText}`;
53
- // coverageType = CodeCoverageLineType.condition;
54
- // } else if (statement instanceof IfStatement) {
55
- // // let conditionStartPos = statement.condition.location.start.column;
56
- // // let conditionEndPos = statement.condition.location.end.column;
57
- // // let funcCall = this.getFuncCallText(lineNumber, CodeCoverageLineType.condition);
58
- // // let conditionText = line.substr(conditionStartPos, conditionEndPos - conditionStartPos);
59
- // // let restofLineText = line.substring(conditionEndPos);
60
- // // line = `${line.substr(0, conditionStartPos)} ${funcCall} and (${conditionText}) ${restofLineText}`;
61
- // // coverageType = CodeCoverageLineType.condition;
62
- // } else {
63
- // //all types that can be prefixed with the funcall and a colon (i.e for, while, return foreach, assign)
64
- // let funcCall = this.getFuncCallText(lineNumber, CodeCoverageLineType.code);
65
- // line = `${funcCall}: ${line}`;
66
- // coverageType = CodeCoverageLineType.code;
67
- // }
68
- // } else {
69
- // `could not ascertain symbol type for line "${line} - ignoring`);
70
- // }
71
- // if (!line.endsWith('\n')) {
72
- // line += '\n';
73
- // }
74
- // fileContents += line;
75
- // if (coverageType > CodeCoverageLineType.noCode) {
76
- // coverageMap.set(lineNumber, coverageType);
77
- // }
78
- // }
79
- // this._expectedCoverageMap[this._fileId.toString().trim()] = Array.from(coverageMap);
80
- // this._filePathMap[this._fileId] = file.pkgUri;
81
- // fileContents += this.getBrsAPIText();
82
- // file.setFileContents(fileContents);
83
- //`Writing to ${file.fullPath}`);
84
- // file.saveFileContents();
63
+ _processFile(file, astEditor) {
64
+ this.fileId++;
65
+ this.coverageMap = new Map();
66
+ this.executableLines = new Map();
67
+ this.processedStatements = new Set();
68
+ this.astEditor = astEditor;
69
+ file.ast.walk((0, brighterscript_1.createVisitor)({
70
+ ForStatement: (ds, parent, owner, key) => {
71
+ this.addStatement(ds);
72
+ ds.forToken.text = `${this.getFuncCallText(ds.range.start.line, CodeCoverageLineType.code)}: for`;
73
+ },
74
+ IfStatement: (ds, parent, owner, key) => {
75
+ var _a;
76
+ let ifStatement = ds;
77
+ while ((0, brighterscript_1.isIfStatement)(ifStatement)) {
78
+ this.addStatement(ds);
79
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
80
+ ifStatement.condition = new brighterscript.BinaryExpression(new RawCodeExpression_1.RawCodeExpression(this.getFuncCallText(ds.condition.range.start.line, CodeCoverageLineType.branch)), brighterscript.createToken(brighterscript.TokenKind.And), ifStatement.condition);
81
+ ifStatement = ifStatement.elseBranch;
82
+ }
83
+ let blockStatements = (_a = ifStatement === null || ifStatement === void 0 ? void 0 : ifStatement.statements) !== null && _a !== void 0 ? _a : [];
84
+ if ((blockStatements === null || blockStatements === void 0 ? void 0 : blockStatements.length) > 0) {
85
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
86
+ let coverageStatement = new RawCodeStatement_1.RawCodeStatement(this.getFuncCallText(ifStatement.range.start.line - 1, CodeCoverageLineType.branch));
87
+ blockStatements.splice(0, 0, coverageStatement);
88
+ }
89
+ },
90
+ GotoStatement: (ds, parent, owner, key) => {
91
+ this.addStatement(ds);
92
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
93
+ },
94
+ WhileStatement: (ds, parent, owner, key) => {
95
+ ds.tokens.while.text = `${this.getFuncCallText(ds.range.start.line, CodeCoverageLineType.code)}: while`;
96
+ },
97
+ ReturnStatement: (ds, parent, owner, key) => {
98
+ this.addStatement(ds);
99
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
100
+ },
101
+ ForEachStatement: (ds, parent, owner, key) => {
102
+ this.addStatement(ds);
103
+ ds.tokens.forEach.text = `${this.getFuncCallText(ds.range.start.line, CodeCoverageLineType.code)}: for each`;
104
+ },
105
+ ExitWhileStatement: (ds, parent, owner, key) => {
106
+ },
107
+ PrintStatement: (ds, parent, owner, key) => {
108
+ this.addStatement(ds);
109
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
110
+ },
111
+ DottedSetStatement: (ds, parent, owner, key) => {
112
+ this.addStatement(ds);
113
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
114
+ },
115
+ IndexedSetStatement: (ds, parent, owner, key) => {
116
+ this.addStatement(ds);
117
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
118
+ },
119
+ IncrementStatement: (ds, parent, owner, key) => {
120
+ this.addStatement(ds);
121
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
122
+ },
123
+ AssignmentStatement: (ds, parent, owner, key) => {
124
+ if (!brighterscript.isForStatement(parent)) {
125
+ this.addStatement(ds);
126
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
127
+ }
128
+ },
129
+ ExpressionStatement: (ds, parent, owner, key) => {
130
+ this.addStatement(ds);
131
+ this.convertStatementToCoverageStatement(ds, CodeCoverageLineType.code, owner, key);
132
+ }
133
+ }), { walkMode: brighterscript_1.WalkMode.visitAllRecursive });
134
+ this.expectedCoverageMap[this.fileId.toString().trim()] = Array.from(this.coverageMap);
135
+ this.filePathMap[this.fileId] = file.pkgPath;
136
+ this.addBrsAPIText(file);
137
+ }
138
+ convertStatementToCoverageStatement(statement, coverageType, owner, key) {
139
+ if (this.processedStatements.has(statement)) {
140
+ return;
141
+ }
142
+ const lineNumber = statement.range.start.line;
143
+ this.coverageMap.set(lineNumber, coverageType);
144
+ const parsed = brighterscript_1.Parser.parse(this.getFuncCallText(lineNumber, coverageType)).ast.statements[0];
145
+ this.astEditor.arraySplice(owner, key, 0, parsed);
146
+ // store the statement in a set to avoid handling again after inserting statement above
147
+ this.processedStatements.add(statement);
85
148
  }
86
- getBrsAPIText() {
87
- let template = this._coverageBrsTemplate.replace(/\#ID\#/g, this._fileId.toString().trim());
88
- return template;
149
+ addBrsAPIText(file) {
150
+ const func = new RawCodeStatement_1.RawCodeStatement(this.coverageBrsTemplate.replace(/\#ID\#/g, this.fileId.toString().trim()), file, vscode_languageserver_types_1.Range.create(brighterscript_1.Position.create(1, 1), brighterscript_1.Position.create(1, 1)));
151
+ file.ast.statements.push(func);
89
152
  }
90
- createCoverageComponent() {
91
- // //Write this out via program
92
- // let targetPath = path.resolve(this._program.options.rootDir);
93
- // let file = new File(path.resolve(path.join(targetPath), 'components'), 'components', 'CodeCoverage.xml', '.xml');
94
- // file.setFileContents(this._coverageComponentXmlTemplate);
95
- //`Writing to ${file.fullPath}`);
96
- // file.saveFileContents();
97
- // file = new File(path.resolve(path.join(targetPath, 'components')), 'components', 'CodeCoverage.brs', '.brs');
98
- // let template = this._coverageComponentBrsTemplate;
99
- // template = template.replace(/\#EXPECTED_MAP\#/g, JSON.stringify(this._expectedCoverageMap));
100
- // template = template.replace(/\#FILE_PATH_MAP\#/g, JSON.stringify(this._filePathMap));
101
- // file.setFileContents(template);
102
- //`Writing to ${file.fullPath}`);
103
- // file.saveFileContents();
153
+ addStatement(statement, lineNumber) {
154
+ if (!this.executableLines.has(lineNumber)) {
155
+ this.executableLines.set(lineNumber, statement);
156
+ }
104
157
  }
105
- createCoverageSupport() {
106
- // //write this out via program
107
- // let targetPath = path.resolve(this._program.options.rootDir);
108
- // let file = new File(path.resolve(path.join(targetPath), 'source'), 'source', 'CodeCoverageSupport.brs', '.brs');
109
- // file.setFileContents(this._coverageSupportTemplate);
110
- //`Writing to ${file.fullPath}`);
111
- // file.saveFileContents();
158
+ getFuncCallText(lineNumber, lineType) {
159
+ return `RBS_CC_${this.fileId}_reportLine(${lineNumber.toString().trim()}, ${lineType.toString().trim()})`;
112
160
  }
113
161
  }
114
162
  exports.CodeCoverageProcessor = CodeCoverageProcessor;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeCoverageProcessor.js","sourceRoot":"","sources":["../../../src/lib/rooibos/CodeCoverageProcessor.ts"],"names":[],"mappings":";;;AAKA,MAAa,qBAAqB;IAE9B,YAAY,OAAuB;QAC/B,IAAI,CAAC,OAAO,GAAI,OAAO,CAAC,OAAe,CAAC,OAAwB,IAAI,EAAE,CAAC;QACvE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI;YACA,2GAA2G;YAC3G,4GAA4G;YAC5G,4GAA4G;YAC5G,8GAA8G;SACjH;QAAC,OAAO,CAAC,EAAE;YACR,kCAAkC;SACrC;IACL,CAAC;IAMM,gBAAgB;QACnB,0BAA0B;QAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEM,eAAe,CAAC,IAAa;QAChC,mBAAmB;QACnB,yDAAyD;QACzD,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;YAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;QACD,iBAAiB;QACjB,2BAA2B;QAC3B,EAAE;IACN,CAAC;IAEM,YAAY;QACf,kBAAkB;QAClB,yBAAyB;QACzB,qDAAqD;QACrD,oEAAoE;QACpE,sDAAsD;QACtD,iDAAiD;QACjD,yBAAyB;QACzB,sEAAsE;QACtE,kCAAkC;QAClC,yDAAyD;QACzD,oDAAoD;QACpD,qBAAqB;QACrB,8CAA8C;QAC9C,2EAA2E;QAC3E,uEAAuE;QACvE,yFAAyF;QACzF,iGAAiG;QACjG,8DAA8D;QAC9D,4GAA4G;QAC5G,uDAAuD;QACvD,qDAAqD;QACrD,8EAA8E;QAC9E,0EAA0E;QAC1E,4FAA4F;QAC5F,oGAAoG;QACpG,iEAAiE;QACjE,+GAA+G;QAC/G,0DAA0D;QAC1D,eAAe;QACf,+GAA+G;QAC/G,oFAAoF;QACpF,uCAAuC;QACvC,kDAAkD;QAClD,QAAQ;QACR,aAAa;QACb,sEAAsE;QACtE,MAAM;QAEN,gCAAgC;QAChC,oBAAoB;QACpB,MAAM;QACN,0BAA0B;QAC1B,sDAAsD;QACtD,iDAAiD;QACjD,MAAM;QACN,IAAI;QACJ,uFAAuF;QACvF,iDAAiD;QACjD,wCAAwC;QACxC,sCAAsC;QACtC,iCAAiC;QACjC,2BAA2B;IAC/B,CAAC;IAEM,aAAa;QAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,uBAAuB;QAC1B,+BAA+B;QAC/B,gEAAgE;QAChE,oHAAoH;QACpH,4DAA4D;QAC5D,iCAAiC;QACjC,2BAA2B;QAE3B,gHAAgH;QAChH,qDAAqD;QACrD,+FAA+F;QAC/F,wFAAwF;QACxF,kCAAkC;QAClC,iCAAiC;QACjC,2BAA2B;IAC/B,CAAC;IAEM,qBAAqB;QACxB,+BAA+B;QAC/B,gEAAgE;QAChE,mHAAmH;QACnH,uDAAuD;QACvD,iCAAiC;QACjC,2BAA2B;IAC/B,CAAC;CAGJ;AA3HD,sDA2HC"}
1
+ {"version":3,"file":"CodeCoverageProcessor.js","sourceRoot":"","sources":["../../../src/lib/rooibos/CodeCoverageProcessor.ts"],"names":[],"mappings":"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"}