rooibos-roku 5.9.1 → 5.11.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.
@@ -51,6 +51,7 @@ namespace rooibos
51
51
 
52
52
  protected global = invalid
53
53
  protected catchCrashes = false
54
+ protected throwOnFailedAssertion = false
54
55
 
55
56
  '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
56
57
  '++ base methods to override
@@ -262,10 +263,11 @@ namespace rooibos
262
263
  ? ""
263
264
 
264
265
  m.currentResult = test.result
266
+ m.currentResult.throwOnFailedAssertion = m.throwOnFailedAssertion
265
267
  if m.catchCrashes and not test.noCatch and not m.noCatch
266
268
  try
267
269
  test.run()
268
- if m.isAutoAssertingMocks = true
270
+ if m.isAutoAssertingMocks = true and not test.isAsync
269
271
  m.AssertMocks()
270
272
  m.CleanMocks()
271
273
  m.CleanStubs()
@@ -276,7 +278,7 @@ namespace rooibos
276
278
  end try
277
279
  else
278
280
  test.run()
279
- if m.isAutoAssertingMocks = true
281
+ if m.isAutoAssertingMocks = true and not test.isAsync
280
282
  m.AssertMocks()
281
283
  m.CleanMocks()
282
284
  m.CleanStubs()
@@ -302,12 +304,37 @@ namespace rooibos
302
304
  ' */
303
305
  function fail(msg = "Error" as string) as dynamic
304
306
  if m.currentResult.isFail
307
+ if m.throwOnFailedAssertion
308
+ throw m.currentResult.getMessage()
309
+ end if
305
310
  return false
306
311
  end if
307
312
  m.currentResult.fail(msg, m.currentAssertLineNumber)
308
313
  return false
309
314
  end function
310
315
 
316
+ ' /**
317
+ ' * @memberof module:BaseTestSuite
318
+ ' * @name failCrash
319
+ ' * @function
320
+ ' * @instance
321
+ ' * @description Fail immediately, with the given exception
322
+ ' * @param {Dynamic} [error] - exception to fail on
323
+ ' * @param {Dynamic} [msg=""] - message to display in the test report
324
+ ' * @returns {boolean} - true if failure was set, false if the test is already failed
325
+ ' */
326
+ function failCrash(error as dynamic, msg = "Error" as string) as dynamic
327
+ if m.currentResult.isFail
328
+ if m.throwOnFailedAssertion
329
+ throw m.currentResult.getMessage()
330
+ end if
331
+ return false
332
+ end if
333
+ m.currentResult.fail(msg, m.currentAssertLineNumber)
334
+ m.currentResult.crash(msg, error)
335
+ return true
336
+ end function
337
+
311
338
  function failBecauseOfTimeOut() as dynamic
312
339
  if m.currentResult.isFail
313
340
  return false
@@ -1797,8 +1824,25 @@ namespace rooibos
1797
1824
  return invalid
1798
1825
  end function
1799
1826
 
1800
- function stubCall(invocation as dynamic, returnValue = invalid as dynamic) as object
1801
- 'mock function body - the plugin replaces this
1827
+ function stubCall(invocation as dynamic, stubOrReturnValue = invalid as dynamic, functionName = "" as string) as object
1828
+ ' When stubbing global functions this will be called. Other wise the test code will be updated to call m._stubCall()
1829
+ if type(invocation).endsWith("Function") and functionName = ""
1830
+ functionName = invocation.toStr().tokenize(" ").peek()
1831
+ else
1832
+ throw "Did not provide a function to be stubbed"
1833
+ end if
1834
+
1835
+ if not type(stubOrReturnValue).endsWith("Function")
1836
+ throw "Did not provide a stub function"
1837
+ end if
1838
+
1839
+ ' Store the stub on the component scope
1840
+ globalAa = getGlobalAa()
1841
+ if type(globalAa?.__globalStubs) <> "roAssociativeArray"
1842
+ globalAa.__globalStubs = {}
1843
+ end if
1844
+
1845
+ globalAa.__globalStubs[lCase(functionName)] = stubOrReturnValue
1802
1846
  return invalid
1803
1847
  end function
1804
1848
 
@@ -1850,15 +1894,15 @@ namespace rooibos
1850
1894
  ' * @returns {Object} - mock that was wired into the real method
1851
1895
  ' */
1852
1896
  function expectOnce(target, methodName, expectedArgs = invalid, returnValue = invalid, allowNonExistingMethods = false) as object
