apify-test-tools 0.8.7-beta.1 → 0.8.7-beta.3
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 +5 -0
- package/README.md +83 -13
- package/bin/actor-filtering.ts +21 -0
- package/bin/build-from-local.ts +35 -34
- package/bin/build.ts +55 -59
- package/bin/diff-changes.ts +166 -125
- package/bin/dockerignore.ts +50 -0
- package/bin/git.ts +5 -1
- package/bin/main.ts +66 -62
- package/bin/path-utils.ts +13 -0
- package/bin/test-report.ts +5 -5
- package/bin/types.ts +19 -5
- package/bin/utils.ts +124 -96
- package/dist/bin/actor-filtering.d.ts +13 -0
- package/dist/bin/actor-filtering.d.ts.map +1 -0
- package/dist/bin/actor-filtering.js +19 -0
- package/dist/bin/actor-filtering.js.map +1 -0
- package/dist/bin/build-from-local.d.ts +2 -2
- package/dist/bin/build-from-local.d.ts.map +1 -1
- package/dist/bin/build-from-local.js +33 -28
- package/dist/bin/build-from-local.js.map +1 -1
- package/dist/bin/build.d.ts +5 -8
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +49 -56
- package/dist/bin/build.js.map +1 -1
- package/dist/bin/diff-changes.d.ts +0 -6
- package/dist/bin/diff-changes.d.ts.map +1 -1
- package/dist/bin/diff-changes.js +129 -89
- package/dist/bin/diff-changes.js.map +1 -1
- package/dist/bin/dockerignore.d.ts +17 -0
- package/dist/bin/dockerignore.d.ts.map +1 -0
- package/dist/bin/dockerignore.js +41 -0
- package/dist/bin/dockerignore.js.map +1 -0
- package/dist/bin/git.d.ts +1 -1
- package/dist/bin/git.d.ts.map +1 -1
- package/dist/bin/git.js +1 -1
- package/dist/bin/git.js.map +1 -1
- package/dist/bin/main.d.ts +20 -1
- package/dist/bin/main.d.ts.map +1 -1
- package/dist/bin/main.js +57 -38
- package/dist/bin/main.js.map +1 -1
- package/dist/bin/path-utils.d.ts +4 -0
- package/dist/bin/path-utils.d.ts.map +1 -0
- package/dist/bin/path-utils.js +9 -0
- package/dist/bin/path-utils.js.map +1 -0
- package/dist/bin/test-report.js +3 -3
- package/dist/bin/test-report.js.map +1 -1
- package/dist/bin/types.d.ts +17 -4
- package/dist/bin/types.d.ts.map +1 -1
- package/dist/bin/utils.d.ts +5 -19
- package/dist/bin/utils.d.ts.map +1 -1
- package/dist/bin/utils.js +84 -82
- package/dist/bin/utils.js.map +1 -1
- package/dist/lib/lib.d.ts +10 -4
- package/dist/lib/lib.d.ts.map +1 -1
- package/dist/lib/lib.js +28 -22
- package/dist/lib/lib.js.map +1 -1
- package/dist/lib/types.d.ts +2 -2
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +4 -4
- package/dist/lib/utils.js.map +1 -1
- package/dist/test/unit/bin/actor-filtering.test.d.ts +2 -0
- package/dist/test/unit/bin/actor-filtering.test.d.ts.map +1 -0
- package/dist/test/unit/bin/actor-filtering.test.js +41 -0
- package/dist/test/unit/bin/actor-filtering.test.js.map +1 -0
- package/dist/test/unit/bin/build-from-local.test.js +55 -86
- package/dist/test/unit/bin/build-from-local.test.js.map +1 -1
- package/dist/test/unit/bin/diff-changes.test.js +358 -36
- package/dist/test/unit/bin/diff-changes.test.js.map +1 -1
- package/dist/test/unit/bin/dockerignore.test.d.ts +2 -0
- package/dist/test/unit/bin/dockerignore.test.d.ts.map +1 -0
- package/dist/test/unit/bin/dockerignore.test.js +102 -0
- package/dist/test/unit/bin/dockerignore.test.js.map +1 -0
- package/dist/test/unit/bin/path-utils.test.d.ts +2 -0
- package/dist/test/unit/bin/path-utils.test.d.ts.map +1 -0
- package/dist/test/unit/bin/path-utils.test.js +14 -0
- package/dist/test/unit/bin/path-utils.test.js.map +1 -0
- package/dist/test/unit/bin/utils.test.d.ts +2 -0
- package/dist/test/unit/bin/utils.test.d.ts.map +1 -0
- package/dist/test/unit/bin/utils.test.js +321 -0
- package/dist/test/unit/bin/utils.test.js.map +1 -0
- package/dist/test/unit/should-built-and-test.test.js +83 -32
- package/dist/test/unit/should-built-and-test.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/lib/lib.ts +28 -23
- package/lib/types.ts +2 -2
- package/lib/utils.ts +4 -4
- package/package.json +6 -5
- package/test/unit/bin/actor-filtering.test.ts +52 -0
- package/test/unit/bin/build-from-local.test.ts +62 -121
- package/test/unit/bin/diff-changes.test.ts +397 -41
- package/test/unit/bin/dockerignore.test.ts +123 -0
- package/test/unit/bin/path-utils.test.ts +17 -0
- package/test/unit/bin/utils.test.ts +381 -0
- package/test/unit/should-built-and-test.test.ts +89 -32
package/dist/bin/utils.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import fsSync from 'node:fs';
|
|
3
2
|
import fs from 'node:fs/promises';
|
|
4
|
-
import os from 'node:os';
|
|
5
3
|
import path from 'node:path';
|
|
6
4
|
import { SOURCE_FILE_FORMATS } from '@apify/consts';
|
|
5
|
+
import { selectActors } from './actor-filtering.js';
|
|
6
|
+
import { isPathWithinScope } from './path-utils.js';
|
|
7
7
|
// Returns true when `childPath` is not inside `parentPath`.
|
|
8
8
|
// Used to detect monorepo actors whose dockerContextDir escapes the actor directory.
|
|
9
9
|
export const isOutsideDir = (childPath, parentPath) => path.relative(parentPath, childPath).startsWith('..');
|
|
@@ -45,56 +45,6 @@ export const getGitignoredPaths = (relativePaths) => {
|
|
|
45
45
|
}
|
|
46
46
|
return new Set(result.stdout.toString().split('\n').filter(Boolean));
|
|
47
47
|
};
|
|
48
|
-
// Docker normalizes each pattern before matching, so a leading "./" (as in the common "./node_modules"
|
|
49
|
-
// style) is a no-op for Docker. git's ignore engine has no such normalization — it treats "./" as
|
|
50
|
-
// literal pattern text that can never match a real path, so a .dockerignore written in that style
|
|
51
|
-
// would otherwise silently match nothing under git. Strip it here (after any negation prefix) so
|
|
52
|
-
// git sees the same effective pattern Docker would.
|
|
53
|
-
const normalizeDockerignorePattern = (line) => line.replace(/^(!?)(?:\.\/)+/, '$1');
|
|
54
|
-
/**
|
|
55
|
-
* Given paths relative to `rootDir`, returns the subset that a `.dockerignore` file sitting at
|
|
56
|
-
* `rootDir` would exclude — mirroring getGitignoredPaths, but for Docker's own ignore file. `git
|
|
57
|
-
* check-ignore` has no built-in notion of .dockerignore, but pointing `core.excludesFile` at a
|
|
58
|
-
* normalized copy of it for a single invocation makes git apply its patterns exactly like a
|
|
59
|
-
* .gitignore, without re-implementing gitignore-style pattern matching ourselves. A missing
|
|
60
|
-
* .dockerignore is a no-op (empty set), so there's no need to check for its existence first.
|
|
61
|
-
*
|
|
62
|
-
* Crucially this passes `--no-index`: by default git never reports an already-tracked file as
|
|
63
|
-
* ignored (that's how real .gitignore semantics work — tracked files aren't affected by ignore
|
|
64
|
-
* rules), but Docker excludes a matching path from the build context unconditionally, regardless
|
|
65
|
-
* of git tracking. `--no-index` makes git apply the patterns uniformly, matching Docker's behavior.
|
|
66
|
-
*/
|
|
67
|
-
export const getDockerignoredPaths = (rootDir, relativePaths) => {
|
|
68
|
-
if (relativePaths.length === 0)
|
|
69
|
-
return new Set();
|
|
70
|
-
let dockerignoreContent;
|
|
71
|
-
try {
|
|
72
|
-
dockerignoreContent = fsSync.readFileSync(path.join(rootDir, '.dockerignore'), 'utf8');
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return new Set();
|
|
76
|
-
}
|
|
77
|
-
const normalizedContent = dockerignoreContent.split('\n').map(normalizeDockerignorePattern).join('\n');
|
|
78
|
-
const tempDir = fsSync.mkdtempSync(path.join(os.tmpdir(), 'apify-dockerignore-'));
|
|
79
|
-
try {
|
|
80
|
-
const normalizedPath = path.join(tempDir, '.dockerignore');
|
|
81
|
-
fsSync.writeFileSync(normalizedPath, normalizedContent);
|
|
82
|
-
const result = spawnSync('git', ['-c', `core.excludesFile=${normalizedPath}`, 'check-ignore', '--no-index', '--stdin'], {
|
|
83
|
-
cwd: rootDir,
|
|
84
|
-
input: relativePaths.join('\n'),
|
|
85
|
-
maxBuffer: 100 * 1024 * 1024,
|
|
86
|
-
});
|
|
87
|
-
// Exit code 1 means none of the given paths are ignored - not an error. Anything else
|
|
88
|
-
// (e.g. 128 for "not a git repository") is a real failure.
|
|
89
|
-
if (result.status !== 0 && result.status !== 1) {
|
|
90
|
-
throw new Error(`[Command failed]: git check-ignore (dockerignore)\n${result.stderr.toString()}`);
|
|
91
|
-
}
|
|
92
|
-
return new Set(result.stdout.toString().split('\n').filter(Boolean));
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
fsSync.rmSync(tempDir, { recursive: true, force: true });
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
48
|
const isBinary = (buffer) => buffer.includes(0);
|
|
99
49
|
export const toActorVersionSourceFile = async (absPath, rootDir) => {
|
|
100
50
|
const buffer = await fs.readFile(absPath);
|
|
@@ -124,49 +74,101 @@ export const getEnvVar = (varName, defaultValue) => {
|
|
|
124
74
|
}
|
|
125
75
|
return value;
|
|
126
76
|
};
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
77
|
+
export const CONFIG_FILE_NAME = 'apify-test-tools.config.json';
|
|
78
|
+
// Strips a trailing slash so config-declared paths ("actors/shopify/" vs "actors/shopify") compare equal.
|
|
79
|
+
const stripTrailingSlash = (pathValue) => pathValue.replace(/\/+$/, '');
|
|
80
|
+
const findOverlappingContextPaths = (contextPaths) => {
|
|
81
|
+
for (let i = 0; i < contextPaths.length; i++) {
|
|
82
|
+
for (let j = i + 1; j < contextPaths.length; j++) {
|
|
83
|
+
if (isPathWithinScope(contextPaths[i], contextPaths[j]) ||
|
|
84
|
+
isPathWithinScope(contextPaths[j], contextPaths[i])) {
|
|
85
|
+
return [contextPaths[i], contextPaths[j]];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
};
|
|
91
|
+
export const readConfigFile = async (selection) => {
|
|
92
|
+
let raw;
|
|
133
93
|
try {
|
|
134
|
-
|
|
94
|
+
raw = await fs.readFile(CONFIG_FILE_NAME, 'utf-8');
|
|
135
95
|
}
|
|
136
96
|
catch {
|
|
137
|
-
|
|
138
|
-
|
|
97
|
+
throw new Error(`Config file "${CONFIG_FILE_NAME}" not found in the current directory. ` +
|
|
98
|
+
`Please create one with the required actor entries.`);
|
|
139
99
|
}
|
|
140
|
-
let
|
|
100
|
+
let config;
|
|
141
101
|
try {
|
|
142
|
-
|
|
102
|
+
config = JSON.parse(raw);
|
|
143
103
|
}
|
|
144
104
|
catch {
|
|
145
|
-
|
|
146
|
-
|
|
105
|
+
throw new Error(`Config file "${CONFIG_FILE_NAME}" contains invalid JSON.`);
|
|
106
|
+
}
|
|
107
|
+
if (!Array.isArray(config.actors)) {
|
|
108
|
+
throw new Error(`Config file "${CONFIG_FILE_NAME}" must have an "actors" array at the top level.`);
|
|
147
109
|
}
|
|
110
|
+
const seenFolders = new Set();
|
|
148
111
|
const actorConfigs = [];
|
|
149
|
-
for (const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
112
|
+
for (const [index, entry] of config.actors.entries()) {
|
|
113
|
+
if (typeof entry.folder !== 'string') {
|
|
114
|
+
throw new Error(`Invalid "folder" for actor entry at index ${index} in "${CONFIG_FILE_NAME}". ` +
|
|
115
|
+
`Must be a string (use "." for a single-actor repo).`);
|
|
116
|
+
}
|
|
117
|
+
const folder = entry.folder === '.' ? '' : stripTrailingSlash(entry.folder);
|
|
118
|
+
if (seenFolders.has(folder)) {
|
|
119
|
+
throw new Error(`Duplicate folder "${entry.folder}" in "${CONFIG_FILE_NAME}". Each actor must have a unique folder.`);
|
|
120
|
+
}
|
|
121
|
+
seenFolders.add(folder);
|
|
122
|
+
const nameParts = entry.actorFullName?.split('/');
|
|
123
|
+
if (!nameParts || nameParts.length !== 2 || !nameParts[0] || !nameParts[1]) {
|
|
124
|
+
throw new Error(`Invalid "actorFullName" for folder "${entry.folder}" in "${CONFIG_FILE_NAME}". ` +
|
|
125
|
+
`Must be in "owner/name" format (e.g. "apify/web-scraper").`);
|
|
126
|
+
}
|
|
127
|
+
if (entry.overrideActorContext !== undefined) {
|
|
128
|
+
if (!Array.isArray(entry.overrideActorContext) ||
|
|
129
|
+
!entry.overrideActorContext.every((p) => typeof p === 'string')) {
|
|
130
|
+
throw new Error(`Invalid "overrideActorContext" for folder "${entry.folder}" in "${CONFIG_FILE_NAME}". ` +
|
|
131
|
+
`Must be an array of strings.`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const actorJsonPath = folder ? `${folder}/.actor/actor.json` : '.actor/actor.json';
|
|
135
|
+
let actorJson;
|
|
136
|
+
try {
|
|
137
|
+
actorJson = JSON.parse(await fs.readFile(actorJsonPath, 'utf-8'));
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
throw new Error(`Cannot read "${actorJsonPath}". Every actor entry in "${CONFIG_FILE_NAME}" ` +
|
|
141
|
+
`must have a corresponding .actor/actor.json file.`);
|
|
142
|
+
}
|
|
143
|
+
const actorDotDir = folder ? `${folder}/.actor` : '.actor';
|
|
144
|
+
const rawDockerContextDir = actorJson.dockerContextDir ?? '..';
|
|
145
|
+
const resolved = path.resolve(process.cwd(), actorDotDir, rawDockerContextDir);
|
|
146
|
+
const dockerContextDir = path.relative(process.cwd(), resolved);
|
|
147
|
+
if (dockerContextDir.startsWith('..')) {
|
|
148
|
+
throw new Error(`"dockerContextDir" for folder "${entry.folder}" resolves outside the repository root. ` +
|
|
149
|
+
`Resolved path: "${dockerContextDir}".`);
|
|
150
|
+
}
|
|
151
|
+
const normalizedDockerContextDir = dockerContextDir === '.' ? '' : dockerContextDir;
|
|
152
|
+
const contextPaths = (entry.overrideActorContext ?? [normalizedDockerContextDir]).map(stripTrailingSlash);
|
|
153
|
+
// The actor's own folder is always part of its context. When an explicit "overrideActorContext"
|
|
154
|
+
// doesn't already cover it, add it automatically instead of failing the workflow.
|
|
155
|
+
if (!contextPaths.some((contextPath) => isPathWithinScope(folder, contextPath))) {
|
|
156
|
+
contextPaths.push(folder);
|
|
157
|
+
}
|
|
158
|
+
const overlap = findOverlappingContextPaths(contextPaths);
|
|
159
|
+
if (overlap) {
|
|
160
|
+
throw new Error(`Invalid context paths for folder "${entry.folder}" in "${CONFIG_FILE_NAME}": ` +
|
|
161
|
+
`"${overlap[0]}" and "${overlap[1]}" overlap. Context paths must not be prefixes of one another.`);
|
|
153
162
|
}
|
|
154
|
-
const [, folderType, owner, actorName] = match;
|
|
155
163
|
actorConfigs.push({
|
|
156
|
-
|
|
157
|
-
folder
|
|
158
|
-
|
|
164
|
+
actorFullName: entry.actorFullName,
|
|
165
|
+
folder,
|
|
166
|
+
tokenEnvVar: entry.tokenEnvVar,
|
|
167
|
+
dockerContextDir: normalizedDockerContextDir,
|
|
168
|
+
contextPaths,
|
|
159
169
|
});
|
|
160
170
|
}
|
|
161
|
-
|
|
162
|
-
.filter(({ isStandalone }) => !isStandalone)
|
|
163
|
-
.map(({ actorName }) => actorName)
|
|
164
|
-
.join(', ')}`);
|
|
165
|
-
console.error(`Standalone actors in repo: ${actorConfigs
|
|
166
|
-
.filter(({ isStandalone }) => !!isStandalone)
|
|
167
|
-
.map(({ actorName }) => actorName)
|
|
168
|
-
.join(', ')}`);
|
|
169
|
-
return actorConfigs;
|
|
171
|
+
return selectActors(selection, actorConfigs);
|
|
170
172
|
};
|
|
171
173
|
export const setCwd = ({ workspace }) => {
|
|
172
174
|
if (workspace) {
|
package/dist/bin/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/lib.d.ts
CHANGED
|
@@ -4,7 +4,10 @@ import { RunTestResult } from './run-test-result.js';
|
|
|
4
4
|
import type { ActorTestOptions, RunOptions } from './types.js';
|
|
5
5
|
export { ExpectStatic };
|
|
6
6
|
export declare const describe: (name: string, fn?: SuiteFactory<object>, options?: ActorTestOptions) => void;
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* @param actorId - The actor's raw platform ID or its full name (`owner/name`, e.g. `"apify/web-scraper"`).
|
|
9
|
+
*/
|
|
10
|
+
export declare const testActor: <T>(actorId: string, testName: string, fn: TestFunction<{
|
|
8
11
|
run: ReturnType<typeof createStartRunFn<T>>;
|
|
9
12
|
}>, testOptions?: ActorTestOptions) => void;
|
|
10
13
|
/**
|
|
@@ -13,13 +16,16 @@ export declare const testActor: <T>(actorName: string, testName: string, fn: Tes
|
|
|
13
16
|
*
|
|
14
17
|
* Using task is just current shortcoming of standby feature but ideally we would use Actor directly
|
|
15
18
|
*/
|
|
16
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @param actorId - The actor's raw platform ID or its full name (`owner/name`, e.g. `"apify/web-scraper"`).
|
|
21
|
+
*/
|
|
22
|
+
export declare const testStandbyActor: <I = any, O = any>(actorId: string, testName: string, fn: TestFunction<{
|
|
17
23
|
callStandby: ReturnType<typeof createStartStandbyFn<I, O>>;
|
|
18
24
|
}>, testOptions?: ActorTestOptions) => void;
|
|
19
25
|
export declare const testTestActor: <T>(testName: string, fn: TestFunction<{
|
|
20
26
|
run: ReturnType<typeof createStartRunFn<T>>;
|
|
21
27
|
}>) => void;
|
|
22
|
-
export declare const it: <T>(
|
|
28
|
+
export declare const it: <T>(actorId: string, testName: string, fn: TestFunction<{
|
|
23
29
|
run: ReturnType<typeof createStartRunFn<T>>;
|
|
24
30
|
}>, testOptions?: ActorTestOptions) => void;
|
|
25
31
|
/**
|
|
@@ -38,5 +44,5 @@ interface StandbyTask {
|
|
|
38
44
|
standbyUrl: string;
|
|
39
45
|
taskId: string;
|
|
40
46
|
}
|
|
41
|
-
declare const createStartRunFn: <T>(
|
|
47
|
+
declare const createStartRunFn: <T>(actorId: string, testContext: TestContext) => (runOptions: RunOptions<T>) => Promise<RunTestResult>;
|
|
42
48
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/lib/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../lib/lib.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtE,OAAO,EAA8B,YAAY,EAAsB,MAAM,QAAQ,CAAC;AAItF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAc,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuB3E,OAAO,EAAE,YAAY,EAAE,CAAC;AAYxB,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE,UAAS,gBAAuC,SAEjH,CAAC;AAQF,eAAO,MAAM,SAAS,GAAI,CAAC,EACvB,
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../lib/lib.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtE,OAAO,EAA8B,YAAY,EAAsB,MAAM,QAAQ,CAAC;AAItF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAc,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuB3E,OAAO,EAAE,YAAY,EAAE,CAAC;AAYxB,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE,UAAS,gBAAuC,SAEjH,CAAC;AAQF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACvB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,IAAI,YAAY,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,EACjE,cAAc,gBAAgB,SAgBjC,CAAC;AAEF;;;;;GAKG;AACH;;GAEG;AAEH,eAAO,MAAM,gBAAgB,GAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAC7C,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,IAAI,YAAY,CAAC;IAAE,WAAW,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,EAChF,cAAc,gBAAgB,SA+BjC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,EAC3B,UAAU,MAAM,EAChB,IAAI,YAAY,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,SAYpE,CAAC;AAEF,eAAO,MAAM,EAAE,GArFW,CAAC,WACd,MAAM,YACL,MAAM,MACZ,YAAY,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,gBACnD,gBAAgB,SAiFP,CAAC;AAE5B;;;GAGG;AACH,QAAA,MAAM,oBAAoB,GAAI,CAAC,EAAE,CAAC,EAAE,aAAa,WAAW,EAAE,cAAc,WAAW,EAAE,UAAU,MAAM,MAmBvF,2BAIX,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;;;;EAmBxF,CAAC;AAEF,UAAU,WAAW;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AA6DD,QAAA,MAAM,gBAAgB,GAAI,CAAC,EAAE,SAAS,MAAM,EAAE,aAAa,WAAW,MAKpD,YAAY,UAAU,CAAC,CAAC,CAAC,2BAiC1C,CAAC"}
|
package/dist/lib/lib.js
CHANGED
|
@@ -19,8 +19,8 @@ catch (err) {
|
|
|
19
19
|
throw new Error(`Failed to parse actor builds: ${err}`);
|
|
20
20
|
}
|
|
21
21
|
const config = actorBuilds.reduce((map, cfg) => {
|
|
22
|
-
map.set(cfg.
|
|
23
|
-
map.set(cfg.
|
|
22
|
+
map.set(cfg.actorFullName, cfg);
|
|
23
|
+
map.set(cfg.actorRawId, cfg);
|
|
24
24
|
return map;
|
|
25
25
|
}, new Map());
|
|
26
26
|
const { TESTER_APIFY_TOKEN, RUN_PLATFORM_TESTS, RUN_ALL_PLATFORM_TESTS } = process.env;
|
|
@@ -39,18 +39,21 @@ const DEFAULT_TEST_ACTOR_OPTIONS = {
|
|
|
39
39
|
// prevent orphaned runs
|
|
40
40
|
timeout: DEFAULT_TEST_RUN_DURATION_MS,
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* @param actorId - The actor's raw platform ID or its full name (`owner/name`, e.g. `"apify/web-scraper"`).
|
|
44
|
+
*/
|
|
45
|
+
export const testActor = (actorId, testName, fn, testOptions) => {
|
|
43
46
|
const options = {
|
|
44
47
|
...DEFAULT_TEST_ACTOR_OPTIONS,
|
|
45
48
|
...testOptions,
|
|
46
49
|
};
|
|
47
|
-
const name = `${
|
|
48
|
-
const shouldRun = !!RUN_ALL_PLATFORM_TESTS || config.has(
|
|
50
|
+
const name = `${actorId}: ${testName}`;
|
|
51
|
+
const shouldRun = !!RUN_ALL_PLATFORM_TESTS || config.has(actorId);
|
|
49
52
|
vitestTest.runIf(shouldRun)(name, options, async (context) => {
|
|
50
53
|
const { expect, ...rest } = context;
|
|
51
54
|
await fn({
|
|
52
55
|
expect: extendExpect(expect),
|
|
53
|
-
run: createStartRunFn(
|
|
56
|
+
run: createStartRunFn(actorId, context),
|
|
54
57
|
...rest,
|
|
55
58
|
});
|
|
56
59
|
});
|
|
@@ -61,16 +64,19 @@ export const testActor = (actorName, testName, fn, testOptions) => {
|
|
|
61
64
|
*
|
|
62
65
|
* Using task is just current shortcoming of standby feature but ideally we would use Actor directly
|
|
63
66
|
*/
|
|
67
|
+
/**
|
|
68
|
+
* @param actorId - The actor's raw platform ID or its full name (`owner/name`, e.g. `"apify/web-scraper"`).
|
|
69
|
+
*/
|
|
64
70
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
|
-
export const testStandbyActor = (
|
|
71
|
+
export const testStandbyActor = (actorId, testName, fn, testOptions) => {
|
|
66
72
|
const options = {
|
|
67
73
|
...DEFAULT_TEST_ACTOR_OPTIONS,
|
|
68
74
|
...testOptions,
|
|
69
75
|
};
|
|
70
|
-
const name = `${
|
|
71
|
-
const shouldRun = !!RUN_ALL_PLATFORM_TESTS || config.has(
|
|
76
|
+
const name = `${actorId}: ${testName}`;
|
|
77
|
+
const shouldRun = !!RUN_ALL_PLATFORM_TESTS || config.has(actorId);
|
|
72
78
|
vitestTest.runIf(shouldRun)(name, options, async (context) => {
|
|
73
|
-
const standbyTask = await createStandbyTask(
|
|
79
|
+
const standbyTask = await createStandbyTask(actorId, config.get(actorId)?.buildNumber);
|
|
74
80
|
const { expect, ...rest } = context;
|
|
75
81
|
// NOTE: we wrap `fn` in try/finally so cleanup (deleting the task) always runs afterwards
|
|
76
82
|
try {
|
|
@@ -149,17 +155,17 @@ const createStartStandbyFn = (standbyTask, { annotate }, testName) => {
|
|
|
149
155
|
*
|
|
150
156
|
* @throws if actor doesn't exist or it doesn't support standby mode.
|
|
151
157
|
*/
|
|
152
|
-
const createStandbyTask = async (
|
|
153
|
-
const actor = apifyClient.actor(
|
|
158
|
+
const createStandbyTask = async (actorId, buildNumber) => {
|
|
159
|
+
const actor = apifyClient.actor(actorId);
|
|
154
160
|
const actorInfo = (await actor.get());
|
|
155
161
|
if (!actorInfo) {
|
|
156
|
-
throw new Error(`Actor "${
|
|
162
|
+
throw new Error(`Actor "${actorId}" not found`);
|
|
157
163
|
}
|
|
158
164
|
if (!actorInfo.standbyUrl) {
|
|
159
|
-
throw new Error(`Actor "${
|
|
165
|
+
throw new Error(`Actor "${actorId}" doesn't support standby mode`);
|
|
160
166
|
}
|
|
161
167
|
if (!actorInfo.actorStandby) {
|
|
162
|
-
throw new Error(`Actor "${
|
|
168
|
+
throw new Error(`Actor "${actorId} doesn't contain actorStandby options`);
|
|
163
169
|
}
|
|
164
170
|
const { isEnabled, ...defaultActorStandby } = actorInfo.actorStandby;
|
|
165
171
|
delete defaultActorStandby.disableStandbyFieldsOverride;
|
|
@@ -175,9 +181,9 @@ const createStandbyTask = async (actorNameOrId, buildNumber) => {
|
|
|
175
181
|
const randomValue = Math.random().toString(10).slice(2).padEnd(randomValueLength, '0');
|
|
176
182
|
const name = `test-${randomValue.slice(0, randomValueLength)}`;
|
|
177
183
|
const newTask = (await apifyClient.tasks().create({
|
|
178
|
-
actId:
|
|
184
|
+
actId: actorId,
|
|
179
185
|
actorStandby: actorStandbyOptions,
|
|
180
|
-
description: `Task for testing standby version ${build} of actor "${
|
|
186
|
+
description: `Task for testing standby version ${build} of actor "${actorId}"`,
|
|
181
187
|
title,
|
|
182
188
|
name,
|
|
183
189
|
}));
|
|
@@ -194,9 +200,9 @@ const createStandbyTask = async (actorNameOrId, buildNumber) => {
|
|
|
194
200
|
throw new Error(`Failed to create task: ${error}`);
|
|
195
201
|
}
|
|
196
202
|
};
|
|
197
|
-
const createStartRunFn = (
|
|
203
|
+
const createStartRunFn = (actorId, testContext) => {
|
|
198
204
|
const { annotate, task } = testContext;
|
|
199
|
-
const actorConfig = config.get(
|
|
205
|
+
const actorConfig = config.get(actorId);
|
|
200
206
|
const build = actorConfig?.buildNumber;
|
|
201
207
|
const buildId = actorConfig?.buildId;
|
|
202
208
|
return async (runOptions) => {
|
|
@@ -208,9 +214,9 @@ const createStartRunFn = (actorNameOrId, testContext) => {
|
|
|
208
214
|
}
|
|
209
215
|
return new RunTestResult(apifyClient, run);
|
|
210
216
|
}
|
|
211
|
-
const actor = apifyClient.actor(
|
|
217
|
+
const actor = apifyClient.actor(actorId);
|
|
212
218
|
const actorInput = {
|
|
213
|
-
...(prefilledInput && (await getActorPrefilledInput(apifyClient,
|
|
219
|
+
...(prefilledInput && (await getActorPrefilledInput(apifyClient, actorId, buildId))),
|
|
214
220
|
...input,
|
|
215
221
|
};
|
|
216
222
|
const run = await actor.call(actorInput, { build, log: null, ...options });
|
|
@@ -220,7 +226,7 @@ const createStartRunFn = (actorNameOrId, testContext) => {
|
|
|
220
226
|
task.meta = {
|
|
221
227
|
runId: run.id,
|
|
222
228
|
runLink,
|
|
223
|
-
|
|
229
|
+
actorId: actorConfig?.actorFullName ?? actorId,
|
|
224
230
|
};
|
|
225
231
|
// waiting for dataset and statistics to sync, the Apify platform is only eventually consistent.
|
|
226
232
|
await sleep(DATASET_SYNC_DELAY_MS);
|
package/dist/lib/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../lib/lib.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAgB,IAAI,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEtF,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,YAAY,GAAG,cAAc,CAAC;AACpC,IAAI,WAAW,GAAiB,EAAE,CAAC;AACnC,IAAI,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,cAAc,EAAE,CAAC;QACjB,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,kDAAkD,OAAO,WAAW,EAAE,CAAC,CAAC;QAC3G,CAAC;IACL,CAAC;AACL,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACpE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../lib/lib.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ import type { ActorCallOptions } from 'apify-client';
|
|
|
2
2
|
import type { Assertion, TestOptions } from 'vitest';
|
|
3
3
|
export type ActorBuild = {
|
|
4
4
|
buildId: string;
|
|
5
|
-
|
|
5
|
+
actorRawId: string;
|
|
6
6
|
buildNumber: string;
|
|
7
|
-
|
|
7
|
+
actorFullName: string;
|
|
8
8
|
};
|
|
9
9
|
export type RunOptions<T> = {
|
|
10
10
|
input: Omit<T, 'actorName'>;
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ import type { ApifyClient } from 'apify-client';
|
|
|
3
3
|
* Gets prefilled values for a provided build or, if not provided, uses actor's
|
|
4
4
|
* default build (this is usually `latest`).
|
|
5
5
|
*/
|
|
6
|
-
export declare const getActorPrefilledInput: (apifyClient: ApifyClient,
|
|
6
|
+
export declare const getActorPrefilledInput: (apifyClient: ApifyClient, actorId: string, buildId: string | undefined) => Promise<Record<string, unknown>>;
|
|
7
7
|
export declare const sleep: (ms: number) => Promise<void>;
|
|
8
8
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAC/B,aAAa,WAAW,EACxB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAC/B,aAAa,WAAW,EACxB,SAAS,MAAM,EACf,SAAS,MAAM,GAAG,SAAS,qCA0C9B,CAAC;AAEF,eAAO,MAAM,KAAK,GAAU,IAAI,MAAM,kBAIrC,CAAC"}
|
package/dist/lib/utils.js
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
* Gets prefilled values for a provided build or, if not provided, uses actor's
|
|
3
3
|
* default build (this is usually `latest`).
|
|
4
4
|
*/
|
|
5
|
-
export const getActorPrefilledInput = async (apifyClient,
|
|
5
|
+
export const getActorPrefilledInput = async (apifyClient, actorId, buildId) => {
|
|
6
6
|
if (!buildId) {
|
|
7
|
-
const actorInfo = await apifyClient.actor(
|
|
7
|
+
const actorInfo = await apifyClient.actor(actorId).get();
|
|
8
8
|
const defaultBuildTag = actorInfo?.defaultRunOptions.build;
|
|
9
9
|
const taggedBuild = actorInfo?.taggedBuilds?.[defaultBuildTag || ''];
|
|
10
10
|
// eslint-disable-next-line no-param-reassign --- I think here it is cleaner than creating dummy variable
|
|
11
11
|
buildId = taggedBuild?.buildId;
|
|
12
12
|
if (!buildId) {
|
|
13
|
-
console.error(`Coudn't find default build for actor ${
|
|
13
|
+
console.error(`Coudn't find default build for actor ${actorId}. Prefilled values will not be used.`);
|
|
14
14
|
return {};
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
const buildInfo = await apifyClient.build(buildId).get();
|
|
18
18
|
const inputSchema = buildInfo?.actorDefinition?.input;
|
|
19
19
|
if (!inputSchema) {
|
|
20
|
-
console.error(`Coudn't find input schema definition for actor ${
|
|
20
|
+
console.error(`Coudn't find input schema definition for actor ${actorId}, build ${buildId}.`, 'Prefilled values will not be used');
|
|
21
21
|
return {};
|
|
22
22
|
}
|
|
23
23
|
const prefill = {};
|
package/dist/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACvC,WAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACvC,WAAwB,EACxB,OAAe,EACf,OAA2B,EAC7B,EAAE;IACA,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;QAEzD,MAAM,eAAe,GAAG,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC;QAE3D,MAAM,WAAW,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;QACrE,yGAAyG;QACzG,OAAO,GAAG,WAAW,EAAE,OAAO,CAAC;QAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wCAAwC,OAAO,sCAAsC,CAAC,CAAC;YACrG,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAEzD,MAAM,WAAW,GAAG,SAAS,EAAE,eAAe,EAAE,KAIjC,CAAC;IAEhB,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACT,kDAAkD,OAAO,WAAW,OAAO,GAAG,EAC9E,mCAAmC,CACtC,CAAC;QACF,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACjF,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;QAClD,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;IACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC1B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-filtering.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/bin/actor-filtering.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { selectActors } from '../../../bin/actor-filtering.js';
|
|
3
|
+
const actor = (actorFullName) => ({
|
|
4
|
+
actorFullName,
|
|
5
|
+
folder: actorFullName.split('/')[1],
|
|
6
|
+
tokenEnvVar: 'TOKEN',
|
|
7
|
+
dockerContextDir: '.',
|
|
8
|
+
contextPaths: [],
|
|
9
|
+
});
|
|
10
|
+
const configs = [actor('owner/a'), actor('owner/b'), actor('owner/c')];
|
|
11
|
+
const names = (result) => result.map((c) => c.actorFullName);
|
|
12
|
+
describe('selectActors', () => {
|
|
13
|
+
it('returns all actors when neither filter is set', () => {
|
|
14
|
+
expect(names(selectActors({ actors: [], ignore: [] }, configs))).toStrictEqual([
|
|
15
|
+
'owner/a',
|
|
16
|
+
'owner/b',
|
|
17
|
+
'owner/c',
|
|
18
|
+
]);
|
|
19
|
+
});
|
|
20
|
+
it('keeps only the actors listed in --actors', () => {
|
|
21
|
+
expect(names(selectActors({ actors: ['owner/a', 'owner/c'], ignore: [] }, configs))).toStrictEqual([
|
|
22
|
+
'owner/a',
|
|
23
|
+
'owner/c',
|
|
24
|
+
]);
|
|
25
|
+
});
|
|
26
|
+
it('drops the actors listed in --ignore', () => {
|
|
27
|
+
expect(names(selectActors({ actors: [], ignore: ['owner/b'] }, configs))).toStrictEqual(['owner/a', 'owner/c']);
|
|
28
|
+
});
|
|
29
|
+
it('applies --actors first, then removes --ignore from that subset', () => {
|
|
30
|
+
expect(names(selectActors({ actors: ['owner/a', 'owner/b'], ignore: ['owner/b'] }, configs))).toStrictEqual([
|
|
31
|
+
'owner/a',
|
|
32
|
+
]);
|
|
33
|
+
});
|
|
34
|
+
it('can select down to nothing when --actors and --ignore overlap fully', () => {
|
|
35
|
+
expect(selectActors({ actors: ['owner/a'], ignore: ['owner/a'] }, configs)).toStrictEqual([]);
|
|
36
|
+
});
|
|
37
|
+
it('throws listing every unknown name across both filters', () => {
|
|
38
|
+
expect(() => selectActors({ actors: ['owner/x'], ignore: ['owner/y'] }, configs)).toThrow('The following actors from the filter config do not exist: owner/x, owner/y');
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=actor-filtering.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-filtering.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/actor-filtering.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,MAAM,KAAK,GAAG,CAAC,aAAqB,EAAe,EAAE,CAAC,CAAC;IACnD,aAAa;IACb,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,WAAW,EAAE,OAAO;IACpB,gBAAgB,EAAE,GAAG;IACrB,YAAY,EAAE,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACvE,MAAM,KAAK,GAAG,CAAC,MAAqB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAE5E,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC3E,SAAS;YACT,SAAS;YACT,SAAS;SACZ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/F,SAAS;YACT,SAAS;SACZ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACpH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACxG,SAAS;SACZ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CACrF,4EAA4E,CAC/E,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|