apextestlist 1.13.8 → 1.13.10
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 +15 -0
- package/README.md +5 -1
- package/lib/commands/apextests/list.js +1 -1
- package/lib/commands/apextests/list.js.map +1 -1
- package/lib/core/listTests.d.ts +1 -1
- package/lib/core/listTests.js +8 -6
- package/lib/core/listTests.js.map +1 -1
- package/lib/parsers/metadataFilterParser.js +3 -1
- package/lib/parsers/metadataFilterParser.js.map +1 -1
- package/lib/readers/directorySearcher.js +6 -12
- package/lib/readers/directorySearcher.js.map +1 -1
- package/lib/readers/testSuiteSearcher.js +2 -6
- package/lib/readers/testSuiteSearcher.js.map +1 -1
- package/lib/utils/concurrencyThreshold.js +1 -1
- package/lib/utils/concurrencyThreshold.js.map +1 -1
- package/lib/utils/getPackageDirectories.js +3 -7
- package/lib/utils/getPackageDirectories.js.map +1 -1
- package/lib/utils/getRepoRoot.d.ts +2 -2
- package/lib/utils/getRepoRoot.js +3 -3
- package/lib/utils/getRepoRoot.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +68 -66
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@
|
|
|
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.13.10](https://github.com/wisefoxme/apex-test-list/compare/v1.13.9...v1.13.10) (2026-07-12)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **deps:** bump @salesforce/source-deploy-retrieve ([#355](https://github.com/wisefoxme/apex-test-list/issues/355)) ([e39de35](https://github.com/wisefoxme/apex-test-list/commit/e39de354b7518f99f0b26e89ab217caa186bb140))
|
|
14
|
+
|
|
15
|
+
## [1.13.9](https://github.com/wisefoxme/apex-test-list/compare/v1.13.8...v1.13.9) (2026-06-15)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **deps:** bump @salesforce/core from 8.23.3 to 8.31.1 ([#350](https://github.com/wisefoxme/apex-test-list/issues/350)) ([39ce96f](https://github.com/wisefoxme/apex-test-list/commit/39ce96f978f58e42b0cd96d5cc207d54a9faebdb))
|
|
21
|
+
* **deps:** bump yaml from 2.8.0 to 2.9.0 ([#348](https://github.com/wisefoxme/apex-test-list/issues/348)) ([d3860bb](https://github.com/wisefoxme/apex-test-list/commit/d3860bbf687970589afb303b151b3b24743518fa))
|
|
22
|
+
|
|
8
23
|
## [1.13.8](https://github.com/wisefoxme/apex-test-list/compare/v1.13.7...v1.13.8) (2026-06-08)
|
|
9
24
|
|
|
10
25
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Apex Test List
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/apextestlist)
|
|
3
|
+
[](https://www.npmjs.com/package/apextestlist)
|
|
4
|
+
[](https://npmjs.org/package/apextestlist)
|
|
5
|
+
[](https://raw.githubusercontent.com/wisefoxme/apex-test-list/refs/heads/master/LICENSE)
|
|
6
|
+
[](https://dashboard.stryker-mutator.io/reports/github.com/wisefoxme/apex-test-list/master)
|
|
7
|
+

|
|
4
8
|
|
|
5
9
|
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
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
3
2
|
import { Messages } from '@salesforce/core';
|
|
3
|
+
import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
|
|
4
4
|
import { listTests } from '../../core/listTests.js';
|
|
5
5
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
6
6
|
const messages = Messages.loadMessages('apextestlist', 'apextests.list');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/apextests/list.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/apextests/list.ts"],"names":[],"mappings":"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"}
|
package/lib/core/listTests.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ApextestsListResult, ListTestsOptions } from '../utils/types.js';
|
|
2
2
|
export declare function listTests({ format, manifest, ignoreMissingTests, ignoreDirs, noWarnings, filterByMetadata, warn, }: ListTestsOptions): Promise<ApextestsListResult>;
|
package/lib/core/listTests.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
/* eslint-disable no-await-in-loop */
|
|
2
1
|
import { resolve } from 'node:path';
|
|
3
|
-
import { getPackageDirectories } from '../utils/getPackageDirectories.js';
|
|
4
|
-
import { validateTests } from '../utils/validateTests.js';
|
|
5
2
|
import { extractTypeNamesFromManifestFile } from '../parsers/manifestParser.js';
|
|
6
|
-
import {
|
|
3
|
+
import { loadTestMetadataDependencies, selectRelevantTests } from '../parsers/metadataFilterParser.js';
|
|
7
4
|
import { searchDirectoryForTestClasses } from '../readers/directorySearcher.js';
|
|
8
5
|
import { searchDirectoryForTestNamesInTestSuites } from '../readers/testSuiteSearcher.js';
|
|
9
6
|
import { METADATA_FILTER_CONFIG } from '../utils/constants.js';
|
|
10
|
-
import {
|
|
11
|
-
|
|
7
|
+
import { formatList } from '../utils/formatters.js';
|
|
8
|
+
import { getPackageDirectories } from '../utils/getPackageDirectories.js';
|
|
9
|
+
import { validateTests } from '../utils/validateTests.js';
|
|
10
|
+
export async function listTests({ format = 'sf', manifest, ignoreMissingTests = false, ignoreDirs = [], noWarnings = false, filterByMetadata = false, warn = () => {
|
|
11
|
+
// no-op default
|
|
12
|
+
}, }) {
|
|
12
13
|
let testClassesNames = null;
|
|
13
14
|
const testSuitesNames = [];
|
|
14
15
|
const allTestClasses = [];
|
|
@@ -46,6 +47,7 @@ export async function listTests({ format = 'sf', manifest, ignoreMissingTests =
|
|
|
46
47
|
finalTestMethods = validatedTests;
|
|
47
48
|
warnings.push(...validationWarnings);
|
|
48
49
|
}
|
|
50
|
+
// Stryker disable next-line ConditionalExpression,EqualityOperator: empty array forEach is a no-op — guard is equivalent when warnings is empty
|
|
49
51
|
if (!noWarnings && warnings.length > 0) {
|
|
50
52
|
warnings.forEach(warn);
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listTests.js","sourceRoot":"","sources":["../../src/core/listTests.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"listTests.js","sourceRoot":"","sources":["../../src/core/listTests.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@ import { parse } from 'yaml';
|
|
|
6
6
|
function isTestMetadataMap(obj) {
|
|
7
7
|
if (typeof obj !== 'object' || obj === null)
|
|
8
8
|
return false;
|
|
9
|
-
return Object.entries(obj).every(
|
|
9
|
+
return Object.entries(obj).every(
|
|
10
|
+
// Stryker disable next-line ConditionalExpression: Object.entries always yields string keys — typeof key === 'string' is unconditionally true
|
|
11
|
+
([key, value]) => typeof key === 'string' && Array.isArray(value) && value.every((v) => typeof v === 'string'));
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* Loads the test metadata filter YAML file and confirms it matches the expected structure.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataFilterParser.js","sourceRoot":"","sources":["../../src/parsers/metadataFilterParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAI7B;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE1D,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"metadataFilterParser.js","sourceRoot":"","sources":["../../src/parsers/metadataFilterParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAI7B;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE1D,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK;IAC9B,8IAA8I;IAC9I,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAC/G,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,UAAkB;IACnE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAY,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,OAAe;IAC5D,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,UAAU,KAAK,OAAO,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAwB,EAAE,eAAyB;IACrF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/G,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { readdirSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { queue } from 'async';
|
|
4
|
-
import { parseTestSuitesNames } from '../parsers/testSuiteParser.js';
|
|
5
4
|
import { parseTestsNames } from '../parsers/testNameParser.js';
|
|
6
|
-
import {
|
|
5
|
+
import { parseTestSuitesNames } from '../parsers/testSuiteParser.js';
|
|
7
6
|
import { getConcurrencyThreshold } from '../utils/concurrencyThreshold.js';
|
|
7
|
+
import { TEST_CLASS_ANNOTATION_REGEX, TEST_NAME_REGEX, TEST_SUITE_NAME_REGEX } from '../utils/constants.js';
|
|
8
8
|
/**
|
|
9
9
|
* Given a certain directory, search its contents for files that end with '.cls' or '.trigger'.
|
|
10
10
|
* Extracts the test names from the annotations on those files, and returns a list with those.
|
|
@@ -22,22 +22,19 @@ export async function searchDirectoryForTestClasses(directory, names) {
|
|
|
22
22
|
readDir = readdirSync(directory, { recursive: true });
|
|
23
23
|
}
|
|
24
24
|
catch (error) {
|
|
25
|
-
throw new Error(`Invalid or inaccessible directory: ${directory}
|
|
25
|
+
throw new Error(`Invalid or inaccessible directory: ${directory}`, { cause: error });
|
|
26
26
|
}
|
|
27
27
|
// Gets the list of Apex files (classes and triggers)
|
|
28
28
|
const apexFiles = readDir.filter((file) => {
|
|
29
29
|
if (!file.endsWith('.cls') && !file.endsWith('.trigger')) {
|
|
30
30
|
return false;
|
|
31
31
|
}
|
|
32
|
-
const fileFullName = file.split('/').pop()?.split('.');
|
|
33
32
|
if (!names) {
|
|
34
33
|
return true;
|
|
35
34
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
return false;
|
|
35
|
+
const parts = file.split('/').pop().split('.');
|
|
36
|
+
const formattedName = `${parts[1] === 'cls' ? 'ApexClass' : 'ApexTrigger'}:${parts[0]}`;
|
|
37
|
+
return names.includes(formattedName);
|
|
41
38
|
});
|
|
42
39
|
const testClassNameHandler = (fileName) => {
|
|
43
40
|
const path = `${directory}/${fileName}`;
|
|
@@ -71,9 +68,6 @@ export async function searchDirectoryForTestClasses(directory, names) {
|
|
|
71
68
|
cb();
|
|
72
69
|
}, getConcurrencyThreshold());
|
|
73
70
|
await testClassNameProcessor.push(apexFiles);
|
|
74
|
-
if (testClassNameProcessor.length() > 0) {
|
|
75
|
-
await testClassNameProcessor.drain();
|
|
76
|
-
}
|
|
77
71
|
return {
|
|
78
72
|
classes: Array.from(testClassesNames),
|
|
79
73
|
testSuites: Array.from(testSuitesNames),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directorySearcher.js","sourceRoot":"","sources":["../../src/readers/directorySearcher.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"directorySearcher.js","sourceRoot":"","sources":["../../src/readers/directorySearcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export async function searchDirectoryForTestNamesInTestSuites(directory, package
|
|
|
20
20
|
readDir = readdirSync(directory, { recursive: true });
|
|
21
21
|
}
|
|
22
22
|
catch (error) {
|
|
23
|
-
throw new Error(`Invalid or inaccessible directory: ${directory}
|
|
23
|
+
throw new Error(`Invalid or inaccessible directory: ${directory}`, { cause: error });
|
|
24
24
|
}
|
|
25
25
|
// Gets the list of test suites
|
|
26
26
|
const suiteFiles = readDir.filter((file) => file.endsWith('.testSuite-meta.xml'));
|
|
@@ -30,6 +30,7 @@ export async function searchDirectoryForTestNamesInTestSuites(directory, package
|
|
|
30
30
|
// list of test classes for the next steps
|
|
31
31
|
const testSuiteNameHandler = (fileName) => {
|
|
32
32
|
const path = `${directory}/${fileName}`;
|
|
33
|
+
// Stryker disable next-line StringLiteral: empty-string encoding returns a Buffer decoded as UTF-8 by default — identical output for ASCII XML
|
|
33
34
|
const data = readFileSync(path, 'utf-8');
|
|
34
35
|
const classes = parseTestSuiteFile(data);
|
|
35
36
|
// TODO: Support for wildcards
|
|
@@ -49,13 +50,8 @@ export async function searchDirectoryForTestNamesInTestSuites(directory, package
|
|
|
49
50
|
}, getConcurrencyThreshold());
|
|
50
51
|
// initialize the processor with the names of files we want to process
|
|
51
52
|
await testSuiteNameProcessor.push(suiteFiles);
|
|
52
|
-
// make sure no dangling process is left before continuing
|
|
53
|
-
if (testSuiteNameProcessor.length() > 0) {
|
|
54
|
-
await testSuiteNameProcessor.drain();
|
|
55
|
-
}
|
|
56
53
|
if (requiresWildcardSearch && packageDirectories) {
|
|
57
54
|
for (const pkgDir of packageDirectories) {
|
|
58
|
-
// eslint-disable-next-line no-await-in-loop
|
|
59
55
|
const searchResult = await searchDirectoryForTestClasses(pkgDir, null);
|
|
60
56
|
const testClassesInDir = searchResult.classes;
|
|
61
57
|
for (const test of testClassesInDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testSuiteSearcher.js","sourceRoot":"","sources":["../../src/readers/testSuiteSearcher.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAC3D,SAAiB,EACjB,kBAA4B;IAE5B,MAAM,gBAAgB,GAAgB,IAAI,GAAG,EAAU,CAAC;IACxD,IAAI,OAAO,CAAC;IAEZ,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAa,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"testSuiteSearcher.js","sourceRoot":"","sources":["../../src/readers/testSuiteSearcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { availableParallelism } from 'node:os';
|
|
3
3
|
export function getConcurrencyThreshold() {
|
|
4
|
-
const AVAILABLE_PARALLELISM = availableParallelism
|
|
4
|
+
const AVAILABLE_PARALLELISM = availableParallelism();
|
|
5
5
|
return Math.min(AVAILABLE_PARALLELISM, 6);
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=concurrencyThreshold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrencyThreshold.js","sourceRoot":"","sources":["../../src/utils/concurrencyThreshold.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,UAAU,uBAAuB;IACrC,MAAM,qBAAqB,GAAW,oBAAoB,
|
|
1
|
+
{"version":3,"file":"concurrencyThreshold.js","sourceRoot":"","sources":["../../src/utils/concurrencyThreshold.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,UAAU,uBAAuB;IACrC,MAAM,qBAAqB,GAAW,oBAAoB,EAAE,CAAC;IAE7D,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { getRepoRoot } from './getRepoRoot.js';
|
|
2
|
+
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
3
|
+
import { basename, join, resolve } from 'node:path';
|
|
5
4
|
import { SEARCHABLE_METADATA_FOLDERS } from './constants.js';
|
|
5
|
+
import { getRepoRoot } from './getRepoRoot.js';
|
|
6
6
|
export async function getPackageDirectories(ignoreDirs) {
|
|
7
7
|
const { repoRoot, dxConfigFilePath } = await getRepoRoot();
|
|
8
|
-
if (!repoRoot || !dxConfigFilePath) {
|
|
9
|
-
throw new Error('Failed to retrieve repository root or sfdx-project.json path.');
|
|
10
|
-
}
|
|
11
|
-
process.chdir(repoRoot);
|
|
12
8
|
const sfdxProjectRaw = await readFile(dxConfigFilePath, 'utf-8');
|
|
13
9
|
const sfdxProject = JSON.parse(sfdxProjectRaw);
|
|
14
10
|
const packageDirectories = sfdxProject.packageDirectories
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPackageDirectories.js","sourceRoot":"","sources":["../../src/utils/getPackageDirectories.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getPackageDirectories.js","sourceRoot":"","sources":["../../src/utils/getPackageDirectories.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAoB;IAEpB,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IAE3D,MAAM,cAAc,GAAW,MAAM,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAgB,CAAC;IAC3E,MAAM,kBAAkB,GAAG,WAAW,CAAC,kBAAkB;SACtD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SACrD,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpE,MAAM,aAAa,GAAG,CACpB,MAAM,OAAO,CAAC,GAAG,CACf,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC,CACnG,CACF,CAAC,IAAI,EAAE,CAAC;IAET,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,WAAmB,EAAE,iBAA2B;IACjF,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzC,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,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;QAEnC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,OAAO,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CACH,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/lib/utils/getRepoRoot.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { access } from 'node:fs/promises';
|
|
3
|
-
import {
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
4
|
import { SFDX_PROJECT_FILE_NAME } from '../utils/constants.js';
|
|
5
5
|
async function findRepoRoot(dir) {
|
|
6
6
|
const filePath = join(dir, SFDX_PROJECT_FILE_NAME);
|
|
@@ -9,11 +9,11 @@ async function findRepoRoot(dir) {
|
|
|
9
9
|
await access(filePath);
|
|
10
10
|
return { repoRoot: dir, dxConfigFilePath: filePath };
|
|
11
11
|
}
|
|
12
|
-
catch {
|
|
12
|
+
catch (error) {
|
|
13
13
|
const parentDir = dirname(dir);
|
|
14
14
|
if (dir === parentDir) {
|
|
15
15
|
// Reached the root without finding the file, throw an error
|
|
16
|
-
throw new Error('sfdx-project.json not found in any parent directory.');
|
|
16
|
+
throw new Error('sfdx-project.json not found in any parent directory.', { cause: error });
|
|
17
17
|
}
|
|
18
18
|
// Recursively search in the parent directory
|
|
19
19
|
return findRepoRoot(parentDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRepoRoot.js","sourceRoot":"","sources":["../../src/utils/getRepoRoot.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getRepoRoot.js","sourceRoot":"","sources":["../../src/utils/getRepoRoot.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,4DAA4D;YAC5D,MAAM,IAAI,KAAK,CAAC,sDAAsD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,6CAA6C;QAC7C,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC"}
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apextestlist",
|
|
3
3
|
"description": "A plugin that generates a list of apex test and test suite names for use in CI/CD pipelines.",
|
|
4
|
-
"version": "1.13.
|
|
4
|
+
"version": "1.13.10",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@oclif/core": "4.11.2",
|
|
7
|
-
"@salesforce/core": "8.
|
|
7
|
+
"@salesforce/core": "8.31.1",
|
|
8
8
|
"@salesforce/sf-plugins-core": "12.2.16",
|
|
9
|
-
"@salesforce/source-deploy-retrieve": "12.36.
|
|
9
|
+
"@salesforce/source-deploy-retrieve": "12.36.3",
|
|
10
10
|
"async": "3.2.6",
|
|
11
11
|
"xml2js": "0.6.2",
|
|
12
|
-
"yaml": "2.
|
|
12
|
+
"yaml": "2.9.0"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@
|
|
16
|
-
"@commitlint/
|
|
17
|
-
"@
|
|
15
|
+
"@biomejs/biome": "2.5.3",
|
|
16
|
+
"@commitlint/cli": "19.8.1",
|
|
17
|
+
"@commitlint/config-conventional": "19.8.1",
|
|
18
18
|
"@salesforce/cli-plugins-testkit": "5.3.39",
|
|
19
19
|
"@salesforce/dev-config": "4.3.3",
|
|
20
|
-
"@
|
|
21
|
-
"@
|
|
20
|
+
"@stryker-mutator/core": "9.6.1",
|
|
21
|
+
"@stryker-mutator/vitest-runner": "9.6.1",
|
|
22
|
+
"@types/async": "3.2.25",
|
|
22
23
|
"@types/node": "22.18.12",
|
|
23
24
|
"@types/xml2js": "0.4.14",
|
|
24
|
-
"@vitest/coverage-v8": "4.1.
|
|
25
|
-
"eslint-config-salesforce-typescript": "4.0.1",
|
|
25
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
26
26
|
"husky": "9.1.6",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"pretty-quick": "4.0.0",
|
|
27
|
+
"lint-staged": "17.0.8",
|
|
28
|
+
"oclif": "4.23.27",
|
|
30
29
|
"shx": "0.4.0",
|
|
31
30
|
"ts-node": "10.9.2",
|
|
32
|
-
"typescript": "5.
|
|
33
|
-
"vitest": "4.1.
|
|
34
|
-
"wireit": "0.14.
|
|
31
|
+
"typescript": "5.9.3",
|
|
32
|
+
"vitest": "4.1.10",
|
|
33
|
+
"wireit": "0.14.13"
|
|
35
34
|
},
|
|
36
35
|
"engines": {
|
|
37
36
|
"node": ">=20 <=26"
|
|
@@ -69,7 +68,9 @@
|
|
|
69
68
|
},
|
|
70
69
|
"scripts": {
|
|
71
70
|
"build": "wireit",
|
|
72
|
-
"clean
|
|
71
|
+
"clean": "wireit",
|
|
72
|
+
"clean:build": "wireit",
|
|
73
|
+
"clean:package-manager": "wireit",
|
|
73
74
|
"compile": "wireit",
|
|
74
75
|
"format": "wireit",
|
|
75
76
|
"link-check": "wireit",
|
|
@@ -78,10 +79,10 @@
|
|
|
78
79
|
"prepack": "wireit",
|
|
79
80
|
"prepare": "husky",
|
|
80
81
|
"test": "wireit",
|
|
81
|
-
"test:
|
|
82
|
-
"test:
|
|
83
|
-
"test:
|
|
84
|
-
"
|
|
82
|
+
"test:mutation": "stryker run",
|
|
83
|
+
"test:mutation:incremental": "node scripts/incremental-mutation.mjs",
|
|
84
|
+
"test:nuts": "wireit",
|
|
85
|
+
"test:only": "wireit"
|
|
85
86
|
},
|
|
86
87
|
"publishConfig": {
|
|
87
88
|
"access": "public"
|
|
@@ -93,6 +94,34 @@
|
|
|
93
94
|
"lint"
|
|
94
95
|
]
|
|
95
96
|
},
|
|
97
|
+
"clean": {
|
|
98
|
+
"command": "shx rm -rf 'reports/*' oclif.manifest.json oclif.lock 'stderr*.txt' 'stdout*.txt' '.stryker-tmp/*'",
|
|
99
|
+
"files": [
|
|
100
|
+
".stryker-tmp/*",
|
|
101
|
+
"lib",
|
|
102
|
+
"oclif.manifest.json",
|
|
103
|
+
"oclif.lock",
|
|
104
|
+
"reports/*",
|
|
105
|
+
"stderr*.txt",
|
|
106
|
+
"stdout*.txt"
|
|
107
|
+
],
|
|
108
|
+
"dependencies": [
|
|
109
|
+
"clean:build"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
"clean:build": {
|
|
113
|
+
"command": "shx rm -rf lib .wireit",
|
|
114
|
+
"files": [
|
|
115
|
+
".wireit/*",
|
|
116
|
+
"lib/*"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
"clean:package-manager": {
|
|
120
|
+
"command": "shx rm -rf node_modules tsconfig.tsbuildinfo",
|
|
121
|
+
"files": [
|
|
122
|
+
"node_modules/*"
|
|
123
|
+
]
|
|
124
|
+
},
|
|
96
125
|
"compile": {
|
|
97
126
|
"command": "tsc -p . --pretty --incremental",
|
|
98
127
|
"files": [
|
|
@@ -107,23 +136,21 @@
|
|
|
107
136
|
"clean": "if-file-deleted"
|
|
108
137
|
},
|
|
109
138
|
"format": {
|
|
110
|
-
"command": "
|
|
139
|
+
"command": "biome format --write src test",
|
|
111
140
|
"files": [
|
|
112
141
|
"src/**/*.ts",
|
|
113
142
|
"test/**/*.ts",
|
|
114
|
-
"
|
|
115
|
-
"command-snapshot.json",
|
|
116
|
-
".prettier*"
|
|
143
|
+
"biome.json"
|
|
117
144
|
],
|
|
118
145
|
"output": []
|
|
119
146
|
},
|
|
120
147
|
"lint": {
|
|
121
|
-
"command": "
|
|
148
|
+
"command": "biome check src test",
|
|
122
149
|
"files": [
|
|
123
150
|
"src/**/*.ts",
|
|
124
151
|
"test/**/*.ts",
|
|
125
152
|
"messages/**",
|
|
126
|
-
"
|
|
153
|
+
"biome.json",
|
|
127
154
|
"**/tsconfig.json"
|
|
128
155
|
],
|
|
129
156
|
"output": []
|
|
@@ -158,6 +185,19 @@
|
|
|
158
185
|
"lint"
|
|
159
186
|
]
|
|
160
187
|
},
|
|
188
|
+
"test:nuts": {
|
|
189
|
+
"command": "vitest run --config ./vitest.nut.config.ts && shx rm -f oclif.manifest.json oclif.lock *.tsbuildinfo",
|
|
190
|
+
"files": [
|
|
191
|
+
"test/**/*.nut.ts",
|
|
192
|
+
"**/tsconfig.json",
|
|
193
|
+
"vitest.nut.config.ts"
|
|
194
|
+
],
|
|
195
|
+
"output": [],
|
|
196
|
+
"dependencies": [
|
|
197
|
+
"build",
|
|
198
|
+
"prepack"
|
|
199
|
+
]
|
|
200
|
+
},
|
|
161
201
|
"test:only": {
|
|
162
202
|
"command": "vitest run --coverage",
|
|
163
203
|
"env": {
|
|
@@ -171,44 +211,6 @@
|
|
|
171
211
|
"!*.nut.ts"
|
|
172
212
|
],
|
|
173
213
|
"output": []
|
|
174
|
-
},
|
|
175
|
-
"test:command-reference": {
|
|
176
|
-
"command": "node --loader ts-node/esm --no-warnings=ExperimentalWarning \"./bin/dev.js\" commandreference:generate --erroronwarnings",
|
|
177
|
-
"files": [
|
|
178
|
-
"src/**/*.ts",
|
|
179
|
-
"messages/**",
|
|
180
|
-
"package.json"
|
|
181
|
-
],
|
|
182
|
-
"output": [
|
|
183
|
-
"tmp/root"
|
|
184
|
-
]
|
|
185
|
-
},
|
|
186
|
-
"test:deprecation-policy": {
|
|
187
|
-
"command": "node --loader ts-node/esm --no-warnings=ExperimentalWarning \"./bin/dev.js\" snapshot:compare",
|
|
188
|
-
"files": [
|
|
189
|
-
"src/**/*.ts"
|
|
190
|
-
],
|
|
191
|
-
"output": [],
|
|
192
|
-
"dependencies": [
|
|
193
|
-
"compile"
|
|
194
|
-
]
|
|
195
|
-
},
|
|
196
|
-
"test:json-schema": {
|
|
197
|
-
"command": "node --loader ts-node/esm --no-warnings=ExperimentalWarning \"./bin/dev.js\" schema:compare",
|
|
198
|
-
"files": [
|
|
199
|
-
"src/**/*.ts",
|
|
200
|
-
"schemas"
|
|
201
|
-
],
|
|
202
|
-
"output": []
|
|
203
|
-
},
|
|
204
|
-
"link-check": {
|
|
205
|
-
"command": "node -e \"process.exit(process.env.CI ? 0 : 1)\" || linkinator \"**/*.md\" --skip \"CHANGELOG.md|node_modules|test/|confluence.internal.salesforce.com|my.salesforce.com|%s\" --markdown --retry --directory-listing --verbosity error",
|
|
206
|
-
"files": [
|
|
207
|
-
"./*.md",
|
|
208
|
-
"./!(CHANGELOG).md",
|
|
209
|
-
"messages/**/*.md"
|
|
210
|
-
],
|
|
211
|
-
"output": []
|
|
212
214
|
}
|
|
213
215
|
},
|
|
214
216
|
"repository": {
|