1853
- 'HACK
1854
- 'HACK
1855
- 'HACK
1856
- 'HACK
1857
- 'HACK
1897
+ 'HACK
1898
+ 'HACK
1899
+ 'HACK
1900
+ 'HACK
1901
+ 'HACK
1858
1902
  ' try
1859
- return m.mock(target, methodName, 1, expectedArgs, returnValue, allowNonExistingMethods)
1903
+ return m.mock(target, methodName, 1, expectedArgs, returnValue, allowNonExistingMethods)
1860
1904
  ' catch error
1861
- 'bs:disable-next-line
1905
+ 'bs:disable-next-line
1862
1906
  ' m.currentResult.fail("Setting up mock failed: " + error.message, m.currentAssertLineNumber)
1863
1907
  ' return false
1864
1908
  ' end try
@@ -2257,6 +2301,7 @@ namespace rooibos
2257
2301
  rooibos.resetMocksByFunctionName()
2258
2302
  end function
2259
2303
 
2304
+
2260
2305
  ' /**
2261
2306
  ' * @memberof module:BaseTestSuite
2262
2307
  ' * @name cleanStubs
@@ -2265,6 +2310,10 @@ namespace rooibos
2265
2310
  ' * @description Cleans up all tracking data associated with stubs
2266
2311
  ' */
2267
2312
  function cleanStubs() as void
2313
+ ' Clean up the global functions mocks as well
2314
+ globalAa = getGlobalAa()
2315
+ globalAa.__globalStubs = invalid
2316
+
2268
2317
  if m.stubs = invalid
2269
2318
  return
2270
2319
  end if
@@ -2,33 +2,37 @@ function init()
2
2
  m.resolvedMap = {}
3
3
  m.top.observeField("entry", "onEntryChange")
4
4
  m.top.observeField("save", "onSave")
5
-
5
+ m.results = []
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()
17
- entry = m.top.entry
18
- if entry <> invalid
19
- lineMap = m.resolvedMap[entry.f]
20
-
21
- if lineMap = invalid
22
- lineMap = {}
23
- end if
24
- lineMap[entry.l] = entry.r
25
-
26
- m.resolvedMap[entry.f] = lineMap
27
- end if
17
+ entry = m.top.entry
18
+ ' defer till later
19
+ m.results.push(entry)
28
20
  end function
29
21
 
30
22
  function onSave()
31
23
  ? "saving data"
24
+ for each entry in m.results
25
+ if entry <> invalid
26
+ fileId = entry.f
27
+ lineMap = m.resolvedMap[fileId]
28
+
29
+ if lineMap = invalid
30
+ lineMap = {}
31
+ m.resolvedMap[fileId] = lineMap
32
+ end if
33
+ lineMap[entry.l] = entry.r
34
+ end if
35
+ end for
32
36
  m.top.resolvedMap = m.resolvedMap
33
37
  setExpectedMap()
34
38
  setFilePathMap()
@@ -22,7 +22,7 @@ function RBS_ReportCodeCoverage() as void
22
22
  resolvedCount = cc.resolvedMap[key].count()
23
23
  allLinesHit += resolvedCount
24
24
  resolvedPercent = (resolvedCount / expectedCount) * 100
25
- hitFiles.push({percent:resolvedPercent, text:filename + ": " +str(resolvedPercent).trim() + "% (" + stri(resolvedCount).trim() + "/" + stri(expectedCount).trim() + ")"})
25
+ hitFiles.push({ percent: resolvedPercent, text: filename + ": " + str(resolvedPercent).trim() + "% (" + stri(resolvedCount).trim() + "/" + stri(expectedCount).trim() + ")" })
26
26
  else
27
27
  missFiles.push(filename + ": MISS!")
28
28
  end if
@@ -41,13 +41,13 @@ function RBS_ReportCodeCoverage() as void
41
41
  ? "HIT FILES"
42
42
  ? "---------"
43
43
  hitFiles.SortBy("percent")
44
- for i = 0 to hitFiles.count() -1
44
+ for i = 0 to hitFiles.count() - 1
45
45
  ? hitFiles[i].text
46
46
  end for
47
47
  ? ""
48
48
  ? "MISSED FILES"
49
49
  ? "------------"
50
- for i = 0 to missFiles.count() -1
50
+ for i = 0 to missFiles.count() - 1
51
51
  ? missFiles[i]
52
52
  end for
53
53
 
@@ -5,31 +5,46 @@ namespace rooibos.Coverage
5
5
  ? "There was no rooibos code coverage component - not generating coverage report"
6
6
  return
7
7
  end if
