apextestlist 1.10.1 → 1.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.
- package/CHANGELOG.md +14 -0
- package/README.md +106 -33
- package/lib/commands/apextests/list.d.ts +1 -0
- package/lib/commands/apextests/list.js +37 -27
- package/lib/commands/apextests/list.js.map +1 -1
- package/lib/helpers/readers.js +23 -25
- package/lib/helpers/readers.js.map +1 -1
- package/lib/helpers/types.d.ts +1 -0
- package/lib/helpers/validateTests.js +1 -1
- package/lib/helpers/validateTests.js.map +1 -1
- package/messages/apextests.list.md +8 -0
- package/oclif.lock +822 -804
- package/oclif.manifest.json +10 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## [1.11.0](https://github.com/renatoliveira/apex-test-list/compare/v1.10.2...v1.11.0) (2025-04-07)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* provide warnings for missing annotations ([#186](https://github.com/renatoliveira/apex-test-list/issues/186)) ([6df6cb9](https://github.com/renatoliveira/apex-test-list/commit/6df6cb9e9a9ea12db87339436579b95746364a25))
|
|
14
|
+
|
|
15
|
+
## [1.10.2](https://github.com/renatoliveira/apex-test-list/compare/v1.10.1...v1.10.2) (2025-04-06)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **deps:** bump @oclif/core from 4.2.6 to 4.2.10 ([d08a974](https://github.com/renatoliveira/apex-test-list/commit/d08a97414645c85c9a692e2a2aac29052c4ac8f9))
|
|
21
|
+
|
|
8
22
|
## [1.10.1](https://github.com/renatoliveira/apex-test-list/compare/v1.10.0...v1.10.1) (2025-02-13)
|
|
9
23
|
|
|
10
24
|
|
package/README.md
CHANGED
|
@@ -2,34 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/apextestlist) [](https://npmjs.org/package/apextestlist) [](https://raw.githubusercontent.com/salesforcecli/apextestlist/main/LICENSE.txt)
|
|
4
4
|
|
|
5
|
-
A plugin that generates a list of tests that your
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
A plugin that generates a list of tests that your automated process should run, so you can save time by not running all tests in your Salesforce org and avoid specifying them manually.
|
|
6
|
+
|
|
7
|
+
<!-- TABLE OF CONTENTS -->
|
|
8
|
+
<details>
|
|
9
|
+
<summary>Table of Contents</summary>
|
|
10
|
+
|
|
11
|
+
- [Install](#install)
|
|
12
|
+
- [Usage](#usage)
|
|
13
|
+
- [1. `@Tests:` (Custom Comment Annotation)](#1-tests-custom-comment-annotation)
|
|
14
|
+
- [2. `@TestSuites:` (Custom Comment Annotation)](#2-testsuites-custom-comment-annotation)
|
|
15
|
+
- [3. `@isTest` (Apex Annotation)](#3-istest-apex-annotation)
|
|
16
|
+
- [Running the Tool](#running-the-tool)
|
|
17
|
+
- [Handling Missing Tests](#handling-missing-tests)
|
|
18
|
+
- [Handling Missing Annotations](#handling-missing-annotations)
|
|
19
|
+
- [Command Reference](#command-reference)
|
|
20
|
+
- [Issues](#issues)
|
|
21
|
+
- [License](#license)
|
|
22
|
+
</details>
|
|
8
23
|
|
|
9
24
|
## Install
|
|
10
25
|
|
|
11
|
-
Simply
|
|
26
|
+
Simply install the plugin using `sf`:
|
|
12
27
|
|
|
13
|
-
```
|
|
28
|
+
```sh
|
|
14
29
|
sf plugins install apextestlist
|
|
15
30
|
```
|
|
16
31
|
|
|
17
32
|
## Usage
|
|
18
33
|
|
|
19
|
-
|
|
34
|
+
This tool identifies Apex tests using three annotations:
|
|
20
35
|
|
|
21
|
-
|
|
36
|
+
### 1. `@Tests:` (Custom Comment Annotation)
|
|
22
37
|
|
|
23
|
-
|
|
38
|
+
Classes can specify which tests should be run using a comment with the `@Tests:` prefix. Multiple tests can be separated by commas, spaces, or both.
|
|
24
39
|
|
|
25
40
|
```java
|
|
26
|
-
// @Tests: SampleTest,SuperSampleTest
|
|
41
|
+
// @Tests: SampleTest, SuperSampleTest
|
|
27
42
|
public class Sample {
|
|
28
43
|
// ...
|
|
29
44
|
}
|
|
30
45
|
```
|
|
31
46
|
|
|
32
|
-
|
|
47
|
+
This means that `SampleTest` and `SuperSampleTest` should be executed when `Sample.cls` is modified.
|
|
48
|
+
|
|
49
|
+
### 2. `@TestSuites:` (Custom Comment Annotation)
|
|
50
|
+
|
|
51
|
+
Test suites can be specified using the `@TestSuites:` prefix. Multiple suites can be separated by commas or spaces.
|
|
33
52
|
|
|
34
53
|
```java
|
|
35
54
|
// @TestSuites: SampleSuite SampleSuite2
|
|
@@ -38,71 +57,125 @@ public class Sample {
|
|
|
38
57
|
}
|
|
39
58
|
```
|
|
40
59
|
|
|
41
|
-
|
|
60
|
+
This tells the tool to include all tests contained in `SampleSuite` and `SampleSuite2`.
|
|
61
|
+
|
|
62
|
+
### 3. `@isTest` (Apex Annotation)
|
|
42
63
|
|
|
43
|
-
The tool also
|
|
64
|
+
The tool also detects all Apex classes marked with the [`@isTest`](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_isTest.htm) annotation. Any class or method marked with this annotation is assumed to be a test.
|
|
44
65
|
|
|
45
|
-
|
|
66
|
+
```java
|
|
67
|
+
@isTest
|
|
68
|
+
private class SampleTest {
|
|
69
|
+
// This test will be included automatically
|
|
70
|
+
}
|
|
71
|
+
```
|
|
46
72
|
|
|
47
|
-
|
|
73
|
+
## Running the Tool
|
|
48
74
|
|
|
49
|
-
|
|
75
|
+
To generate a test list, run the command in any Salesforce DX project:
|
|
50
76
|
|
|
51
77
|
```sh
|
|
52
78
|
sf apextests list --format sf
|
|
53
|
-
$ --tests SampleTest SuperSampleTest Sample2Test SuperSample2Test
|
|
54
79
|
```
|
|
55
80
|
|
|
56
|
-
|
|
81
|
+
Example output:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
--tests SampleTest SuperSampleTest Sample2Test SuperSample2Test
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
This command is useful in CI/CD pipelines, dynamically generating the test list for deployments:
|
|
57
88
|
|
|
58
89
|
```sh
|
|
59
90
|
sf project deploy start $(sf apextests list)
|
|
60
91
|
```
|
|
61
92
|
|
|
62
|
-
|
|
93
|
+
The final deployment command would look like:
|
|
63
94
|
|
|
64
95
|
```sh
|
|
65
96
|
sf project deploy start --tests SampleTest SuperSampleTest Sample2Test SuperSample2Test SampleTriggerTest
|
|
66
97
|
```
|
|
67
98
|
|
|
99
|
+
If no annotations are found, the command output will be empty and will present this warning:
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
No test methods found
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Handling Missing Tests
|
|
106
|
+
|
|
107
|
+
By default, this tool does **not** verify if the tests specified in `@Tests:` or `@TestSuites:` exist in the project. To enable warnings for missing tests, use:
|
|
108
|
+
|
|
109
|
+
```sh
|
|
110
|
+
sf apextests list --ignore-missing-tests
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
This will print warnings for missing tests and exclude them from the output.
|
|
114
|
+
|
|
115
|
+
### Handling Missing Annotations
|
|
116
|
+
|
|
117
|
+
By default, the tool will print a warning for each file scanned that is missing any annotation.
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
File "Sample.cls" does not contain @tests, @testsuites, or @istest annotations
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
To remove these warnings from the terminal, use:
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
sf apextests list --no-warnings
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Command Reference
|
|
130
|
+
|
|
68
131
|
```
|
|
69
132
|
USAGE
|
|
70
|
-
$ sf apextests list -f <value> -x <value> -s -d <value> [--json]
|
|
133
|
+
$ sf apextests list -f <value> -x <value> -s -n -d <value> [--json]
|
|
71
134
|
|
|
72
135
|
FLAGS
|
|
73
|
-
-f, --format=<value>
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
-
|
|
136
|
+
-f, --format=<value> Output format. Available options:
|
|
137
|
+
- `sf` (default): CLI-friendly test list
|
|
138
|
+
- `csv`: Comma-separated values
|
|
139
|
+
-x, --manifest=<value> Manifest XML file (package.xml) to filter test annotations.
|
|
140
|
+
-s, --ignore-missing-tests [default: false] Ignore test methods that are not found in any local package directories.
|
|
141
|
+
-n, --no-warnings [default: false] Do not print warnings for each file missing annotations.
|
|
77
142
|
-d, --ignore-package-directory Ignore a package directory when looking for test annotations.
|
|
78
|
-
Should match how they are declared in
|
|
143
|
+
Should match how they are declared in "sfdx-project.json".
|
|
79
144
|
Can be declared multiple times.
|
|
80
145
|
|
|
81
146
|
GLOBAL FLAGS
|
|
82
|
-
--json Format output as
|
|
83
|
-
|
|
84
|
-
DESCRIPTION
|
|
85
|
-
Lists tests in a package.xml file or from your package directories.
|
|
147
|
+
--json Format output as JSON.
|
|
86
148
|
|
|
87
149
|
EXAMPLES
|
|
88
|
-
List all test annotations found in
|
|
150
|
+
List all test annotations found in package directories in Salesforce CLI format:
|
|
89
151
|
|
|
90
152
|
$ sf apextests list --format sf
|
|
91
153
|
|
|
92
|
-
List all test annotations
|
|
154
|
+
List all test annotations in CSV format:
|
|
93
155
|
|
|
94
156
|
$ sf apextests list --format csv
|
|
95
157
|
|
|
96
|
-
List test annotations
|
|
158
|
+
List test annotations only for Apex classes/triggers in a manifest file:
|
|
97
159
|
|
|
98
160
|
$ sf apextests list --format sf --manifest package.xml
|
|
99
161
|
|
|
100
|
-
List test annotations only if they
|
|
162
|
+
List test annotations only if they exist in the package directories:
|
|
101
163
|
|
|
102
164
|
$ sf apextests list --format sf --ignore-missing-tests
|
|
103
165
|
|
|
104
|
-
|
|
166
|
+
Exclude annotations found in the "force-app" directory:
|
|
105
167
|
|
|
106
168
|
$ sf apextests list -d "force-app"
|
|
107
169
|
|
|
170
|
+
List test annotations without printing warnings for each file missing annotations:
|
|
171
|
+
|
|
172
|
+
$ sf apextests list -n
|
|
108
173
|
```
|
|
174
|
+
|
|
175
|
+
## Issues
|
|
176
|
+
|
|
177
|
+
If you encounter any issues or would like to suggest features, please create an [issue](https://github.com/renatoliveira/apex-test-list/issues).
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
This project is licensed under the BSD-3 license. Please see the [LICENSE](https://github.com/renatoliveira/apex-test-list/blob/master/LICENSE) file for details.
|
|
@@ -12,6 +12,7 @@ export default class ApextestsList extends SfCommand<ApextestsListResult> {
|
|
|
12
12
|
manifest: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
'ignore-missing-tests': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
'ignore-package-directory': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'no-warnings': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
16
|
};
|
|
16
17
|
run(): Promise<ApextestsListResult>;
|
|
17
18
|
}
|
|
@@ -41,6 +41,13 @@ export default class ApextestsList extends SfCommand {
|
|
|
41
41
|
required: false,
|
|
42
42
|
multiple: true,
|
|
43
43
|
}),
|
|
44
|
+
'no-warnings': Flags.boolean({
|
|
45
|
+
summary: messages.getMessage('flags.no-warnings.summary'),
|
|
46
|
+
description: messages.getMessage('flags.no-warnings.description'),
|
|
47
|
+
char: 'n',
|
|
48
|
+
required: false,
|
|
49
|
+
default: false,
|
|
50
|
+
}),
|
|
44
51
|
};
|
|
45
52
|
async run() {
|
|
46
53
|
const { flags } = await this.parse(ApextestsList);
|
|
@@ -48,57 +55,60 @@ export default class ApextestsList extends SfCommand {
|
|
|
48
55
|
const manifest = flags.manifest ?? undefined;
|
|
49
56
|
const ignoreMissingTests = flags['ignore-missing-tests'] ?? false;
|
|
50
57
|
const ignoreDirs = flags['ignore-package-directory'] ?? [];
|
|
51
|
-
|
|
58
|
+
const noWarnings = flags['no-warnings'];
|
|
52
59
|
let testClassesNames = null;
|
|
53
60
|
const testSuitesNames = [];
|
|
61
|
+
const allTestClasses = [];
|
|
62
|
+
const warnings = [];
|
|
54
63
|
// Get package directories full paths
|
|
55
64
|
const packageDirectories = await getPackageDirectories(ignoreDirs);
|
|
56
65
|
if (manifest) {
|
|
57
|
-
const
|
|
58
|
-
testClassesNames =
|
|
66
|
+
const manifestMetadata = await extractTypeNamesFromManifestFile(manifest);
|
|
67
|
+
testClassesNames = manifestMetadata.filter((name) => !name.endsWith('testSuite-meta.xml'));
|
|
59
68
|
}
|
|
60
|
-
const allTestClasses = [];
|
|
61
69
|
// Loop through each directory and search for test classes
|
|
62
70
|
for (const directory of packageDirectories) {
|
|
63
71
|
const searchResult = await searchDirectoryForTestClasses(directory, testClassesNames);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
72
|
+
allTestClasses.push(...searchResult.classes);
|
|
73
|
+
testSuitesNames.push(...searchResult.testSuites);
|
|
74
|
+
if (searchResult.warnings?.length) {
|
|
75
|
+
warnings.push(...searchResult.warnings);
|
|
76
|
+
}
|
|
68
77
|
}
|
|
69
78
|
if (testSuitesNames.length > 0) {
|
|
70
|
-
// read the testSuite directory again to get the classes listed on them
|
|
71
79
|
for (const directory of packageDirectories.filter((dir) => dir.includes('testSuites'))) {
|
|
72
80
|
const testNames = await searchDirectoryForTestNamesInTestSuites(directory, packageDirectories);
|
|
73
81
|
allTestClasses.push(...testNames);
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
|
-
// Ensure all test methods are unique by using a Set
|
|
77
84
|
let finalTestMethods = Array.from(new Set(allTestClasses.map((test) => test.trim())));
|
|
78
85
|
// If ignore-missing-tests is true, validate the test methods
|
|
79
86
|
if (ignoreMissingTests) {
|
|
80
|
-
const { validatedTests, warnings } = await validateTests(finalTestMethods, packageDirectories);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
else {
|
|
85
|
-
throw new Error('No test methods declared in your annotations were found in your package directories.');
|
|
87
|
+
const { validatedTests, warnings: validationWarnings } = await validateTests(finalTestMethods, packageDirectories);
|
|
88
|
+
finalTestMethods = validatedTests;
|
|
89
|
+
if (validationWarnings.length > 0) {
|
|
90
|
+
warnings.push(...validationWarnings);
|
|
86
91
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
warnings.forEach((warning) => {
|
|
90
|
-
this.warn(warning);
|
|
91
|
-
});
|
|
92
|
+
if (validatedTests.length === 0) {
|
|
93
|
+
warnings.push('No test methods declared in your annotations were found in your package directories');
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
|
-
|
|
95
|
-
if (
|
|
96
|
-
|
|
96
|
+
// Print all collected warnings
|
|
97
|
+
if (!noWarnings && warnings.length > 0) {
|
|
98
|
+
warnings.forEach((warning) => {
|
|
99
|
+
this.warn(warning);
|
|
100
|
+
});
|
|
97
101
|
}
|
|
98
|
-
|
|
99
|
-
|
|
102
|
+
finalTestMethods.sort((a, b) => a.localeCompare(b));
|
|
103
|
+
if (finalTestMethods.length === 0) {
|
|
104
|
+
this.warn('No test methods found');
|
|
105
|
+
return {
|
|
106
|
+
tests: [],
|
|
107
|
+
command: '',
|
|
108
|
+
};
|
|
100
109
|
}
|
|
101
|
-
|
|
110
|
+
const result = await formatList(format, finalTestMethods);
|
|
111
|
+
this.log(result.command);
|
|
102
112
|
return result;
|
|
103
113
|
}
|
|
104
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/apextests/list.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,YAAY,CAAC;AACb,qCAAqC;AAErC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,uCAAuC,EAAE,MAAM,0BAA0B,CAAC;AAGlH,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAQzE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,SAA8B;IAChE,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE5D,MAAM,CAAU,KAAK,GAAG;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACpD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;YACtD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,4BAA4B,CAAC;YAC9D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC;YACpC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oCAAoC,CAAC;YAClE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,wCAAwC,CAAC;YAC1E,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;SACf,CAAC;QACF,0BAA0B,EAAE,KAAK,CAAC,SAAS,CAAC;YAC1C,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,wCAAwC,CAAC;YACtE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,4CAA4C,CAAC;YAC9E,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC7C,MAAM,kBAAkB,GAAG,KAAK,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC;QAClE,MAAM,UAAU,GAAG,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/apextests/list.ts"],"names":[],"mappings":"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"}
|
package/lib/helpers/readers.js
CHANGED
|
@@ -92,6 +92,7 @@ export function matchWildcard(wildcard, test) {
|
|
|
92
92
|
export async function searchDirectoryForTestClasses(directory, names) {
|
|
93
93
|
const testClassesNames = new Set();
|
|
94
94
|
const testSuitesNames = new Set();
|
|
95
|
+
const warnings = [];
|
|
95
96
|
let readDir;
|
|
96
97
|
try {
|
|
97
98
|
readDir = readdirSync(directory, { recursive: true });
|
|
@@ -113,48 +114,45 @@ export async function searchDirectoryForTestClasses(directory, names) {
|
|
|
113
114
|
return names.includes(formattedName);
|
|
114
115
|
}
|
|
115
116
|
});
|
|
116
|
-
// Function that handles the parsing of test classes and helps to build the
|
|
117
|
-
// list of test classes
|
|
118
117
|
const testClassNameHandler = (fileName) => {
|
|
119
118
|
const path = `${directory}/${fileName}`;
|
|
120
119
|
const data = readFileSync(path, 'utf-8');
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
120
|
+
const testNameMatches = Array.from(data.matchAll(TEST_NAME_REGEX));
|
|
121
|
+
const testSuiteMatches = Array.from(data.matchAll(TEST_SUITE_NAME_REGEX));
|
|
122
|
+
const testClassAnnotationMatches = data.match(TEST_CLASS_ANNOTATION_REGEX);
|
|
123
|
+
let hasAnnotation = false;
|
|
124
|
+
if (testNameMatches.length > 0) {
|
|
125
|
+
hasAnnotation = true;
|
|
126
|
+
for (const match of testNameMatches) {
|
|
127
|
+
parseTestsNames(match).forEach((testMethod) => testClassesNames.add(testMethod));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (testSuiteMatches.length > 0) {
|
|
131
|
+
hasAnnotation = true;
|
|
132
|
+
for (const match of testSuiteMatches) {
|
|
133
|
+
parseTestSuitesNames(match).forEach((testMethod) => testSuitesNames.add(testMethod));
|
|
127
134
|
}
|
|
128
135
|
}
|
|
129
|
-
// check if the class is itself a test class, if it is, add it to the list
|
|
130
|
-
const testClassAnnotationMatches = data.match(TEST_CLASS_ANNOTATION_REGEX);
|
|
131
136
|
if (testClassAnnotationMatches && testClassAnnotationMatches.length > 0) {
|
|
137
|
+
hasAnnotation = true;
|
|
132
138
|
testClassesNames.add(fileName.split('.').shift());
|
|
133
139
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const path = `${directory}/${fileName}`;
|
|
137
|
-
const data = readFileSync(path, 'utf-8');
|
|
138
|
-
const matches = data.matchAll(TEST_SUITE_NAME_REGEX);
|
|
139
|
-
for (const match of matches) {
|
|
140
|
-
parseTestSuitesNames(match).forEach((testMethod) => {
|
|
141
|
-
testSuitesNames.add(testMethod);
|
|
142
|
-
});
|
|
140
|
+
if (!hasAnnotation) {
|
|
141
|
+
warnings.push(`File "${fileName}" does not contain @tests, @testsuites, or @istest annotations`);
|
|
143
142
|
}
|
|
144
143
|
};
|
|
145
|
-
// initialize the processor with the names of files we want to process
|
|
146
144
|
const testClassNameProcessor = queue((f, cb) => {
|
|
147
145
|
testClassNameHandler(f);
|
|
148
|
-
testSuiteNameHandler(f);
|
|
149
146
|
cb();
|
|
150
147
|
}, getConcurrencyThreshold());
|
|
151
|
-
// initialize the processor with the names of files we want to process
|
|
152
148
|
await testClassNameProcessor.push(apexFiles);
|
|
153
|
-
// make sure no dangling process is left before continuing
|
|
154
149
|
if (testClassNameProcessor.length() > 0) {
|
|
155
150
|
await testClassNameProcessor.drain();
|
|
156
151
|
}
|
|
157
|
-
|
|
158
|
-
|
|
152
|
+
return {
|
|
153
|
+
classes: Array.from(testClassesNames),
|
|
154
|
+
testSuites: Array.from(testSuitesNames),
|
|
155
|
+
warnings,
|
|
156
|
+
};
|
|
159
157
|
}
|
|
160
158
|
//# sourceMappingURL=readers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readers.js","sourceRoot":"","sources":["../../src/helpers/readers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"readers.js","sourceRoot":"","sources":["../../src/helpers/readers.ts"],"names":[],"mappings":"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"}
|
package/lib/helpers/types.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export async function validateTests(unvalidatedTests, packageDirectories) {
|
|
|
11
11
|
}));
|
|
12
12
|
for (const { test, testPath } of results) {
|
|
13
13
|
if (testPath === undefined) {
|
|
14
|
-
warnings.push(`The test method ${test}.cls was not found in any package directory
|
|
14
|
+
warnings.push(`The test method ${test}.cls was not found in any package directory`);
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
17
|
validatedTests.push(test);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateTests.js","sourceRoot":"","sources":["../../src/helpers/validateTests.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,gBAA0B,EAC1B,kBAA4B;IAE5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,8CAA8C;IAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE;QAC7C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,eAAe,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAClF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC,CAAC,CACH,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,IAAI,
|
|
1
|
+
{"version":3,"file":"validateTests.js","sourceRoot":"","sources":["../../src/helpers/validateTests.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,gBAA0B,EAC1B,kBAA4B;IAE5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,8CAA8C;IAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE;QAC7C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,eAAe,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAClF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC,CAAC,CACH,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,IAAI,6CAA6C,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,kBAA4B;IAC/E,yDAAyD;IACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAC9E,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,WAAmB;IACpE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzC,oEAAoE;IACpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -38,6 +38,14 @@ Ignore a package directory.
|
|
|
38
38
|
|
|
39
39
|
If provided, do not search the package directory for test annotations.
|
|
40
40
|
|
|
41
|
+
# flags.no-warnings.summary
|
|
42
|
+
|
|
43
|
+
Do not print warnings for each Apex file missing annotations.
|
|
44
|
+
|
|
45
|
+
# flags.no-warnings.description
|
|
46
|
+
|
|
47
|
+
Do not print warnings for each Apex file missing annotations.
|
|
48
|
+
|
|
41
49
|
# examples
|
|
42
50
|
|
|
43
51
|
- <%= config.bin %> <%= command.id %> --format csv
|