apex-mutation-testing 1.4.0 → 1.5.0-dev-99.22440267013-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 +28 -3
- package/lib/commands/apex/mutation/test/run.d.ts +2 -1
- package/lib/commands/apex/mutation/test/run.js +16 -10
- package/lib/commands/apex/mutation/test/run.js.map +1 -1
- package/lib/mutator/astUtils.d.ts +2 -1
- package/lib/reporter/HTMLReporter.js +7 -3
- package/lib/reporter/HTMLReporter.js.map +1 -1
- package/lib/service/mutationTestingService.d.ts +2 -1
- package/lib/service/mutationTestingService.js +71 -7
- package/lib/service/mutationTestingService.js.map +1 -1
- package/lib/service/timeUtils.d.ts +5 -0
- package/lib/service/timeUtils.js +21 -0
- package/lib/service/timeUtils.js.map +1 -0
- package/lib/type/ApexMutationParameter.d.ts +1 -0
- package/lib/type/ApexMutationTestResult.d.ts +1 -1
- package/messages/apex.mutation.test.run.md +24 -0
- package/npm-shrinkwrap.json +6 -6
- package/oclif.manifest.json +10 -2
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -70,6 +70,26 @@ Before running mutation testing:
|
|
|
70
70
|
|
|
71
71
|
Remember, mutation testing complements but doesn't replace good test coverage. It helps identify weaknesses in your existing tests, but only for the code they already cover.
|
|
72
72
|
|
|
73
|
+
### Dry Run
|
|
74
|
+
|
|
75
|
+
Before running the full mutation testing process, you can preview the mutations that would be generated using the `--dry-run` flag:
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
sf apex mutation test run --apex-class MyClass --test-class MyClassTest --dry-run
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This runs your test class once to collect coverage data, then lists all mutations that would be generated without deploying any of them. Use it to estimate the scope of mutation testing for your class and verify that relevant mutations are being generated for your code patterns.
|
|
82
|
+
|
|
83
|
+
In both normal and dry-run modes, the plugin displays a time estimate before starting the mutation loop, showing the estimated total duration along with a per-mutant breakdown of deployment and test execution time.
|
|
84
|
+
|
|
85
|
+
### Compilability Verification
|
|
86
|
+
|
|
87
|
+
Before running mutation tests, the plugin deploys both the target class and its test class back to the org to verify they compile correctly. This step is necessary because Salesforce only validates compilation of the element being deployed, not its dependents. A class can exist on the org in a broken state if one of its dependencies was modified after it was last deployed.
|
|
88
|
+
|
|
89
|
+
Without this check, all mutants would result in `CompileError`, producing a misleading 100% mutation score. If either class fails to compile, the process stops early with a clear error message showing the compilation details.
|
|
90
|
+
|
|
91
|
+
This verification also serves as a baseline to measure deployment time, which is used to estimate the total mutation testing duration.
|
|
92
|
+
|
|
73
93
|
### Supported Mutation Operators
|
|
74
94
|
|
|
75
95
|
The plugin currently supports the following mutation operators. If your code doesn't contain any of these patterns on covered lines, no mutations will be generated:
|
|
@@ -144,11 +164,12 @@ Evaluate test coverage quality by injecting mutations and measuring test detecti
|
|
|
144
164
|
|
|
145
165
|
```
|
|
146
166
|
USAGE
|
|
147
|
-
$ sf apex mutation test run -c <value> -t <value> -o <value> [--json] [--flags-dir <value>] [-r <value>] [
|
|
148
|
-
<value>]
|
|
167
|
+
$ sf apex mutation test run -c <value> -t <value> -o <value> [--json] [--flags-dir <value>] [-r <value>] [-d]
|
|
168
|
+
[--api-version <value>]
|
|
149
169
|
|
|
150
170
|
FLAGS
|
|
151
171
|
-c, --apex-class=<value> (required) Apex class name to mutate
|
|
172
|
+
-d, --dry-run Preview mutations without deploying or running tests
|
|
152
173
|
-o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
|
|
153
174
|
configuration variable is already set.
|
|
154
175
|
-r, --report-dir=<value> [default: mutations] Path to the directory where mutation test reports will be generated
|
|
@@ -172,9 +193,13 @@ EXAMPLES
|
|
|
172
193
|
Run mutation testing on a class with its test file:
|
|
173
194
|
|
|
174
195
|
$ sf apex mutation test run --apex-class MyClass --test-class MyClassTest
|
|
196
|
+
|
|
197
|
+
Preview mutations without running them:
|
|
198
|
+
|
|
199
|
+
$ sf apex mutation test run --apex-class MyClass --test-class MyClassTest --dry-run
|
|
175
200
|
```
|
|
176
201
|
|
|
177
|
-
_See code: [src/commands/apex/mutation/test/run.ts](https://github.com/scolladon/apex-mutation-testing/blob/v1.
|
|
202
|
+
_See code: [src/commands/apex/mutation/test/run.ts](https://github.com/scolladon/apex-mutation-testing/blob/v1.5.0-dev-99.22440267013-1/src/commands/apex/mutation/test/run.ts)_
|
|
178
203
|
<!-- commandsstop -->
|
|
179
204
|
|
|
180
205
|
## Backlog
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
2
|
export type ApexMutationTestResult = {
|
|
3
|
-
score: number;
|
|
3
|
+
score: number | null;
|
|
4
4
|
};
|
|
5
5
|
export default class ApexMutationTest extends SfCommand<ApexMutationTestResult> {
|
|
6
6
|
static readonly summary: string;
|
|
@@ -10,6 +10,7 @@ export default class ApexMutationTest extends SfCommand<ApexMutationTestResult>
|
|
|
10
10
|
'apex-class': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
'test-class': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
'report-dir': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
14
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
15
|
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
16
|
};
|
|
@@ -26,22 +26,26 @@ export default class ApexMutationTest extends SfCommand {
|
|
|
26
26
|
exists: true,
|
|
27
27
|
default: 'mutations',
|
|
28
28
|
}),
|
|
29
|
+
'dry-run': Flags.boolean({
|
|
30
|
+
char: 'd',
|
|
31
|
+
summary: messages.getMessage('flags.dry-run.summary'),
|
|
32
|
+
default: false,
|
|
33
|
+
}),
|
|
29
34
|
'target-org': Flags.requiredOrg(),
|
|
30
35
|
'api-version': Flags.orgApiVersion(),
|
|
31
36
|
};
|
|
32
37
|
async run() {
|
|
33
|
-
// parse the provided flags
|
|
34
38
|
const { flags } = await this.parse(ApexMutationTest);
|
|
35
39
|
const connection = flags['target-org'].getConnection(flags['api-version']);
|
|
36
40
|
const parameters = {
|
|
37
41
|
apexClassName: flags['apex-class'],
|
|
38
42
|
apexTestClassName: flags['test-class'],
|
|
39
43
|
reportDir: flags['report-dir'],
|
|
44
|
+
dryRun: flags['dry-run'],
|
|
40
45
|
};
|
|
41
|
-
this.log(messages.getMessage('
|
|
42
|
-
|
|
43
|
-
parameters.apexTestClassName
|
|
44
|
-
]));
|
|
46
|
+
this.log(messages.getMessage(flags['dry-run']
|
|
47
|
+
? 'info.DryRunCommandIsRunning'
|
|
48
|
+
: 'info.CommandIsRunning', [parameters.apexClassName, parameters.apexTestClassName]));
|
|
45
49
|
const apexClassValidator = new ApexClassValidator(connection);
|
|
46
50
|
await apexClassValidator.validate(parameters);
|
|
47
51
|
const mutationTestingService = new MutationTestingService(this.progress, this.spinner, connection, parameters, messages);
|
|
@@ -49,12 +53,14 @@ export default class ApexMutationTest extends SfCommand {
|
|
|
49
53
|
const htmlReporter = new ApexMutationHTMLReporter();
|
|
50
54
|
await htmlReporter.generateReport(mutationResult, parameters.reportDir);
|
|
51
55
|
this.log(messages.getMessage('info.reportGenerated', [parameters.reportDir]));
|
|
52
|
-
const score =
|
|
53
|
-
|
|
56
|
+
const score = flags['dry-run']
|
|
57
|
+
? null
|
|
58
|
+
: mutationTestingService.calculateScore(mutationResult);
|
|
59
|
+
if (score !== null) {
|
|
60
|
+
this.log(messages.getMessage('info.CommandSuccess', [score]));
|
|
61
|
+
}
|
|
54
62
|
this.info(messages.getMessage('info.EncourageSponsorship'));
|
|
55
|
-
return {
|
|
56
|
-
score,
|
|
57
|
-
};
|
|
63
|
+
return { score };
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
//# sourceMappingURL=run.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../src/commands/apex/mutation/test/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAA;AAGtF,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CACpC,uBAAuB,EACvB,wBAAwB,CACzB,CAAA;AAMD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAiC;IACtE,MAAM,CAAmB,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACjE,MAAM,CAAmB,WAAW,GACzC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IAC7B,MAAM,CAAmB,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;IAEpE,MAAM,CAAmB,KAAK,GAAG;QACtC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;YAC5B,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,WAAW;SACrB,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;KACrC,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../src/commands/apex/mutation/test/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { ParserRuleContext } from 'antlr4ts';
|
|
|
2
2
|
import { DotMethodCallContext } from 'apex-parser';
|
|
3
3
|
import type { ApexType } from '../type/ApexMethod.js';
|
|
4
4
|
import type { ResolvedType, TypeRegistry } from '../type/TypeRegistry.js';
|
|
5
|
-
|
|
5
|
+
interface DotMethodCallInfo {
|
|
6
6
|
dotMethodCall: DotMethodCallContext;
|
|
7
7
|
methodName: string;
|
|
8
8
|
enclosingMethod: string;
|
|
@@ -12,3 +12,4 @@ export declare function getEnclosingMethodName(ctx: ParserRuleContext): string |
|
|
|
12
12
|
export declare function resolveDotMethodCall(ctx: ParserRuleContext, typeRegistry: TypeRegistry): DotMethodCallInfo | null;
|
|
13
13
|
export declare function extractArguments(methodCallCtx: ParserRuleContext): ParserRuleContext[];
|
|
14
14
|
export declare function resolveExpressionApexType(text: string, enclosingMethod: string, typeRegistry: TypeRegistry): ApexType | null;
|
|
15
|
+
export {};
|
|
@@ -17,7 +17,11 @@ export class ApexMutationHTMLReporter {
|
|
|
17
17
|
},
|
|
18
18
|
files: {},
|
|
19
19
|
};
|
|
20
|
-
const
|
|
20
|
+
const untestedStatuses = new Set([
|
|
21
|
+
'CompileError',
|
|
22
|
+
'RuntimeError',
|
|
23
|
+
'Pending',
|
|
24
|
+
]);
|
|
21
25
|
const fileResult = {
|
|
22
26
|
language: 'java',
|
|
23
27
|
source: apexMutationTestResult.sourceFileContent,
|
|
@@ -28,9 +32,9 @@ export class ApexMutationHTMLReporter {
|
|
|
28
32
|
status: mutant.status,
|
|
29
33
|
statusReason: mutant.statusReason,
|
|
30
34
|
static: false,
|
|
31
|
-
coveredBy:
|
|
35
|
+
coveredBy: untestedStatuses.has(mutant.status) ? undefined : ['0'],
|
|
32
36
|
killedBy: mutant.status === 'Killed' ? ['0'] : undefined,
|
|
33
|
-
testsCompleted:
|
|
37
|
+
testsCompleted: untestedStatuses.has(mutant.status) ? 0 : 1,
|
|
34
38
|
location: {
|
|
35
39
|
start: {
|
|
36
40
|
line: mutant.location.start.line,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HTMLReporter.js","sourceRoot":"","sources":["../../src/reporter/HTMLReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAG5B,MAAM,OAAO,wBAAwB;IACnC,KAAK,CAAC,cAAc,CAClB,sBAA8C,EAC9C,YAAoB,SAAS;QAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAA;QACpE,iEAAiE;QACjE,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAA;IAClE,CAAC;IAEO,oBAAoB,CAAC,sBAA8C;QACzE,MAAM,kBAAkB,GAAG;YACzB,aAAa,EAAE,OAAO;YACtB,MAAM,EAAE,EAAE,EAAE,sCAAsC;YAClD,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,EAAE;aACR;YACD,KAAK,EAAE,EAAE;SACV,CAAA;QAED,MAAM,
|
|
1
|
+
{"version":3,"file":"HTMLReporter.js","sourceRoot":"","sources":["../../src/reporter/HTMLReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAG5B,MAAM,OAAO,wBAAwB;IACnC,KAAK,CAAC,cAAc,CAClB,sBAA8C,EAC9C,YAAoB,SAAS;QAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAA;QACpE,iEAAiE;QACjE,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAA;IAClE,CAAC;IAEO,oBAAoB,CAAC,sBAA8C;QACzE,MAAM,kBAAkB,GAAG;YACzB,aAAa,EAAE,OAAO;YACtB,MAAM,EAAE,EAAE,EAAE,sCAAsC;YAClD,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,EAAE;aACR;YACD,KAAK,EAAE,EAAE;SACV,CAAA;QAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;YAC/B,cAAc;YACd,cAAc;YACd,SAAS;SACV,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,sBAAsB,CAAC,iBAAiB;YAChD,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrD,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBACxD,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,QAAQ,EAAE;oBACR,KAAK,EAAE;wBACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;wBAChC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;qBACrC;oBACD,GAAG,EAAE;wBACH,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI;wBAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;qBACnC;iBACF;aACF,CAAC,CAAC;SACJ,CAAA;QAED,kBAAkB,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,UAAU,MAAM,CAAC;YAClE,UAAU,CAAA;QAEZ,OAAO,kBAAkB,CAAA;IAC3B,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE;IAChC,OAAO;;;;;;;;;;;;;qBAaY,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;;UAGjD,CAAA;AACV,CAAC,CAAA;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACpC,OAAO,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -9,8 +9,9 @@ export declare class MutationTestingService {
|
|
|
9
9
|
protected readonly messages: Messages<string>;
|
|
10
10
|
protected readonly apexClassName: string;
|
|
11
11
|
protected readonly apexTestClassName: string;
|
|
12
|
+
protected readonly dryRun: boolean;
|
|
12
13
|
private apexClassContent;
|
|
13
|
-
constructor(progress: Progress, spinner: Spinner, connection: Connection, { apexClassName, apexTestClassName }: ApexMutationParameter, messages: Messages<string>);
|
|
14
|
+
constructor(progress: Progress, spinner: Spinner, connection: Connection, { apexClassName, apexTestClassName, dryRun }: ApexMutationParameter, messages: Messages<string>);
|
|
14
15
|
process(): Promise<ApexMutationTestResult>;
|
|
15
16
|
calculateScore(mutationResult: ApexMutationTestResult): number;
|
|
16
17
|
private buildMutantResult;
|
|
@@ -2,6 +2,7 @@ import { ApexClassRepository } from '../adapter/apexClassRepository.js';
|
|
|
2
2
|
import { ApexTestRunner } from '../adapter/apexTestRunner.js';
|
|
3
3
|
import { SObjectDescribeRepository } from '../adapter/sObjectDescribeRepository.js';
|
|
4
4
|
import { MutantGenerator } from './mutantGenerator.js';
|
|
5
|
+
import { formatDuration, timeExecution } from './timeUtils.js';
|
|
5
6
|
import { TypeDiscoverer } from './typeDiscoverer.js';
|
|
6
7
|
import { ApexClassTypeMatcher, SObjectTypeMatcher } from './typeMatcher.js';
|
|
7
8
|
const errorStrategies = [
|
|
@@ -36,14 +37,16 @@ export class MutationTestingService {
|
|
|
36
37
|
messages;
|
|
37
38
|
apexClassName;
|
|
38
39
|
apexTestClassName;
|
|
40
|
+
dryRun;
|
|
39
41
|
apexClassContent = '';
|
|
40
|
-
constructor(progress, spinner, connection, { apexClassName, apexTestClassName }, messages) {
|
|
42
|
+
constructor(progress, spinner, connection, { apexClassName, apexTestClassName, dryRun }, messages) {
|
|
41
43
|
this.progress = progress;
|
|
42
44
|
this.spinner = spinner;
|
|
43
45
|
this.connection = connection;
|
|
44
46
|
this.messages = messages;
|
|
45
47
|
this.apexClassName = apexClassName;
|
|
46
48
|
this.apexTestClassName = apexTestClassName;
|
|
49
|
+
this.dryRun = dryRun ?? false;
|
|
47
50
|
}
|
|
48
51
|
async process() {
|
|
49
52
|
const apexClassRepository = new ApexClassRepository(this.connection);
|
|
@@ -75,10 +78,40 @@ export class MutationTestingService {
|
|
|
75
78
|
.withMatcher(sObjectMatcher);
|
|
76
79
|
const typeRegistry = await typeDiscoverer.analyze(apexClass.Body);
|
|
77
80
|
this.spinner.stop('Done');
|
|
78
|
-
this.spinner.start(`
|
|
81
|
+
this.spinner.start(`Verifying "${this.apexClassName}" apex class compilability`, undefined, { stdout: true });
|
|
82
|
+
let deployTime = 0;
|
|
83
|
+
try {
|
|
84
|
+
const { durationMs } = await timeExecution(() => apexClassRepository.update(apexClass));
|
|
85
|
+
deployTime = durationMs;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
this.spinner.stop();
|
|
89
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
90
|
+
throw new Error(this.messages.getMessage('error.compilabilityCheckFailed', [
|
|
91
|
+
this.apexClassName,
|
|
92
|
+
errorMessage,
|
|
93
|
+
]));
|
|
94
|
+
}
|
|
95
|
+
this.spinner.stop('Done');
|
|
96
|
+
this.spinner.start(`Verifying "${this.apexTestClassName}" apex test class compilability`, undefined, { stdout: true });
|
|
97
|
+
try {
|
|
98
|
+
const apexTestClass = (await apexClassRepository.read(this.apexTestClassName));
|
|
99
|
+
await apexClassRepository.update(apexTestClass);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
this.spinner.stop();
|
|
103
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
104
|
+
throw new Error(this.messages.getMessage('error.compilabilityCheckFailed', [
|
|
105
|
+
this.apexTestClassName,
|
|
106
|
+
errorMessage,
|
|
107
|
+
]));
|
|
108
|
+
}
|
|
109
|
+
this.spinner.stop('Done');
|
|
110
|
+
this.spinner.start(`Executing "${this.apexTestClassName}" tests to get coverage`, undefined, {
|
|
79
111
|
stdout: true,
|
|
80
112
|
});
|
|
81
|
-
const {
|
|
113
|
+
const { result: baselineResult, durationMs: testTime } = await timeExecution(() => apexTestRunner.getTestMethodsPerLines(this.apexTestClassName));
|
|
114
|
+
const { outcome, testsRan, failing, testMethodsPerLine } = baselineResult;
|
|
82
115
|
if (outcome !== 'Passed') {
|
|
83
116
|
this.spinner.stop();
|
|
84
117
|
throw new Error(`Original tests failed! Cannot proceed with mutation testing.\n` +
|
|
@@ -112,18 +145,44 @@ export class MutationTestingService {
|
|
|
112
145
|
coveredLines.size,
|
|
113
146
|
]));
|
|
114
147
|
}
|
|
148
|
+
this.spinner.stop(`${mutations.length} mutations generated`);
|
|
149
|
+
const totalEstimateMs = (deployTime + testTime) * mutations.length;
|
|
150
|
+
this.spinner.start(this.messages.getMessage('info.timeEstimate', [
|
|
151
|
+
formatDuration(totalEstimateMs),
|
|
152
|
+
]), undefined, { stdout: true });
|
|
153
|
+
this.spinner.stop(this.messages.getMessage('info.timeEstimateBreakdown', [
|
|
154
|
+
formatDuration(deployTime),
|
|
155
|
+
formatDuration(testTime),
|
|
156
|
+
String(mutations.length),
|
|
157
|
+
]));
|
|
158
|
+
if (this.dryRun) {
|
|
159
|
+
return {
|
|
160
|
+
sourceFile: this.apexClassName,
|
|
161
|
+
sourceFileContent: apexClass.Body,
|
|
162
|
+
testFile: this.apexTestClassName,
|
|
163
|
+
mutants: mutations.map(mutation => ({
|
|
164
|
+
id: `${this.apexClassName}-${mutation.target.startToken.line}-${mutation.target.startToken.charPositionInLine}-${mutation.target.startToken.tokenIndex}-${Date.now()}`,
|
|
165
|
+
mutatorName: mutation.mutationName,
|
|
166
|
+
status: 'Pending',
|
|
167
|
+
location: this.calculateMutationPosition(mutation, apexClass.Body),
|
|
168
|
+
replacement: mutation.replacement,
|
|
169
|
+
original: this.extractMutationOriginalText(mutation),
|
|
170
|
+
})),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
115
173
|
const mutationResults = {
|
|
116
174
|
sourceFile: this.apexClassName,
|
|
117
175
|
sourceFileContent: apexClass.Body,
|
|
118
176
|
testFile: this.apexTestClassName,
|
|
119
177
|
mutants: [],
|
|
120
178
|
};
|
|
121
|
-
this.spinner.stop(`${mutations.length} mutations generated`);
|
|
122
179
|
this.progress.start(mutations.length, { info: 'Starting mutation testing' }, {
|
|
123
180
|
title: 'MUTATION TESTING PROGRESS',
|
|
124
181
|
format: '%s | {bar} | {value}/{total} {info}',
|
|
125
182
|
});
|
|
126
183
|
let mutationCount = 0;
|
|
184
|
+
let remainingText = '';
|
|
185
|
+
const loopStartTime = performance.now();
|
|
127
186
|
for (const mutation of mutations) {
|
|
128
187
|
const mutatedVersion = mutantGenerator.mutate(mutation);
|
|
129
188
|
const targetInfo = {
|
|
@@ -133,7 +192,7 @@ export class MutationTestingService {
|
|
|
133
192
|
text: mutation.target.text,
|
|
134
193
|
};
|
|
135
194
|
this.progress.update(mutationCount, {
|
|
136
|
-
info:
|
|
195
|
+
info: `${remainingText}Deploying "${mutation.replacement}" mutation at line ${targetInfo.line}`,
|
|
137
196
|
});
|
|
138
197
|
let progressMessage;
|
|
139
198
|
try {
|
|
@@ -143,7 +202,7 @@ export class MutationTestingService {
|
|
|
143
202
|
});
|
|
144
203
|
const testMethods = testMethodsPerLine.get(targetInfo.line);
|
|
145
204
|
this.progress.update(mutationCount, {
|
|
146
|
-
info:
|
|
205
|
+
info: `${remainingText}Running ${testMethods.size} tests methods for "${mutation.replacement}" mutation at line ${targetInfo.line}`,
|
|
147
206
|
});
|
|
148
207
|
const testResult = await apexTestRunner.runTestMethods(this.apexTestClassName, testMethods);
|
|
149
208
|
const mutantResult = this.buildMutantResult(mutation, testResult, targetInfo);
|
|
@@ -170,8 +229,13 @@ export class MutationTestingService {
|
|
|
170
229
|
progressMessage = classification.progressMessage;
|
|
171
230
|
}
|
|
172
231
|
++mutationCount;
|
|
232
|
+
const elapsed = performance.now() - loopStartTime;
|
|
233
|
+
const avgPerMutant = elapsed / mutationCount;
|
|
234
|
+
const remainingMutants = mutations.length - mutationCount;
|
|
235
|
+
const remainingMs = avgPerMutant * remainingMutants;
|
|
236
|
+
remainingText = `Remaining: ${formatDuration(remainingMs)} | `;
|
|
173
237
|
this.progress.update(mutationCount, {
|
|
174
|
-
info: progressMessage
|
|
238
|
+
info: `${remainingText}${progressMessage}`,
|
|
175
239
|
});
|
|
176
240
|
}
|
|
177
241
|
this.progress.finish({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutationTestingService.js","sourceRoot":"","sources":["../../src/service/mutationTestingService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mutationTestingService.js","sourceRoot":"","sources":["../../src/service/mutationTestingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const timeExecution = async (fn) => {
|
|
2
|
+
const start = performance.now();
|
|
3
|
+
const result = await fn();
|
|
4
|
+
const durationMs = performance.now() - start;
|
|
5
|
+
return { result, durationMs };
|
|
6
|
+
};
|
|
7
|
+
export const formatDuration = (ms) => {
|
|
8
|
+
const totalSeconds = Math.floor(ms / 1000);
|
|
9
|
+
const seconds = totalSeconds % 60;
|
|
10
|
+
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
11
|
+
const minutes = totalMinutes % 60;
|
|
12
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
13
|
+
if (hours > 0) {
|
|
14
|
+
return `~${hours}h ${minutes}m ${seconds}s`;
|
|
15
|
+
}
|
|
16
|
+
if (minutes > 0) {
|
|
17
|
+
return `~${minutes}m ${seconds}s`;
|
|
18
|
+
}
|
|
19
|
+
return `~${seconds}s`;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=timeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeUtils.js","sourceRoot":"","sources":["../../src/service/timeUtils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,EAAoB,EACwB,EAAE;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;IACzB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;IAC5C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AAC/B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAU,EAAE;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAA;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAA;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;IAE3C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,IAAI,KAAK,KAAK,OAAO,KAAK,OAAO,GAAG,CAAA;IAC7C,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,IAAI,OAAO,KAAK,OAAO,GAAG,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,OAAO,GAAG,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -5,7 +5,7 @@ export interface ApexMutationTestResult {
|
|
|
5
5
|
mutants: {
|
|
6
6
|
id: string;
|
|
7
7
|
mutatorName: string;
|
|
8
|
-
status: 'Killed' | 'Survived' | 'NoCoverage' | 'CompileError' | 'RuntimeError';
|
|
8
|
+
status: 'Killed' | 'Survived' | 'NoCoverage' | 'CompileError' | 'RuntimeError' | 'Pending';
|
|
9
9
|
statusReason?: string;
|
|
10
10
|
location: {
|
|
11
11
|
start: {
|
|
@@ -26,6 +26,10 @@ Path to the directory where mutation test reports will be generated
|
|
|
26
26
|
|
|
27
27
|
<%= config.bin %> <%= command.id %> --apex-class MyClass --test-class MyClassTest
|
|
28
28
|
|
|
29
|
+
- Preview mutations without running them:
|
|
30
|
+
|
|
31
|
+
<%= config.bin %> <%= command.id %> --apex-class MyClass --test-class MyClassTest --dry-run
|
|
32
|
+
|
|
29
33
|
# info.reportGenerated
|
|
30
34
|
|
|
31
35
|
Report has been generated at this location: %s
|
|
@@ -34,6 +38,10 @@ Report has been generated at this location: %s
|
|
|
34
38
|
|
|
35
39
|
Running mutation testing for "%s" with "%s" test class
|
|
36
40
|
|
|
41
|
+
# info.DryRunCommandIsRunning
|
|
42
|
+
|
|
43
|
+
Running dry run mutation testing for "%s" with "%s" test class
|
|
44
|
+
|
|
37
45
|
# info.CommandSuccess
|
|
38
46
|
|
|
39
47
|
Mutation score: %s%
|
|
@@ -55,3 +63,19 @@ No test coverage found for '%s'. Ensure '%s' tests exercise the code you want to
|
|
|
55
63
|
# error.noMutations
|
|
56
64
|
|
|
57
65
|
No mutations could be generated for '%s'. %s line(s) covered but no mutable patterns found.
|
|
66
|
+
|
|
67
|
+
# flags.dry-run.summary
|
|
68
|
+
|
|
69
|
+
Preview mutations without deploying or running tests
|
|
70
|
+
|
|
71
|
+
# error.compilabilityCheckFailed
|
|
72
|
+
|
|
73
|
+
The Apex class '%s' does not compile on the target org. This can happen when a dependency was modified after the class was last deployed. Fix compilation errors before running mutation testing.\nError: %s
|
|
74
|
+
|
|
75
|
+
# info.timeEstimate
|
|
76
|
+
|
|
77
|
+
Estimated time: %s
|
|
78
|
+
|
|
79
|
+
# info.timeEstimateBreakdown
|
|
80
|
+
|
|
81
|
+
Deploy: %s/mutant | Test: %s/mutant | Mutants: %s
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apex-mutation-testing",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0-dev-99.22440267013-1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "apex-mutation-testing",
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.5.0-dev-99.22440267013-1",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@oclif/core": "^4.8.1",
|
|
13
13
|
"@salesforce/apex-node": "^8.4.10",
|
|
14
|
-
"@salesforce/core": "^8.26.
|
|
14
|
+
"@salesforce/core": "^8.26.3",
|
|
15
15
|
"@salesforce/sf-plugins-core": "^12.2.6",
|
|
16
16
|
"@stryker-mutator/core": "^9.5.1",
|
|
17
17
|
"antlr4ts": "^0.5.0-alpha.4",
|
|
@@ -5322,9 +5322,9 @@
|
|
|
5322
5322
|
}
|
|
5323
5323
|
},
|
|
5324
5324
|
"node_modules/@salesforce/core": {
|
|
5325
|
-
"version": "8.26.
|
|
5326
|
-
"resolved": "https://registry.npmjs.org/@salesforce/core/-/core-8.26.
|
|
5327
|
-
"integrity": "sha512-
|
|
5325
|
+
"version": "8.26.3",
|
|
5326
|
+
"resolved": "https://registry.npmjs.org/@salesforce/core/-/core-8.26.3.tgz",
|
|
5327
|
+
"integrity": "sha512-lPNFHjHFeC4V3KuH88xuVLGhAqmtM8meUcvyejNh8bQ5w642APKRTGDZ0pOnWHJAe5SQy7cSQ1WqvO3V73ouQw==",
|
|
5328
5328
|
"license": "BSD-3-Clause",
|
|
5329
5329
|
"dependencies": {
|
|
5330
5330
|
"@jsforce/jsforce-node": "^3.10.13",
|
package/oclif.manifest.json
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
"args": {},
|
|
6
6
|
"description": "The Apex Mutation Testing plugin helps evaluate the effectiveness of your Apex test classes by introducing mutations into your code and checking if your tests can detect these changes:\n\nThe plugin provides insights into how trustworthy your test suite is by measuring its ability to catch intentional code changes.",
|
|
7
7
|
"examples": [
|
|
8
|
-
"Run mutation testing on a class with its test file:\n<%= config.bin %> <%= command.id %> --apex-class MyClass --test-class MyClassTest"
|
|
8
|
+
"Run mutation testing on a class with its test file:\n<%= config.bin %> <%= command.id %> --apex-class MyClass --test-class MyClassTest",
|
|
9
|
+
"Preview mutations without running them:\n<%= config.bin %> <%= command.id %> --apex-class MyClass --test-class MyClassTest --dry-run"
|
|
9
10
|
],
|
|
10
11
|
"flags": {
|
|
11
12
|
"json": {
|
|
@@ -50,6 +51,13 @@
|
|
|
50
51
|
"multiple": false,
|
|
51
52
|
"type": "option"
|
|
52
53
|
},
|
|
54
|
+
"dry-run": {
|
|
55
|
+
"char": "d",
|
|
56
|
+
"name": "dry-run",
|
|
57
|
+
"summary": "Preview mutations without deploying or running tests",
|
|
58
|
+
"allowNo": false,
|
|
59
|
+
"type": "boolean"
|
|
60
|
+
},
|
|
53
61
|
"target-org": {
|
|
54
62
|
"char": "o",
|
|
55
63
|
"name": "target-org",
|
|
@@ -115,5 +123,5 @@
|
|
|
115
123
|
]
|
|
116
124
|
}
|
|
117
125
|
},
|
|
118
|
-
"version": "1.
|
|
126
|
+
"version": "1.5.0-dev-99.22440267013-1"
|
|
119
127
|
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apex-mutation-testing",
|
|
3
3
|
"description": "Apex mutation testing plugin",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.0-dev-99.22440267013-1",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@oclif/core": "^4.8.1",
|
|
7
7
|
"@salesforce/apex-node": "^8.4.10",
|
|
8
|
-
"@salesforce/core": "^8.26.
|
|
8
|
+
"@salesforce/core": "^8.26.3",
|
|
9
9
|
"@salesforce/sf-plugins-core": "^12.2.6",
|
|
10
10
|
"@stryker-mutator/core": "^9.5.1",
|
|
11
11
|
"antlr4ts": "^0.5.0-alpha.4",
|
|
@@ -65,8 +65,9 @@
|
|
|
65
65
|
"dependencies:upgrade": "npx npm-check-updates -u ; npm install ; npm audit fix",
|
|
66
66
|
"deploy:testclasses": "sf project deploy start -d test/classes",
|
|
67
67
|
"test:e2e:setup": "sf project deploy start -d test/classes -o e2e-test-org",
|
|
68
|
-
"test:e2e:run": "sf apex mutation test run -o e2e-test-org -c Mutation -t MutationTest -r
|
|
69
|
-
"test:e2e:run:local": "node ./bin/run.js apex mutation test run -o apex-mutation-testing -c Mutation -t MutationTest -r
|
|
68
|
+
"test:e2e:run": "sf apex mutation test run -o e2e-test-org -c Mutation -t MutationTest -r test/e2e && npm run test:e2e:normalize",
|
|
69
|
+
"test:e2e:run:local": "node ./bin/run.js apex mutation test run -o apex-mutation-testing -c Mutation -t MutationTest -r test/e2e && npm run test:e2e:normalize",
|
|
70
|
+
"test:e2e:normalize": "node tooling/normalize-e2e-snapshot.mjs",
|
|
70
71
|
"test:e2e:validate": "git diff --quiet test/e2e/",
|
|
71
72
|
"test:e2e:teardown": "sf project deploy start -d test/classes -o e2e-test-org",
|
|
72
73
|
"test:e2e": "npm run test:e2e:setup && npm run test:e2e:run && npm run test:e2e:validate; npm run test:e2e:teardown",
|