apex-mutation-testing 1.5.0 → 1.5.1-dev-105.23441367386-1
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.
- package/README.md +1 -1
- package/lib/adapter/apexClassRepository.js +1 -1
- package/lib/adapter/apexClassRepository.js.map +1 -1
- package/lib/adapter/apexTestRunner.js +1 -1
- package/lib/adapter/apexTestRunner.js.map +1 -1
- package/lib/mutator/constructorCallMutator.d.ts +1 -0
- package/lib/mutator/constructorCallMutator.js +14 -0
- package/lib/mutator/constructorCallMutator.js.map +1 -1
- package/lib/service/apexClassValidator.js +5 -3
- package/lib/service/apexClassValidator.js.map +1 -1
- package/npm-shrinkwrap.json +3434 -3164
- package/oclif.manifest.json +1 -1
- package/package.json +11 -11
package/README.md
CHANGED
|
@@ -373,7 +373,7 @@ EXAMPLES
|
|
|
373
373
|
$ sf apex mutation test run --apex-class MyClass --test-class MyClassTest --dry-run
|
|
374
374
|
```
|
|
375
375
|
|
|
376
|
-
_See code: [src/commands/apex/mutation/test/run.ts](https://github.com/scolladon/apex-mutation-testing/blob/v1.5.
|
|
376
|
+
_See code: [src/commands/apex/mutation/test/run.ts](https://github.com/scolladon/apex-mutation-testing/blob/v1.5.1-dev-105.23441367386-1/src/commands/apex/mutation/test/run.ts)_
|
|
377
377
|
<!-- commandsstop -->
|
|
378
378
|
|
|
379
379
|
## Changelog
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexClassRepository.js","sourceRoot":"","sources":["../../src/adapter/apexClassRepository.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,mBAAmB;IACC;IAA/B,YAA+B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAElD,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,OAAO,CACL,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO;aAC1B,OAAO,CAAC,WAAW,CAAC;aACpB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"apexClassRepository.js","sourceRoot":"","sources":["../../src/adapter/apexClassRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexTestRunner.js","sourceRoot":"","sources":["../../src/adapter/apexTestRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAG1E,MAAM,OAAO,cAAc;IACN,WAAW,CAAa;IAC3C,YAAY,UAAsB;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QACnD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAA;QAEvE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAA;QAEzD,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/B,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,yBAAyB,CAAC,EAAE;gBACzD,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC/D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAU,CAAC,CAAA;oBACjD,CAAC;oBACD,kBAAkB;yBACf,GAAG,CAAC,IAAI,CAAE;yBACV,GAAG,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAA;gBACtD,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO;YACnC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO;YACnC,kBAAkB;SACnB,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,SAAiB,EACjB,cAA2B,IAAI,GAAG,EAAU;QAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"apexTestRunner.js","sourceRoot":"","sources":["../../src/adapter/apexTestRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAG1E,MAAM,OAAO,cAAc;IACN,WAAW,CAAa;IAC3C,YAAY,UAAsB;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QACnD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAA;QAEvE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAA;QAEzD,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/B,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,yBAAyB,CAAC,EAAE;gBACzD,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC/D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAU,CAAC,CAAA;oBACjD,CAAC;oBACD,kBAAkB;yBACf,GAAG,CAAC,IAAI,CAAE;yBACV,GAAG,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAA;gBACtD,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO;YACnC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO;YACnC,kBAAkB;SACnB,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,SAAiB,EACjB,cAA2B,IAAI,GAAG,EAAU;QAE5C,OAAO,IAAI,CAAC,mBAAmB,CAAC;YAC9B,SAAS;YACT,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;SACrC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,aAA4D,EAC5D,mBAA4B,IAAI;QAEhC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAChD;YACE,KAAK,EAAE,CAAC,aAAa,CAAC;YACtB,SAAS,uDAA6B;YACtC,gBAAgB;YAChB,cAAc,EAAE,CAAC;SAClB,EACD,CAAC,gBAAgB,CAClB,CAAe,CAAA;IAClB,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TerminalNode } from 'antlr4ts/tree/index.js';
|
|
2
|
+
import { ThrowStatementContext } from 'apex-parser';
|
|
2
3
|
import { BaseListener } from './baseListener.js';
|
|
3
4
|
export class ConstructorCallMutator extends BaseListener {
|
|
4
5
|
// Handle new expressions: new Account() -> null
|
|
@@ -14,8 +15,21 @@ export class ConstructorCallMutator extends BaseListener {
|
|
|
14
15
|
if (newKeyword.text.toLowerCase() !== 'new') {
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
18
|
+
if (this.isInsideThrowStatement(ctx)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
17
21
|
// Replace the entire new expression with null
|
|
18
22
|
this.createMutationFromParserRuleContext(ctx, 'null');
|
|
19
23
|
}
|
|
24
|
+
isInsideThrowStatement(ctx) {
|
|
25
|
+
let current = ctx.parent;
|
|
26
|
+
while (current) {
|
|
27
|
+
if (current instanceof ThrowStatementContext) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
current = current.parent;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
20
34
|
}
|
|
21
35
|
//# sourceMappingURL=constructorCallMutator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constructorCallMutator.js","sourceRoot":"","sources":["../../src/mutator/constructorCallMutator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,gDAAgD;IAChD,kBAAkB,CAAC,GAAsB;QACvC,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAElC,8BAA8B;QAC9B,IAAI,CAAC,CAAC,UAAU,YAAY,YAAY,CAAC,EAAE,CAAC;YAC1C,OAAM;QACR,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YAC5C,OAAM;QACR,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"constructorCallMutator.js","sourceRoot":"","sources":["../../src/mutator/constructorCallMutator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,gDAAgD;IAChD,kBAAkB,CAAC,GAAsB;QACvC,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAElC,8BAA8B;QAC9B,IAAI,CAAC,CAAC,UAAU,YAAY,YAAY,CAAC,EAAE,CAAC;YAC1C,OAAM;QACR,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YAC5C,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,OAAM;QACR,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC;IAEO,sBAAsB,CAAC,GAAsB;QACnD,IAAI,OAAO,GAAkC,GAAG,CAAC,MAEpC,CAAA;QACb,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,OAAO,YAAY,qBAAqB,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,MAAuC,CAAA;QAC3D,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}
|
|
@@ -26,9 +26,11 @@ export class ApexClassValidator {
|
|
|
26
26
|
return errors;
|
|
27
27
|
}
|
|
28
28
|
async validate({ apexClassName, apexTestClassName, }) {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const [apexErrors, testErrors] = await Promise.all([
|
|
30
|
+
this.validateApexClass(apexClassName),
|
|
31
|
+
this.validateApexTestClass(apexTestClassName),
|
|
32
|
+
]);
|
|
33
|
+
const errors = [...apexErrors, ...testErrors];
|
|
32
34
|
if (errors.length > 0) {
|
|
33
35
|
throw new Error(errors.join('\n'));
|
|
34
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexClassValidator.js","sourceRoot":"","sources":["../../src/service/apexClassValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAIvE,MAAM,OAAO,kBAAkB;IAEE;IADd,mBAAmB,CAAqB;IACzD,YAA+B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACrE,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,aAAqB;QACnD,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,cAAc,aAAa,YAAY,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,iBAAyB;QAC3D,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,aAAa,GAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACnE,iBAAiB,CAClB,CAAyB,CAAA;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,YAAY,CAAC,CAAA;QAC/D,CAAC;aAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,CACT,mBAAmB,iBAAiB,gCAAgC,CACrE,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,EACpB,aAAa,EACb,iBAAiB,GACK;QACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"apexClassValidator.js","sourceRoot":"","sources":["../../src/service/apexClassValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAIvE,MAAM,OAAO,kBAAkB;IAEE;IADd,mBAAmB,CAAqB;IACzD,YAA+B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACrE,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,aAAqB;QACnD,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,cAAc,aAAa,YAAY,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,iBAAyB;QAC3D,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,aAAa,GAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACnE,iBAAiB,CAClB,CAAyB,CAAA;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,YAAY,CAAC,CAAA;QAC/D,CAAC;aAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,CACT,mBAAmB,iBAAiB,gCAAgC,CACrE,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,EACpB,aAAa,EACb,iBAAiB,GACK;QACtB,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;SAC9C,CAAC,CAAA;QACF,MAAM,MAAM,GAAa,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,CAAA;QACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;CACF"}
|