@noldova/context.testing 0.0.0-stage → 0.0.2

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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/api/index.d.ts +2015 -0
  3. package/api/index.js +42 -0
  4. package/api/index.js.map +1 -0
  5. package/decorators/category.js +23 -0
  6. package/decorators/category.js.map +1 -0
  7. package/decorators/skip.js +17 -0
  8. package/decorators/skip.js.map +1 -0
  9. package/decorators/test-class.js +12 -0
  10. package/decorators/test-class.js.map +1 -0
  11. package/decorators/test-data.js +23 -0
  12. package/decorators/test-data.js.map +1 -0
  13. package/decorators/test-method.js +12 -0
  14. package/decorators/test-method.js.map +1 -0
  15. package/enums/test-outcome.js +14 -0
  16. package/enums/test-outcome.js.map +1 -0
  17. package/enums/test-worker-message-kind.js +17 -0
  18. package/enums/test-worker-message-kind.js.map +1 -0
  19. package/enums/test-worker-value-kind.js +16 -0
  20. package/enums/test-worker-value-kind.js.map +1 -0
  21. package/exceptions/assert-failed.exception.js +19 -0
  22. package/exceptions/assert-failed.exception.js.map +1 -0
  23. package/exceptions/test-timeout.exception.js +20 -0
  24. package/exceptions/test-timeout.exception.js.map +1 -0
  25. package/exceptions/testing.exception.js +14 -0
  26. package/exceptions/testing.exception.js.map +1 -0
  27. package/interfaces/i-clock.js +9 -0
  28. package/interfaces/i-clock.js.map +1 -0
  29. package/interfaces/i-coverage-range.js +9 -0
  30. package/interfaces/i-coverage-range.js.map +1 -0
  31. package/interfaces/i-coverage-report.js +9 -0
  32. package/interfaces/i-coverage-report.js.map +1 -0
  33. package/interfaces/i-function-coverage.js +9 -0
  34. package/interfaces/i-function-coverage.js.map +1 -0
  35. package/interfaces/i-script-coverage.js +9 -0
  36. package/interfaces/i-script-coverage.js.map +1 -0
  37. package/interfaces/i-source-map-data.js +9 -0
  38. package/interfaces/i-source-map-data.js.map +1 -0
  39. package/interfaces/i-test-progress-listener.js +9 -0
  40. package/interfaces/i-test-progress-listener.js.map +1 -0
  41. package/models/coverage/block-coverage.js +21 -0
  42. package/models/coverage/block-coverage.js.map +1 -0
  43. package/models/coverage/coverage-project.js +23 -0
  44. package/models/coverage/coverage-project.js.map +1 -0
  45. package/models/coverage/coverage-range.js +18 -0
  46. package/models/coverage/coverage-range.js.map +1 -0
  47. package/models/coverage/coverage-result.js +28 -0
  48. package/models/coverage/coverage-result.js.map +1 -0
  49. package/models/coverage/file-coverage.js +45 -0
  50. package/models/coverage/file-coverage.js.map +1 -0
  51. package/models/coverage/function-coverage.js +14 -0
  52. package/models/coverage/function-coverage.js.map +1 -0
  53. package/models/coverage/line-range.js +25 -0
  54. package/models/coverage/line-range.js.map +1 -0
  55. package/models/coverage/mapped-source-line.js +22 -0
  56. package/models/coverage/mapped-source-line.js.map +1 -0
  57. package/models/coverage/source-map-segment.js +18 -0
  58. package/models/coverage/source-map-segment.js.map +1 -0
  59. package/models/decorators/test-data-entry.js +17 -0
  60. package/models/decorators/test-data-entry.js.map +1 -0
  61. package/models/decorators/test-marks.js +16 -0
  62. package/models/decorators/test-marks.js.map +1 -0
  63. package/models/discovery/discovered-test-class.js +36 -0
  64. package/models/discovery/discovered-test-class.js.map +1 -0
  65. package/models/discovery/discovered-test-method.js +42 -0
  66. package/models/discovery/discovered-test-method.js.map +1 -0
  67. package/models/discovery/test-project.js +20 -0
  68. package/models/discovery/test-project.js.map +1 -0
  69. package/models/execution/test-worker-message.js +76 -0
  70. package/models/execution/test-worker-message.js.map +1 -0
  71. package/models/execution/test-worker-record.js +75 -0
  72. package/models/execution/test-worker-record.js.map +1 -0
  73. package/models/execution/test-worker-result.js +45 -0
  74. package/models/execution/test-worker-result.js.map +1 -0
  75. package/models/execution/test-worker-run.js +31 -0
  76. package/models/execution/test-worker-run.js.map +1 -0
  77. package/models/execution/test-worker-start.js +33 -0
  78. package/models/execution/test-worker-start.js.map +1 -0
  79. package/models/execution/test-worker-text.js +17 -0
  80. package/models/execution/test-worker-text.js.map +1 -0
  81. package/models/execution/test-worker-value.js +104 -0
  82. package/models/execution/test-worker-value.js.map +1 -0
  83. package/models/reporting/coverage-report-row.js +22 -0
  84. package/models/reporting/coverage-report-row.js.map +1 -0
  85. package/models/results/test-class-result.js +29 -0
  86. package/models/results/test-class-result.js.map +1 -0
  87. package/models/results/test-method-result.js +59 -0
  88. package/models/results/test-method-result.js.map +1 -0
  89. package/models/results/test-run-result.js +34 -0
  90. package/models/results/test-run-result.js.map +1 -0
  91. package/models/results/test-run-totals.js +36 -0
  92. package/models/results/test-run-totals.js.map +1 -0
  93. package/models/results/test-selection.js +33 -0
  94. package/models/results/test-selection.js.map +1 -0
  95. package/package.json +25 -4
  96. package/resources.js +309 -0
  97. package/resources.js.map +1 -0
  98. package/services/assert.js +92 -0
  99. package/services/assert.js.map +1 -0
  100. package/services/coverage/coverage-analyzer.js +52 -0
  101. package/services/coverage/coverage-analyzer.js.map +1 -0
  102. package/services/coverage/coverage-report.reader.js +126 -0
  103. package/services/coverage/coverage-report.reader.js.map +1 -0
  104. package/services/coverage/file-coverage-analyzer.js +206 -0
  105. package/services/coverage/file-coverage-analyzer.js.map +1 -0
  106. package/services/coverage/source-map.js +135 -0
  107. package/services/coverage/source-map.js.map +1 -0
  108. package/services/discovery/test-discovery.js +198 -0
  109. package/services/discovery/test-discovery.js.map +1 -0
  110. package/services/execution/parallel-test-runner.js +24 -0
  111. package/services/execution/parallel-test-runner.js.map +1 -0
  112. package/services/execution/test-executor.js +116 -0
  113. package/services/execution/test-executor.js.map +1 -0
  114. package/services/execution/test-run-entry-point.js +89 -0
  115. package/services/execution/test-run-entry-point.js.map +1 -0
  116. package/services/execution/test-run-supervisor.js +251 -0
  117. package/services/execution/test-run-supervisor.js.map +1 -0
  118. package/services/execution/test-run-worker-entry-point.js +18 -0
  119. package/services/execution/test-run-worker-entry-point.js.map +1 -0
  120. package/services/execution/test-run-worker.js +116 -0
  121. package/services/execution/test-run-worker.js.map +1 -0
  122. package/services/execution/test-runner.js +58 -0
  123. package/services/execution/test-runner.js.map +1 -0
  124. package/services/reporting/coverage-report-writer.js +81 -0
  125. package/services/reporting/coverage-report-writer.js.map +1 -0
  126. package/services/reporting/test-console-reporter.js +72 -0
  127. package/services/reporting/test-console-reporter.js.map +1 -0
  128. package/services/reporting/test-report-writer.js +111 -0
  129. package/services/reporting/test-report-writer.js.map +1 -0
  130. package/services/timing/system-clock.js +26 -0
  131. package/services/timing/system-clock.js.map +1 -0
  132. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-worker-value.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/models/execution/test-worker-value.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export class CoverageReportRow {
9
+ fileCell;
10
+ sourceCell;
11
+ blocksCell;
12
+ color;
13
+ colorsFileCell;
14
+ constructor(fileCell, sourceCell, blocksCell, color, colorsFileCell) {
15
+ this.fileCell = fileCell;
16
+ this.sourceCell = sourceCell;
17
+ this.blocksCell = blocksCell;
18
+ this.color = color;
19
+ this.colorsFileCell = colorsFileCell;
20
+ }
21
+ }
22
+ //# sourceMappingURL=coverage-report-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-report-row.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/models/reporting/coverage-report-row.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,OAAO,iBAAiB;IACZ,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,UAAU,CAAS;IACnB,KAAK,CAAS;IACd,cAAc,CAAU;IAExC,YAAmB,QAAgB,EAAE,UAAkB,EAAE,UAAkB,EAAE,KAAa,EAAE,cAAuB;QACjH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentException } from "@noldova/context.exceptions";
10
+ import { Resources } from "../../resources.js";
11
+ export class TestClassResult {
12
+ packageName;
13
+ className;
14
+ filePath;
15
+ methodResults;
16
+ constructor(packageName, className, filePath, methodResults) {
17
+ ArgumentException.throwIfNullOrWhitespace(packageName, nameof(t => t.packageName));
18
+ ArgumentException.throwIfNullOrWhitespace(className, nameof(t => t.className));
19
+ ArgumentException.throwIfNullOrWhitespace(filePath, nameof(t => t.filePath));
20
+ ArgumentException.throwIfEmpty(methodResults, nameof(t => t.methodResults));
21
+ if (methodResults.some(t => t.packageName !== packageName || t.className !== className))
22
+ throw new ArgumentException(Resources.methodResultIdentityInvalid, nameof(t => t.methodResults));
23
+ this.packageName = packageName;
24
+ this.className = className;
25
+ this.filePath = filePath;
26
+ this.methodResults = [...methodResults];
27
+ }
28
+ }
29
+ //# sourceMappingURL=test-class-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-class-result.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/models/results/test-class-result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,eAAe;IACV,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,aAAa,CAA8B;IAE3D,YAAmB,WAAmB,EAAE,SAAiB,EAAE,QAAgB,EAAE,aAA0C;QACrH,iBAAiB,CAAC,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACpG,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAChG,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9F,iBAAiB,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAE7F,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;YACrF,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAEpH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IAC1C,CAAC;CACF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentException, ArgumentOutOfRangeException } from "@noldova/context.exceptions";
10
+ import { TestOutcome } from "../../enums/test-outcome.js";
11
+ import { Resources } from "../../resources.js";
12
+ export class TestMethodResult {
13
+ packageName;
14
+ className;
15
+ methodName;
16
+ testDataIndex;
17
+ testData;
18
+ outcome;
19
+ durationMilliseconds;
20
+ failure;
21
+ skipReason;
22
+ displayName;
23
+ constructor(packageName, className, methodName, testDataIndex, testData, outcome, durationMilliseconds, failure, skipReason) {
24
+ ArgumentException.throwIfNullOrWhitespace(packageName, nameof(t => t.packageName));
25
+ ArgumentException.throwIfNullOrWhitespace(className, nameof(t => t.className));
26
+ ArgumentException.throwIfNullOrWhitespace(methodName, nameof(t => t.methodName));
27
+ if (Object.isUndefined(testDataIndex)) {
28
+ if (testData.length > 0)
29
+ throw new ArgumentException(Resources.testDataIdentityInvalid, nameof(t => t.testData));
30
+ }
31
+ else {
32
+ if (!Number.isInteger(testDataIndex) || testDataIndex < 0)
33
+ throw new ArgumentOutOfRangeException(nameof(t => t.testDataIndex), testDataIndex, Resources.testDataIndexInvalid);
34
+ if (testData.length === 0)
35
+ throw new ArgumentException(Resources.testDataIdentityInvalid, nameof(t => t.testData));
36
+ }
37
+ if (!Number.isFinite(durationMilliseconds) || durationMilliseconds < 0)
38
+ throw new ArgumentOutOfRangeException(nameof(t => t.durationMilliseconds), durationMilliseconds, Resources.durationInvalid);
39
+ if (outcome !== TestOutcome.Failed && !Object.isUndefined(failure))
40
+ throw new ArgumentException(Resources.outcomeCannotCarryFailure(outcome), nameof(t => t.failure));
41
+ if (outcome === TestOutcome.Skipped)
42
+ ArgumentException.throwIfNullOrWhitespace(skipReason, nameof(t => t.skipReason));
43
+ else if (!Object.isUndefined(skipReason))
44
+ throw new ArgumentException(Resources.outcomeCannotCarrySkipReason(outcome), nameof(t => t.skipReason));
45
+ this.packageName = packageName;
46
+ this.className = className;
47
+ this.methodName = methodName;
48
+ this.testDataIndex = testDataIndex;
49
+ this.testData = [...testData];
50
+ this.outcome = outcome;
51
+ this.durationMilliseconds = durationMilliseconds;
52
+ this.failure = failure;
53
+ this.skipReason = skipReason;
54
+ this.displayName = Object.isUndefined(this.testDataIndex)
55
+ ? `${this.className}.${this.methodName}`
56
+ : `${this.className}.${this.methodName}[${this.testDataIndex}]`;
57
+ }
58
+ }
59
+ //# sourceMappingURL=test-method-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-method-result.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/models/results/test-method-result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { TestOutcome } from "../../enums/test-outcome.js";
9
+ import { TestRunTotals } from "./test-run-totals.js";
10
+ import { TestSelection } from "./test-selection.js";
11
+ export class TestRunResult extends TestRunTotals {
12
+ classResults;
13
+ selection;
14
+ constructor(classResults, selection) {
15
+ let durationMilliseconds = 0;
16
+ let passed = 0;
17
+ let failed = 0;
18
+ let skipped = 0;
19
+ for (const classResult of classResults)
20
+ for (const methodResult of classResult.methodResults) {
21
+ durationMilliseconds += methodResult.durationMilliseconds;
22
+ if (methodResult.outcome === TestOutcome.Passed)
23
+ passed++;
24
+ else if (methodResult.outcome === TestOutcome.Failed)
25
+ failed++;
26
+ else
27
+ skipped++;
28
+ }
29
+ super(passed, failed, skipped, durationMilliseconds);
30
+ this.classResults = [...classResults];
31
+ this.selection = selection ?? new TestSelection([], this.total, this.total);
32
+ }
33
+ }
34
+ //# sourceMappingURL=test-run-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run-result.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/models/results/test-run-result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9B,YAAY,CAA6B;IACzC,SAAS,CAAgB;IAEzC,YAAmB,YAAwC,EAAE,SAAyB;QACpF,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,WAAW,IAAI,YAAY;YACpC,KAAK,MAAM,YAAY,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;gBACrD,oBAAoB,IAAI,YAAY,CAAC,oBAAoB,CAAC;gBAC1D,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM;oBAC7C,MAAM,EAAE,CAAC;qBACN,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM;oBAClD,MAAM,EAAE,CAAC;;oBAET,OAAO,EAAE,CAAC;YACd,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentOutOfRangeException } from "@noldova/context.exceptions";
10
+ import { Resources } from "../../resources.js";
11
+ export class TestRunTotals {
12
+ durationMilliseconds;
13
+ passed;
14
+ failed;
15
+ skipped;
16
+ executed;
17
+ total;
18
+ constructor(passed, failed, skipped, durationMilliseconds) {
19
+ TestRunTotals.throwIfNotCount(passed, nameof(t => t.passed));
20
+ TestRunTotals.throwIfNotCount(failed, nameof(t => t.failed));
21
+ TestRunTotals.throwIfNotCount(skipped, nameof(t => t.skipped));
22
+ if (!Number.isFinite(durationMilliseconds) || durationMilliseconds < 0)
23
+ throw new ArgumentOutOfRangeException(nameof(t => t.durationMilliseconds), durationMilliseconds, Resources.durationInvalid);
24
+ this.durationMilliseconds = durationMilliseconds;
25
+ this.passed = passed;
26
+ this.failed = failed;
27
+ this.skipped = skipped;
28
+ this.executed = passed + failed;
29
+ this.total = this.executed + skipped;
30
+ }
31
+ static throwIfNotCount(count, parameterName) {
32
+ if (!Number.isInteger(count) || count < 0)
33
+ throw new ArgumentOutOfRangeException(parameterName, count, Resources.testCountInvalid);
34
+ }
35
+ }
36
+ //# sourceMappingURL=test-run-totals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run-totals.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/models/results/test-run-totals.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,aAAa;IACR,oBAAoB,CAAS;IAC7B,MAAM,CAAS;IACf,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,KAAK,CAAS;IAE9B,YAAmB,MAAc,EAAE,MAAc,EAAE,OAAe,EAAE,oBAA4B;QAC9F,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,GAAG,CAAC;YACpE,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;QAE7I,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACvC,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,KAAa,EAAE,aAAqB;QACjE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YACvC,MAAM,IAAI,2BAA2B,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5F,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { nameof } from "@noldova/context.core";
9
+ import { ArgumentOutOfRangeException } from "@noldova/context.exceptions";
10
+ import { Resources } from "../../resources.js";
11
+ export class TestSelection {
12
+ filters;
13
+ discovered;
14
+ selected;
15
+ unselected;
16
+ isFiltered;
17
+ constructor(filters, discovered, selected) {
18
+ TestSelection.throwIfNotCount(discovered, nameof(t => t.discovered));
19
+ TestSelection.throwIfNotCount(selected, nameof(t => t.selected));
20
+ if (selected > discovered)
21
+ throw new ArgumentOutOfRangeException(nameof(t => t.selected), selected, Resources.selectedCountInvalid);
22
+ this.filters = [...filters];
23
+ this.discovered = discovered;
24
+ this.selected = selected;
25
+ this.unselected = discovered - selected;
26
+ this.isFiltered = filters.length > 0;
27
+ }
28
+ static throwIfNotCount(count, parameterName) {
29
+ if (!Number.isInteger(count) || count < 0)
30
+ throw new ArgumentOutOfRangeException(parameterName, count, Resources.testCountInvalid);
31
+ }
32
+ }
33
+ //# sourceMappingURL=test-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-selection.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/models/results/test-selection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,aAAa;IACR,OAAO,CAAoB;IAC3B,UAAU,CAAS;IACnB,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,UAAU,CAAU;IAEpC,YAAmB,OAA0B,EAAE,UAAkB,EAAE,QAAgB;QACjF,aAAa,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACpF,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChF,IAAI,QAAQ,GAAG,UAAU;YACvB,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAE1H,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,KAAa,EAAE,aAAqB;QACjE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YACvC,MAAM,IAAI,2BAA2B,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5F,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,27 @@
1
1
  {
2
2
  "name": "@noldova/context.testing",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.0.2",
4
+ "type": "module",
5
+ "main": "api/index.js",
6
+ "types": "api/index.d.ts",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/noldova-com/context.git",
11
+ "directory": "src/noldova.context.testing"
12
+ },
13
+ "homepage": "https://github.com/noldova-com/context#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/noldova-com/context/issues"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public",
19
+ "registry": "https://registry.npmjs.org/"
20
+ },
21
+ "dependencies": {
22
+ "@noldova/context.collections": "0.0.2",
23
+ "@noldova/context.core": "0.0.2",
24
+ "@noldova/context.exceptions": "0.0.2",
25
+ "@noldova/context.text": "0.0.2"
26
+ }
27
+ }
package/resources.js ADDED
@@ -0,0 +1,309 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export class Resources {
9
+ static sourceMapBase64Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
10
+ static testClassSuffix = "Tests";
11
+ static testFileSuffix = ".test.js";
12
+ static filePathParameter = "filePath";
13
+ static packageNameParameter = "packageName";
14
+ static rootDirectoryParameter = "rootDirectory";
15
+ static coverageDirectoryParameter = "coverageDirectory";
16
+ static projectsParameter = "projects";
17
+ static mapDirectoryParameter = "mapDirectory";
18
+ static generatedLineParameter = "generatedLine";
19
+ static generatedColumnParameter = "generatedColumn";
20
+ static timeoutMillisecondsParameter = "timeoutMilliseconds";
21
+ static workerCountParameter = "workerCount";
22
+ static startLimitMillisecondsParameter = "startLimitMilliseconds";
23
+ static nameParameter = "name";
24
+ static reasonParameter = "reason";
25
+ static maximumTimeoutMilliseconds = 2_147_483_647;
26
+ static timeoutTooLarge = "The Node bootstrap timeout cannot exceed 2147483647 milliseconds.";
27
+ static testClassMarkInvalid = "A test-class mark must be an own data property containing true.";
28
+ static testMethodMarkInvalid = "A test-method mark must be an own data property containing true.";
29
+ static unprintableValue = "<unprintable value>";
30
+ static unhandledRejectionEvent = "unhandledRejection";
31
+ static messageEvent = "message";
32
+ static errorEvent = "error";
33
+ static exitEvent = "exit";
34
+ static testRunWorkerFileName = "./test-run-worker-entry-point.js";
35
+ static testWorkerGraceMilliseconds = 250;
36
+ static testWorkerStartMilliseconds = 5_000;
37
+ static testWorkerEndMilliseconds = 5_000;
38
+ static temporaryDirectoryPrefix = "noldova-test-run-";
39
+ static temporaryDirectoryVariables = ["TMPDIR", "TEMP", "TMP"];
40
+ static temporaryRemovalRetries = 5;
41
+ static minimumWorkerCount = 2;
42
+ static testWorkerDataInvalid = "The test worker exchanged data that is not a test worker message.";
43
+ static secondUnit = "s";
44
+ static minuteUnit = "min";
45
+ static hourUnit = "h";
46
+ static valueSeparator = ", ";
47
+ static parentDirectory = "..";
48
+ static categoryMarkDescription = "Noldova.Context.Testing.Category";
49
+ static testClassMarkDescription = "Noldova.Context.Testing.TestClass";
50
+ static testDataMarkDescription = "Noldova.Context.Testing.TestData";
51
+ static testMethodMarkDescription = "Noldova.Context.Testing.TestMethod";
52
+ static skipMarkDescription = "Noldova.Context.Testing.Skip";
53
+ static javascriptFileSuffix = ".js";
54
+ static coverageFileSuffix = ".json";
55
+ static fileUrlPrefix = "file://";
56
+ static reportLocation = "report";
57
+ static textEncoding = "utf8";
58
+ static blockCommentPattern = /\/\*[\s\S]*?\*\//gu;
59
+ static missingFileErrorCode = "ENOENT";
60
+ static sourceMapSuffix = ".map";
61
+ static sourceMapContinuationBit = 32;
62
+ static sourceMapLineSeparator = ";";
63
+ static sourceMapSegmentSeparator = ",";
64
+ static sourceMapValueMask = 31;
65
+ static sourceMapVersion = 3;
66
+ static sourceMapShapeInvalid = "A source map must contain a numeric version, string mappings, and string-array sources; optional sourceRoot must be a string and names a string array.";
67
+ static defaultTimeoutMilliseconds = 30_000;
68
+ static filtersVariable = "CONTEXT_TEST_FILTERS";
69
+ static skipTestDetailsVariable = "CONTEXT_SKIP_TEST_DETAILS";
70
+ static greenThreshold = 90;
71
+ static yellowThreshold = 60;
72
+ static terminalRed = "\u001b[31m";
73
+ static terminalGreen = "\u001b[32m";
74
+ static terminalYellow = "\u001b[33m";
75
+ static terminalReset = "\u001b[0m";
76
+ static terminalClearLine = "\r\u001b[2K";
77
+ static progressFrames = ["Running tests.", "Running tests..", "Running tests..."];
78
+ static progressIntervalMilliseconds = 300;
79
+ static centisecondsPerSecond = 100;
80
+ static durationDecimalPlaces = 2;
81
+ static millisecondsPerCentisecond = 10;
82
+ static millisecondsPerSecond = 1_000;
83
+ static minutesPerHour = 60;
84
+ static secondsPerMinute = 60;
85
+ static assertionFailed = "Assertion failed.";
86
+ static expectedTrue = "Expected the condition to be true.";
87
+ static expectedFalse = "Expected the condition to be false.";
88
+ static expectedEqual = "Expected the values to be equal.";
89
+ static expectedNotEqual = "Expected the values to be different.";
90
+ static expectedNull = "Expected the value to be null.";
91
+ static expectedNotNull = "Expected the value not to be null.";
92
+ static expectedUndefined = "Expected the value to be undefined.";
93
+ static expectedDefined = "Expected the value to be defined.";
94
+ static expectedInstanceOf = "Expected the value to be an instance of the specified type.";
95
+ static expectedThrow = "Expected the action to throw.";
96
+ static expectedThrowType = "Expected the action to throw the specified exception type.";
97
+ static expectedNoThrow = "Expected the action not to throw.";
98
+ static testTimedOut = "The test did not settle within the allotted timeout.";
99
+ static durationInvalid = "The duration must be a non-negative finite number of milliseconds.";
100
+ static testCountInvalid = "The test count must be a non-negative integer.";
101
+ static selectedCountInvalid = "The selected count cannot exceed the discovered count.";
102
+ static noTestMatchedFilters = "No test matched the filters; a filter that selects nothing fails the run.";
103
+ static methodResultIdentityInvalid = "Every method result must belong to this package and class.";
104
+ static lineInvalid = "The line must be a positive integer.";
105
+ static startLineInvalid = "The start line must be a positive integer.";
106
+ static endLineInvalid = "The end line must be an integer no smaller than the start line.";
107
+ static totalLengthInvalid = "The total length must be a non-negative integer.";
108
+ static uncoveredLengthInvalid = "The uncovered length must be a non-negative integer no larger than the total length.";
109
+ static uncoveredRangesInvalid = "The uncovered line ranges and the uncovered length must agree: both empty or both present.";
110
+ static nonExecutableBlocksInvalid = "A non-executable file cannot contain coverage blocks.";
111
+ static timeoutInvalid = "The timeout must be a positive integer of milliseconds.";
112
+ static workerCountInvalid = "The worker count must be a positive integer.";
113
+ static startLimitInvalid = "The start limit must be a positive integer of milliseconds.";
114
+ static testProjectPairRequired = "Each test project requires a package name and a root directory.";
115
+ static testFiltersInvalid = "The test filters must be a JSON array of strings.";
116
+ static categoryFilterPrefix = "category:";
117
+ static categoryMarkInvalid = "A category mark must carry a non-empty collection of non-whitespace string names.";
118
+ static skipReasonInvalid = "A skip mark must carry a non-whitespace string reason.";
119
+ static testDataMarkInvalid = "A test-data mark must carry a non-empty collection of test-data entries.";
120
+ static testDataIdentityInvalid = "Test data and its index must either both be present or both be absent.";
121
+ static testDataIndexInvalid = "The test-data index must be a non-negative integer.";
122
+ static coverageUniverseEmpty = "The coverage projects contain no production JavaScript files; the coverage universe is empty.";
123
+ static generatedLineInvalid = "The generated line must be a positive integer.";
124
+ static generatedColumnInvalid = "The generated column must be a non-negative integer.";
125
+ static sourceMapSegmentFieldCountInvalid = "A source map segment must contain one, four, or five fields.";
126
+ static sourceMapGeneratedColumnInvalid = "A source map generated column cannot be negative.";
127
+ static sourceMapGeneratedColumnOrderInvalid = "Source map segments must be ordered by generated column.";
128
+ static sourceMapOriginalPositionInvalid = "A source map segment refers to an invalid original position.";
129
+ static sourceMapNameIndexInvalid = "A source map segment refers to an invalid name index.";
130
+ static sourceMapIntegerUnsupported = "A source map mapping value exceeds the supported integer range.";
131
+ static sourceMapMappingTruncated = "A source map contains a truncated mapping value.";
132
+ static coverageFileHeading = "File";
133
+ static coverageHeading = "Coverage";
134
+ static coverageBlockSeparator = "/";
135
+ static blocksHeading = "Blocks";
136
+ static coverageNotApplicable = "-";
137
+ static coveragePercentSuffix = "%";
138
+ static directorySeparator = "/";
139
+ static windowsDirectorySeparator = "\\";
140
+ static emptyExport = "export {};";
141
+ static lineCommentPrefix = "//";
142
+ static lineFeed = "\n";
143
+ static reportIndent = " ";
144
+ static tableBottomLeft = "└";
145
+ static tableBottomMiddle = "┴";
146
+ static tableBottomRight = "┘";
147
+ static tableHorizontal = "─";
148
+ static tableMiddle = "┼";
149
+ static tableMiddleLeft = "├";
150
+ static tableMiddleRight = "┤";
151
+ static tableTopLeft = "┌";
152
+ static tableTopMiddle = "┬";
153
+ static tableTopRight = "┐";
154
+ static tableVertical = "│";
155
+ static testReportSeparator = "----------------------------------------";
156
+ static totalLabel = "Total:";
157
+ static timeLabel = "Time:";
158
+ static passedLabel = "Passed:";
159
+ static failedLabel = "Failed:";
160
+ static skippedLabel = "Skipped:";
161
+ static filtersLabel = "Filters:";
162
+ static discoveredLabel = "Discovered:";
163
+ static selectedLabel = "Selected:";
164
+ static unselectedLabel = "Unselected:";
165
+ static passedMark = "✓";
166
+ static failedMark = "✘";
167
+ static skippedMark = "○";
168
+ static millisecondUnit = "ms";
169
+ static expectedLabel = "expected:";
170
+ static actualLabel = "actual:";
171
+ static threwLabel = "threw:";
172
+ static outcomeCannotCarryFailure(outcome) {
173
+ return `A ${outcome} result cannot carry a failure.`;
174
+ }
175
+ static outcomeCannotCarrySkipReason(outcome) {
176
+ return `A ${outcome} result cannot carry a skip reason.`;
177
+ }
178
+ static testWorkerEnded(exitCode) {
179
+ return `The test worker ended with exit code ${exitCode} before the run finished.`;
180
+ }
181
+ static testWorkerEndedAfterItsLastClass(exitCode) {
182
+ return `The test worker ended with exit code ${exitCode} after its last class.`;
183
+ }
184
+ static testWorkerDidNotEnd(limitMilliseconds) {
185
+ return `The test worker did not end within ${limitMilliseconds} milliseconds after its last class, so its coverage is incomplete.`;
186
+ }
187
+ static testWorkerDiscoveryMismatch(classCount, methodCount, otherClassCount, otherMethodCount) {
188
+ return `The test workers discovered different tests: ${classCount} classes and ${methodCount} tests, then ${otherClassCount} classes and ` +
189
+ `${otherMethodCount} tests.`;
190
+ }
191
+ static testWorkerStalled(limitMilliseconds) {
192
+ return `The test worker started no test within ${limitMilliseconds} milliseconds.`;
193
+ }
194
+ static testWorkerStalledAfterImport(limitMilliseconds, filePath) {
195
+ return `The test worker imported no test file and started no test within ${limitMilliseconds} milliseconds after it imported ${filePath}.`;
196
+ }
197
+ static formatTestResourcesOpen(heading, resources) {
198
+ return `${heading} left ${resources.join(Resources.valueSeparator)} open after its tests finished; a test must close what it opens.`;
199
+ }
200
+ static formatTemporaryLeftovers(leftovers) {
201
+ return `The tests left ${leftovers.join(Resources.valueSeparator)} in the run's temporary folder; a test must remove what it creates.`;
202
+ }
203
+ static runResultCountMismatch(resultCount, selectedCount) {
204
+ return `The run produced ${resultCount} results for ${selectedCount} selected tests.`;
205
+ }
206
+ static methodNotCallable(methodName, className) {
207
+ return `Method "${methodName}" of "${className}" is not callable.`;
208
+ }
209
+ static unmarkedNamedTestClass(exportName, filePath) {
210
+ return `Export "${exportName}" in "${filePath}" is named like a test class but is not marked with @TestClass.`;
211
+ }
212
+ static markedTestClassWithoutRequiredName(exportName, filePath, requiredSuffix) {
213
+ return `Export "${exportName}" in "${filePath}" is marked with @TestClass but its name does not end in "${requiredSuffix}".`;
214
+ }
215
+ static testFileWithoutTestClass(filePath) {
216
+ return `Test file "${filePath}" yields no test class. Skip a suite deliberately with @Skip("reason"); delete the file when it is no longer needed.`;
217
+ }
218
+ static testClassWithoutPrototype(className, filePath) {
219
+ return `Test class "${className}" in "${filePath}" has no prototype.`;
220
+ }
221
+ static categoryWithoutTestClass(exportName, filePath) {
222
+ return `Export "${exportName}" in "${filePath}" carries @Category but is not marked with @TestClass.`;
223
+ }
224
+ static skipWithoutTestClass(exportName, filePath) {
225
+ return `Export "${exportName}" in "${filePath}" carries @Skip but is not marked with @TestClass.`;
226
+ }
227
+ static skipWithoutTestMethod(memberName, className, filePath) {
228
+ return `Method "${memberName}" of "${className}" in "${filePath}" carries @Skip but is not marked with @TestMethod.`;
229
+ }
230
+ static staticTestMetadataInvalid(memberName, className, filePath) {
231
+ return `Static method "${memberName}" of "${className}" in "${filePath}" cannot carry test metadata; mark instance methods only.`;
232
+ }
233
+ static accessorTestMetadataInvalid(memberName, className, filePath) {
234
+ return `Accessor "${memberName}" of "${className}" in "${filePath}" cannot carry test metadata; mark instance methods only.`;
235
+ }
236
+ static testClassWithoutTestMethod(className, filePath) {
237
+ return `Test class "${className}" in "${filePath}" declares no test method.`;
238
+ }
239
+ static testDataWithoutTestMethod(memberName, className, filePath) {
240
+ return `Method "${memberName}" of "${className}" in "${filePath}" carries @TestData but is not marked with @TestMethod.`;
241
+ }
242
+ static categoryWithoutTestMethod(memberName, className, filePath) {
243
+ return `Method "${memberName}" of "${className}" in "${filePath}" carries @Category but is not marked with @TestMethod.`;
244
+ }
245
+ static testMethodRequiresData(memberName, className, filePath) {
246
+ return `Test method "${memberName}" of "${className}" in "${filePath}" declares parameters but carries no @TestData.`;
247
+ }
248
+ static testDataParameterCountMismatch(memberName, className, filePath, expectedCount, actualCount) {
249
+ return `Test data for "${memberName}" of "${className}" in "${filePath}" supplies ${actualCount} values for ${expectedCount} parameters.`;
250
+ }
251
+ static symbolTestMetadataInvalid(className, filePath) {
252
+ return `A symbol-named member of "${className}" in "${filePath}" cannot carry test metadata; use a named instance method.`;
253
+ }
254
+ static generatorTestMethodInvalid(memberName, className, filePath) {
255
+ return `Test method "${memberName}" of "${className}" in "${filePath}" cannot be a generator; use a synchronous or asynchronous method.`;
256
+ }
257
+ static sourceMapVersionInvalid(version) {
258
+ return `A source map must use version ${version}.`;
259
+ }
260
+ static sourceMapCharacterInvalid(character) {
261
+ return `A source map contains the invalid mapping character "${character}".`;
262
+ }
263
+ static coverageReportMalformed(reportFilePath) {
264
+ return `The coverage report "${reportFilePath}" is malformed.`;
265
+ }
266
+ static coverageReportMalformedForReason(reportFilePath, reason) {
267
+ return `The coverage report "${reportFilePath}" is malformed: ${reason}.`;
268
+ }
269
+ static objectRequired(location) {
270
+ return `${location} must be an object`;
271
+ }
272
+ static stringRequired(location) {
273
+ return `${location} must be a string`;
274
+ }
275
+ static arrayRequired(location) {
276
+ return `${location} must be an array`;
277
+ }
278
+ static nonEmptyArrayRequired(location) {
279
+ return `${location} must be a non-empty array`;
280
+ }
281
+ static nonNegativeIntegerRequired(location) {
282
+ return `${location} must be a non-negative integer`;
283
+ }
284
+ static integerNoSmallerThanRequired(location, lowerBoundName) {
285
+ return `${location} must be an integer no smaller than ${lowerBoundName}`;
286
+ }
287
+ static sourceMapMalformed(filePath) {
288
+ return `The source map for "${filePath}" is malformed.`;
289
+ }
290
+ static coverageRangeBeyondFile(rangeEnd, fileLength) {
291
+ return `A coverage range ending at ${rangeEnd} exceeds the measured file length ${fileLength}.`;
292
+ }
293
+ static coverageFileOutsideProject(filePath, projectName) {
294
+ return `The coverage file "${filePath}" is outside the declared source or production directory of "${projectName}".`;
295
+ }
296
+ static coverageFileUrlInvalid(reportFilePath, url) {
297
+ return `The coverage report "${reportFilePath}" contains an invalid file URL "${url}".`;
298
+ }
299
+ static uncoveredLines(lineRange) {
300
+ return ` uncovered lines ${lineRange}`;
301
+ }
302
+ static overallCoverage(fullyCovered, executableCount) {
303
+ return `Overall — ${fullyCovered} of ${executableCount} executable files fully covered`;
304
+ }
305
+ static skippedTest(methodName, reason) {
306
+ return `${methodName} — skipped: ${reason}`;
307
+ }
308
+ }
309
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/noldova.context.testing/src/resources.ts"],"names":[],"mappings":"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"}