8
+ t = createObject("roTimespan")
8
9
  ? ""
9
10
  ? "...Generating code coverage report"
10
11
  ? ""
11
12
  m.global._rbs_ccn.save = true
12
13
  cc = m.global._rbs_ccn
14
+ expectedMap = cc.expectedMap
15
+ filePathMap = cc.filePathMap
16
+ resolvedMap = cc.resolvedMap
17
+
13
18
  hitFiles = []
14
19
  missFiles = []
15
20
  allLinesCount = 0
16
21
  allLinesHit = 0
17
- for each key in cc.expectedMap
18
- filename = cc.filePathMap[key]
19
- expectedCount = cc.expectedMap[key].count()
22
+ for each key in expectedMap
23
+ filename = filePathMap[key]
24
+ expectedCount = expectedMap[key].count()
20
25
  allLinesCount += expectedCount
21
26
  if expectedCount > 0
22
- if cc.resolvedMap[key] <> invalid
23
- resolvedCount = cc.resolvedMap[key].count()
27
+ if resolvedMap[key] <> invalid
28
+ resolvedCount = resolvedMap[key].count()
24
29
  allLinesHit += resolvedCount
25
- resolvedPercent = (resolvedCount / expectedCount) * 100
30
+ if resolvedCount = 0
31
+ resolvedPercent = 0
32
+ else
33
+ resolvedPercent = (resolvedCount / expectedCount) * 100
34
+ end if
26
35
  hitFiles.push({ percent: resolvedPercent, text: filename + ": " + str(resolvedPercent).trim() + "% (" + stri(resolvedCount).trim() + "/" + stri(expectedCount).trim() + ")" })
27
36
  else
28
37
  missFiles.push(filename + ": MISS!")
29
38
  end if
39
+ else
40
+ missFiles.push(filename + ": MISS!")
30
41
  end if
31
42
  end for
32
- allLinesPercent = (allLinesHit / allLinesCount) * 100
43
+ if allLinesHit = 0
44
+ allLinesPercent = 0
45
+ else
46
+ allLinesPercent = (allLinesHit / allLinesCount) * 100
47
+ end if
33
48
  ? ""
34
49
  ? ""
35
50
  ? "+++++++++++++++++++++++++++++++++++++++++++"
@@ -37,7 +52,7 @@ namespace rooibos.Coverage
37
52
  ? "+++++++++++++++++++++++++++++++++++++++++++"
38
53
  ? ""
39
54
  ? "Total Coverage: " ; str(allLinesPercent).trim() ; "% (" ; stri(allLinesHit).trim() ; "/" + stri(allLinesCount).trim() ; ")"
40
- ? "Files: " ; cc.resolvedMap.count(); "/" ; cc.expectedMap.count()
55
+ ? "Files: " ; resolvedMap.count(); "/" ; expectedMap.count()
41
56
  ? ""
42
57
  ? "HIT FILES"
43
58
  ? "---------"
@@ -51,7 +66,10 @@ namespace rooibos.Coverage
51
66
  for i = 0 to missFiles.count() - 1
52
67
  ? missFiles[i]
53
68
  end for
54
-
69
+ ? ""
70
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
71
+ ? "Code Coverage Report Complete"; t.totalMilliseconds(); "ms"
72
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
55
73
  end function
56
74
 
57
75
  function createLCovOutput()
@@ -18,7 +18,10 @@ namespace rooibos
18
18
  screen.show()
19
19
 
20
20
  m.global = screen.getGlobalNode()
21
- m.global.addFields({ "testsScene": scene })
21
+ m.global.addFields({
22
+ "testsScene": scene
23
+ "_rbs_ccn": createObject("roSGNode", "CodeCoverage")' bs:disable-line
24
+ })
22
25
 
23
26
  if scene.hasField("isReadyToStartTests") and scene.isReadyToStartTests = false
24
27
  ? "The scene is not ready yet - waiting for it to set isReadyToStartTests to true"
@@ -8,6 +8,7 @@ namespace rooibos
8
8
  public test = invalid
9
9
  public time = 0
10
10
  public error = invalid
11
+ public throwOnFailedAssertion = false
11
12
 
12
13
  function new(test)
13
14
  m.test = test
@@ -38,6 +39,9 @@ namespace rooibos
38
39
  m.message = message
39
40
  end if
40
41
  end if
42
+ if m.throwOnFailedAssertion
43
+ throw m.getMessage()
44
+ end if
41
45
  end function
42
46
 
43
47
  function crash(message as string, error)
@@ -69,6 +69,7 @@ namespace rooibos
69
69
  testSuite.top = m.nodeContext.top
70
70
  testSuite.scene = m.nodeContext.global.testsScene
71
71
  testSuite.catchCrashes = m.config.catchCrashes
72
+ testSuite.throwOnFailedAssertion = m.config.throwOnFailedAssertion
72
73
  testSuite.scene.testText = `Running Suite ${i} of ${numSuites}: ${name}`
73
74
  m.runTestSuite(testSuite)
74
75
  if m.stats.hasFailures = true
@@ -138,6 +139,7 @@ namespace rooibos
138
139
  testSuite.top = m.nodeContext.top
139
140
  testSuite.scene = m.nodeContext.global.testsScene
140
141
  testSuite.catchCrashes = m.config.catchCrashes
142
+ testSuite.throwOnFailedAssertion = m.config.throwOnFailedAssertion
141
143
  m.nodeContext.testSuite = testSuite
142
144
  m.nodeTestName = nodeTestName
143
145
  m.nodeContext.testRunner = m
@@ -95,82 +95,79 @@ class RooibosAnnotation {
95
95
  (0, Diagnostics_1.diagnosticMultipleDescribeAnnotations)(file, a);
96
96
  }
97
97
  }
98
- for (let annotation of statement.annotations) {
99
- const annotationType = getAnnotationType(annotation.name);
100
- switch (annotationType) {
101
- case AnnotationType.NoEarlyExit:
102
- noEarlyExit = true;
103
- break;
104
- case AnnotationType.Async:
105
- async = true;
106
- //ensure the arg is an integer, if not set to 2000
107
- asyncTimeout = annotation.getArguments().length === 1 ? parseInt(annotation.getArguments()[0]) : -1;
108
- break;
109
- case AnnotationType.NoCatch:
110
- noCatch = true;
111
- break;
112
- case AnnotationType.Solo:
113
- isSolo = true;
114
- break;
115
- case AnnotationType.NodeTest:
116
- nodeName = annotation.getArguments()[0];
117
- break;
118
- case AnnotationType.Tags:
119
- tags = annotation.getArguments().map((a) => a.toString());
120
- break;
121
- case AnnotationType.Ignore:
122
- isIgnore = true;
123
- break;
124
- case AnnotationType.BeforeEach:
125
- case AnnotationType.AfterEach:
126
- case AnnotationType.Setup:
127
- case AnnotationType.TearDown:
128
- testAnnotation = new RooibosAnnotation(file, annotation, annotationType, annotation.name, annotation.name);
129
- break;
130
- case AnnotationType.Describe:
131
- case AnnotationType.TestSuite:
132
- const groupName = annotation.getArguments()[0];
133
- blockAnnotation = new RooibosAnnotation(file, annotation, annotationType, annotation.name, groupName, isIgnore, isSolo, null, nodeName, tags, noCatch, noEarlyExit);
134
- blockAnnotation.isAsync = async;
135
- blockAnnotation.asyncTimeout = asyncTimeout === -1 ? 60000 : asyncTimeout;
136
- nodeName = null;
137
- isSolo = false;
138
- isIgnore = false;
139
- async = false;
140
- asyncTimeout = -1;
141
- break;
142
- case AnnotationType.It:
143
- const testName = annotation.getArguments()[0];
144
- if (!testName || testName.trim() === '') {
145
- (0, Diagnostics_1.diagnosticNoTestNameDefined)(file, annotation);
146
- }
147
- let newAnnotation = new RooibosAnnotation(file, annotation, annotationType, annotation.name, testName, isIgnore, isSolo, undefined, undefined, tags, noCatch);
148
- newAnnotation.isAsync = async;
149
- newAnnotation.asyncTimeout = asyncTimeout === -1 ? 2000 : asyncTimeout;
150
- if (testAnnotation) {
151
- (0, Diagnostics_1.diagnosticMultipleTestOnFunctionDefined)(file, newAnnotation.annotation);
152
- }
153
- else {
154
- testAnnotation = newAnnotation;
155
- }
156
- isSolo = false;
157
- isIgnore = false;
158
- async = false;
159
- asyncTimeout = -1;
160
- break;
161
- case AnnotationType.Params:
162
- case AnnotationType.SoloParams:
163
- case AnnotationType.IgnoreParams:
164
- if (testAnnotation) {
165
- testAnnotation.parseParams(file, annotation, annotationType, noCatch);
166
- }
167
- else {
168
- //error
169
- }
170
- break;
171
- case AnnotationType.None:
172
- default:
173
- continue;
98
+ // Break up the annotations grouped by Describes
99
+ let blocks = [];
100
+ let currentBlock = [];
101
+ for (const annotation of statement.annotations) {
102
+ currentBlock.push(annotation);
103
+ if (getAnnotationType(annotation.name) === AnnotationType.Describe) {
104
+ blocks.push(currentBlock);
105
+ currentBlock = [];
106
+ }
107
+ }
108
+ // Make sure to push the last block as the last annotation likely wasn't a Describe
109
+ if (blocks[blocks.length - 1] !== currentBlock) {
110
+ blocks.push(currentBlock);
111
+ }
112
+ for (const annotationBlock of blocks) {
113
+ // eslint-disable-next-line no-inner-declarations
114
+ function getAnnotationsOfType(...names) {
115
+ return annotationBlock.filter(a => names.includes(a.name.toLowerCase()));
116
+ }
117
+ noEarlyExit = getAnnotationsOfType(AnnotationType.NoEarlyExit).length > 0;
118
+ noCatch = getAnnotationsOfType(AnnotationType.NoCatch).length > 0;
119
+ isSolo = getAnnotationsOfType(AnnotationType.Solo).length > 0;
120
+ isIgnore = getAnnotationsOfType(AnnotationType.Ignore).length > 0;
121
+ for (const annotation of getAnnotationsOfType(AnnotationType.Async)) {
122
+ async = true;
123
+ asyncTimeout = annotation.getArguments().length === 1 ? parseInt(annotation.getArguments()[0]) : -1;
124
+ }
125
+ for (const annotation of getAnnotationsOfType(AnnotationType.NodeTest)) {
126
+ nodeName = annotation.getArguments()[0];
127
+ }
128
+ for (const annotation of getAnnotationsOfType(AnnotationType.Tags)) {
129
+ tags = annotation.getArguments().map((a) => a === null || a === void 0 ? void 0 : a.toString());
130
+ }
131
+ for (const annotation of getAnnotationsOfType(AnnotationType.BeforeEach, AnnotationType.AfterEach, AnnotationType.Setup, AnnotationType.TearDown)) {
132
+ testAnnotation = new RooibosAnnotation(file, annotation, getAnnotationType(annotation.name), annotation.name, annotation.name);
133
+ }
134
+ for (const annotation of getAnnotationsOfType(AnnotationType.Describe, AnnotationType.TestSuite)) {
135
+ const groupName = annotation.getArguments()[0];
136
+ blockAnnotation = new RooibosAnnotation(file, annotation, getAnnotationType(annotation.name), annotation.name, groupName, isIgnore, isSolo, null, nodeName, tags, noCatch, noEarlyExit);
137
+ blockAnnotation.isAsync = async;
138
+ blockAnnotation.asyncTimeout = asyncTimeout === -1 ? 60000 : asyncTimeout;
139
+ nodeName = null;
140
+ isSolo = false;
141
+ isIgnore = false;
142
+ async = false;
143
+ asyncTimeout = -1;
144
+ }
145
+ for (const annotation of getAnnotationsOfType(AnnotationType.It)) {
146
+ const testName = annotation.getArguments()[0];
147
+ if (!testName || testName.trim() === '') {
148
+ (0, Diagnostics_1.diagnosticNoTestNameDefined)(file, annotation);
149
+ }
150
+ let newAnnotation = new RooibosAnnotation(file, annotation, getAnnotationType(annotation.name), annotation.name, testName, isIgnore, isSolo, undefined, undefined, tags, noCatch);
151
+ newAnnotation.isAsync = async;
152
+ newAnnotation.asyncTimeout = asyncTimeout === -1 ? 2000 : asyncTimeout;
153
+ if (testAnnotation) {
154
+ (0, Diagnostics_1.diagnosticMultipleTestOnFunctionDefined)(file, newAnnotation.annotation);
155
+ }
156
+ else {
157
+ testAnnotation = newAnnotation;
158
+ }
159
+ isSolo = false;
160
+ isIgnore = false;
161
+ async = false;
162
+ asyncTimeout = -1;
163
+ }
164
+ for (const annotation of getAnnotationsOfType(AnnotationType.Params, AnnotationType.SoloParams, AnnotationType.IgnoreParams)) {
165
+ if (testAnnotation) {
166
+ testAnnotation.parseParams(file, annotation, getAnnotationType(annotation.name), noCatch);
167
+ }
168
+ else {
169
+ //error
170
+ }
174
171
  }
175
172
  }
176
173
  }
@@ -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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"}