apify-test-tools 0.9.1-beta.11 → 0.9.1-beta.13
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/.github/workflows/public_push-build-latest.yaml +3 -1
- package/.github/workflows-package-version +1 -1
- package/CHANGELOG.md +1 -0
- package/CONTRIBUTING.md +2 -4
- package/README.md +68 -8
- package/bin/build-from-local.ts +2 -2
- package/bin/build.ts +114 -70
- package/bin/git.ts +140 -0
- package/bin/main.ts +128 -91
- package/bin/slack.ts +5 -2
- package/bin/types.ts +0 -73
- package/bin/utils.ts +2 -3
- package/dist/bin/build-from-local.js.map +1 -1
- package/dist/bin/build.d.ts +25 -4
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +76 -47
- package/dist/bin/build.js.map +1 -1
- package/dist/bin/git.d.ts +40 -0
- package/dist/bin/git.d.ts.map +1 -1
- package/dist/bin/git.js +118 -0
- package/dist/bin/git.js.map +1 -1
- package/dist/bin/main.d.ts +1 -20
- package/dist/bin/main.d.ts.map +1 -1
- package/dist/bin/main.js +65 -62
- package/dist/bin/main.js.map +1 -1
- package/dist/bin/slack.d.ts.map +1 -1
- package/dist/bin/slack.js +4 -2
- package/dist/bin/slack.js.map +1 -1
- package/dist/bin/types.d.ts +0 -64
- package/dist/bin/types.d.ts.map +1 -1
- package/dist/bin/utils.d.ts.map +1 -1
- package/dist/bin/utils.js +2 -3
- package/dist/bin/utils.js.map +1 -1
- package/dist/test/unit/bin/build.test.d.ts +2 -0
- package/dist/test/unit/bin/build.test.d.ts.map +1 -0
- package/dist/test/unit/bin/build.test.js +46 -0
- package/dist/test/unit/bin/build.test.js.map +1 -0
- package/dist/test/unit/bin/git.test.js +104 -1
- package/dist/test/unit/bin/git.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/test/unit/bin/build.test.ts +68 -0
- package/test/unit/bin/git.test.ts +122 -0
- package/bin/github.ts +0 -69
- package/dist/bin/github.d.ts +0 -11
- package/dist/bin/github.d.ts.map +0 -1
- package/dist/bin/github.js +0 -59
- package/dist/bin/github.js.map +0 -1
package/dist/bin/main.js
CHANGED
|
@@ -6,52 +6,51 @@ import { hideBin } from 'yargs/helpers';
|
|
|
6
6
|
import { deleteOldBuilds, runBuilds } from './build.js';
|
|
7
7
|
import { runBuildsFromLocal } from './build-from-local.js';
|
|
8
8
|
import { getChangedActors } from './diff-changes.js';
|
|
9
|
-
import { getBranchOnlyChangedFiles, getChangedFiles, getCommits, hasMergeFromTarget } from './git.js';
|
|
10
|
-
import { getPushData } from './github.js';
|
|
9
|
+
import { getBranchOnlyChangedFiles, getChangedFiles, getCommits, getCurrentBranch, getReleaseChanges, getRepoName, hasMergeFromTarget, resolveReleaseBaseCommit, resolveRepoUrl, } from './git.js';
|
|
11
10
|
import { notifyToSlack } from './slack.js';
|
|
12
11
|
import { reportTestResults } from './test-report.js';
|
|
13
|
-
import { setCwd
|
|
12
|
+
import { setCwd } from './utils.js';
|
|
14
13
|
import { readConfigFile } from './utils/config/load-config.js';
|
|
15
14
|
/**
|
|
16
15
|
* Middlewares to be run before every command execution
|
|
17
16
|
*/
|
|
18
17
|
const middlewares = [setCwd];
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
18
|
+
/*
|
|
19
|
+
* Option groups shared across commands. Each is a plain object passed to `.options()`, so a command's
|
|
20
|
+
* builder composes them by chaining (`y.options(gitRangeOptions).options(actorSelectionOptions)`)
|
|
21
|
+
* instead of nesting wrapper functions. `as const` keeps literals like `demandOption: true` so yargs
|
|
22
|
+
* can infer non-optional types; `satisfies` validates the shape without widening it.
|
|
23
|
+
*/
|
|
24
|
+
/** Commit range to inspect: everything on `source-branch` since it diverged from `target-branch`. */
|
|
25
|
+
const gitRangeOptions = {
|
|
26
|
+
'target-branch': { type: 'string', demandOption: true },
|
|
27
|
+
'source-branch': { type: 'string', demandOption: true },
|
|
28
|
+
'base-commit': { type: 'string', demandOption: false },
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Where to build the Actors from. Defaults to the `origin` remote, which is then checked against each
|
|
32
|
+
* Actor's default version. Passing it explicitly skips that check (see assertRepoUrlMatchesDefaultVersion).
|
|
33
|
+
*/
|
|
34
|
+
const repoUrlOptions = {
|
|
35
|
+
'repo-url': { type: 'string' },
|
|
37
36
|
};
|
|
38
37
|
/**
|
|
39
38
|
* Actor-selection flags, applied to every command that reads the actor config so a caller can
|
|
40
39
|
* narrow the set it operates on (e.g. two-stage releases: `--ignore X`, then `--actors X`).
|
|
41
|
-
* Kept separate from `
|
|
40
|
+
* Kept separate from `gitRangeOptions` so the read-only git commands don't advertise flags they ignore.
|
|
42
41
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
42
|
+
const actorSelectionOptions = {
|
|
43
|
+
actors: { type: 'string', array: true, default: [] },
|
|
44
|
+
ignore: { type: 'string', array: true, default: [] },
|
|
45
|
+
};
|
|
46
|
+
/** Flags for commands that trigger Apify builds. */
|
|
47
|
+
const buildOptions = {
|
|
48
|
+
'use-docker-cache': { type: 'boolean', default: false },
|
|
49
|
+
};
|
|
50
|
+
/** Global flags, available to every command. */
|
|
51
|
+
const globalOptions = {
|
|
52
|
+
'dry-run': { type: 'boolean', default: false },
|
|
53
|
+
workspace: { type: 'string' },
|
|
55
54
|
};
|
|
56
55
|
const resolveChangedActors = async (config, { isLatest }) => {
|
|
57
56
|
const actorConfigs = await readConfigFile(config);
|
|
@@ -83,51 +82,42 @@ const resolveChangedActors = async (config, { isLatest }) => {
|
|
|
83
82
|
};
|
|
84
83
|
await yargs()
|
|
85
84
|
.scriptName('public-actors-utils')
|
|
86
|
-
.
|
|
87
|
-
type: 'boolean',
|
|
88
|
-
default: false,
|
|
89
|
-
})
|
|
90
|
-
.option('workspace', {
|
|
91
|
-
type: 'string',
|
|
92
|
-
})
|
|
85
|
+
.options(globalOptions)
|
|
93
86
|
.middleware(middlewares)
|
|
94
|
-
.command('get-commits', '',
|
|
87
|
+
.command('get-commits', '', (y) => y.options(gitRangeOptions), (args) => {
|
|
95
88
|
const commits = getCommits(args);
|
|
96
89
|
console.log(JSON.stringify(commits));
|
|
97
90
|
})
|
|
98
|
-
.command('get-latest-commit', '',
|
|
91
|
+
.command('get-latest-commit', '', (y) => y.options(gitRangeOptions), (args) => {
|
|
99
92
|
const commits = getCommits(args);
|
|
100
93
|
if (commits.length > 0) {
|
|
101
94
|
console.log(JSON.stringify(commits[commits.length - 1]));
|
|
102
95
|
}
|
|
103
96
|
})
|
|
104
|
-
.command('get-changed-files', '',
|
|
97
|
+
.command('get-changed-files', '', (y) => y.options(gitRangeOptions), (args) => {
|
|
105
98
|
const commits = getCommits(args);
|
|
106
99
|
const changedFiles = getChangedFiles(commits);
|
|
107
100
|
console.log(JSON.stringify(changedFiles));
|
|
108
101
|
})
|
|
109
|
-
.command('get-actor-configs', '', actorSelectionOptions, async ({ actors, ignore }) => {
|
|
102
|
+
.command('get-actor-configs', '', (y) => y.options(actorSelectionOptions), async ({ actors, ignore }) => {
|
|
110
103
|
const actorConfigs = await readConfigFile({ actors, ignore });
|
|
111
104
|
console.log(JSON.stringify(actorConfigs));
|
|
112
105
|
})
|
|
113
|
-
.command('get-affected-actors', '', (
|
|
106
|
+
.command('get-affected-actors', '', (y) => y.options(gitRangeOptions).options(actorSelectionOptions), async (config) => {
|
|
114
107
|
const actorsChanged = await resolveChangedActors(config, { isLatest: false });
|
|
115
108
|
console.log(JSON.stringify(actorsChanged));
|
|
116
109
|
})
|
|
117
|
-
.command('report-tests', '', (
|
|
110
|
+
.command('report-tests', '', (y) => y
|
|
118
111
|
.option('report-file', { type: 'string', demandOption: true })
|
|
119
112
|
.option('report-slack-channel', { type: 'string' })
|
|
120
113
|
.option('job-url', { type: 'string' })
|
|
121
114
|
.option('workflow-name', { type: 'string' }), async (args) => {
|
|
122
115
|
await reportTestResults(args);
|
|
123
116
|
})
|
|
124
|
-
.command('build', '', (
|
|
117
|
+
.command('build', '', (y) => y.options(gitRangeOptions).options(actorSelectionOptions).options(buildOptions).options(repoUrlOptions), async (config) => {
|
|
125
118
|
const actorsChanged = await resolveChangedActors(config, { isLatest: false });
|
|
126
|
-
// https://github.com/apify-store/google-maps#:actors/lukaskrivka_google-maps-with-contact-details
|
|
127
|
-
// git@github.com:apify-store/google-maps#:actors/lukaskrivka_google-maps-with-contact-details
|
|
128
|
-
const repoUrl = spawnCommandInGhWorkspace(`git remote get-url origin`).replace(/^https:\/\/github\.com\//, 'git@github.com:');
|
|
129
119
|
const builds = await runBuilds({
|
|
130
|
-
repoUrl,
|
|
120
|
+
...resolveRepoUrl(config.repoUrl),
|
|
131
121
|
actorConfigs: actorsChanged,
|
|
132
122
|
branch: config.sourceBranch.replace('origin/', ''),
|
|
133
123
|
dryRun: config.dryRun,
|
|
@@ -135,13 +125,24 @@ await yargs()
|
|
|
135
125
|
});
|
|
136
126
|
console.log(JSON.stringify(builds));
|
|
137
127
|
})
|
|
138
|
-
.command('release', '', (
|
|
139
|
-
.
|
|
140
|
-
.
|
|
128
|
+
.command('release', '', (y) => y
|
|
129
|
+
.options(actorSelectionOptions)
|
|
130
|
+
.options(buildOptions)
|
|
131
|
+
.options(repoUrlOptions)
|
|
132
|
+
// The last commit that is already released, everything after it up to HEAD gets released.
|
|
133
|
+
// Required, see the README section "Releasing Actors" for how to set it for each merge strategy.
|
|
134
|
+
.option('base-commit', { type: 'string', demandOption: true })
|
|
141
135
|
.option('report-slack-channel', { type: 'string' })
|
|
142
|
-
.option('release-slack-channel', { type: 'string' })
|
|
143
|
-
|
|
144
|
-
const
|
|
136
|
+
.option('release-slack-channel', { type: 'string' }), async (args) => {
|
|
137
|
+
const baseSha = resolveReleaseBaseCommit(args.baseCommit);
|
|
138
|
+
const branch = getCurrentBranch();
|
|
139
|
+
const changes = getReleaseChanges(baseSha);
|
|
140
|
+
if (!changes) {
|
|
141
|
+
console.error(`HEAD is the base commit ${baseSha}, there is nothing new to release`);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const { commits, changedFiles, changelog } = changes;
|
|
145
|
+
const { repoUrl, shouldVerifyRepoUrl } = resolveRepoUrl(args.repoUrl);
|
|
145
146
|
const isLatest = true;
|
|
146
147
|
const actorConfigs = await readConfigFile(args);
|
|
147
148
|
const actorsChanged = getChangedActors({
|
|
@@ -154,6 +155,7 @@ await yargs()
|
|
|
154
155
|
const builds = await runBuilds({
|
|
155
156
|
isLatest,
|
|
156
157
|
repoUrl,
|
|
158
|
+
shouldVerifyRepoUrl,
|
|
157
159
|
actorConfigs: actorsChanged,
|
|
158
160
|
branch,
|
|
159
161
|
dryRun,
|
|
@@ -164,19 +166,20 @@ await yargs()
|
|
|
164
166
|
changedFiles,
|
|
165
167
|
commits,
|
|
166
168
|
changelog,
|
|
167
|
-
repository,
|
|
169
|
+
repository: getRepoName(repoUrl),
|
|
168
170
|
dryRun,
|
|
169
|
-
|
|
171
|
+
// The newest commit, same as the pushed head commit
|
|
172
|
+
author: commits[commits.length - 1].author,
|
|
170
173
|
reportSlackChannel,
|
|
171
174
|
releaseSlackChannel,
|
|
172
175
|
});
|
|
173
176
|
})
|
|
174
|
-
.command('build-from-local', '', (
|
|
177
|
+
.command('build-from-local', '', (y) => y.options(actorSelectionOptions), async ({ actors, ignore, dryRun }) => {
|
|
175
178
|
const actorConfigs = await readConfigFile({ actors, ignore });
|
|
176
179
|
const builds = await runBuildsFromLocal({ actorConfigs, dryRun });
|
|
177
180
|
console.log(JSON.stringify(builds));
|
|
178
181
|
})
|
|
179
|
-
.command('delete-old-builds', '', actorSelectionOptions, async ({ actors, ignore }) => {
|
|
182
|
+
.command('delete-old-builds', '', (y) => y.options(actorSelectionOptions), async ({ actors, ignore }) => {
|
|
180
183
|
const actorConfigs = await readConfigFile({ actors, ignore });
|
|
181
184
|
await deleteOldBuilds(actorConfigs);
|
|
182
185
|
})
|
package/dist/bin/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../bin/main.ts"],"names":[],"mappings":";AAEA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../bin/main.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/slack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAKF,eAAO,MAAM,aAAa,GAAU,4GASjC,oBAAoB,kBA4CtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,SAAS,MAAM,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,OAAO,MAAM,kBAUpG,CAAC"}
|
package/dist/bin/slack.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { WebClient } from '@slack/web-api';
|
|
2
2
|
import { getEnvVar } from './utils.js';
|
|
3
|
+
// Git authors come as "Name<email>", Slack only needs the name
|
|
4
|
+
const displayName = (author) => author.replace(/\s*<[^>]*>$/, '');
|
|
3
5
|
export const notifyToSlack = async ({ changedFiles, commits, changelog, repository, dryRun, author, releaseSlackChannel, reportSlackChannel, }) => {
|
|
4
6
|
const slack = new WebClient(getEnvVar('SLACK_TOKEN_RELEASES_BOT'));
|
|
5
7
|
if (!changelog) {
|
|
6
8
|
console.warn('No new changelog entries found, did you forget to update it?');
|
|
7
9
|
}
|
|
8
|
-
let shortMessage = `*${repository}* – New release (by ${author}):\n\n`;
|
|
10
|
+
let shortMessage = `*${repository}* – New release (by ${displayName(author)}):\n\n`;
|
|
9
11
|
// This one is just for broader public that only cares about public facing changes
|
|
10
12
|
if (changelog && releaseSlackChannel) {
|
|
11
13
|
shortMessage += `*Additions to the changelog*:\n\n${changelog}\n`;
|
|
@@ -20,7 +22,7 @@ export const notifyToSlack = async ({ changedFiles, commits, changelog, reposito
|
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
24
|
const commitsMessage = `${commits
|
|
23
|
-
.map(({ author: commitAuthor, message }, index) => `${index + 1}. Commit message: ${message}\n\tAuthor: ${commitAuthor}.`)
|
|
25
|
+
.map(({ author: commitAuthor, message }, index) => `${index + 1}. Commit message: ${message}\n\tAuthor: ${displayName(commitAuthor)}.`)
|
|
24
26
|
.join('\n')}`;
|
|
25
27
|
const changedFilesMessage = `*Files changed*: ${changedFiles.map((file) => `\`${file}\``).join(', ')}`;
|
|
26
28
|
const longMessage = `${shortMessage}\n*Commit list*:\n${commitsMessage}\n\n${changedFilesMessage}`;
|
package/dist/bin/slack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAavC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,EAChC,YAAY,EACZ,OAAO,EACP,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,mBAAmB,EACnB,kBAAkB,GACC,EAAE,EAAE;IACvB,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEnE,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,YAAY,GAAG,IAAI,UAAU,uBAAuB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../bin/slack.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/types.d.ts
CHANGED
|
@@ -12,70 +12,6 @@ export type Commit = {
|
|
|
12
12
|
date: string;
|
|
13
13
|
message: string;
|
|
14
14
|
};
|
|
15
|
-
export interface GitHubHeadCommit {
|
|
16
|
-
added: string[];
|
|
17
|
-
removed: string[];
|
|
18
|
-
modified: string[];
|
|
19
|
-
author: {
|
|
20
|
-
name: string;
|
|
21
|
-
};
|
|
22
|
-
message: string;
|
|
23
|
-
id: string;
|
|
24
|
-
}
|
|
25
|
-
export interface Repository {
|
|
26
|
-
full_name: string;
|
|
27
|
-
name: string;
|
|
28
|
-
ssh_url: string;
|
|
29
|
-
owner: {
|
|
30
|
-
login: string;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
export type GitHubEvent = GitHubEventPullRequest | GitHubEventPush;
|
|
34
|
-
export interface GitHubEventPullRequest {
|
|
35
|
-
type: 'pull_request';
|
|
36
|
-
pull_request: {
|
|
37
|
-
number: number;
|
|
38
|
-
base: {
|
|
39
|
-
ref: string;
|
|
40
|
-
sha: string;
|
|
41
|
-
};
|
|
42
|
-
head: {
|
|
43
|
-
ref: string;
|
|
44
|
-
sha: string;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
repository: Repository;
|
|
48
|
-
}
|
|
49
|
-
export interface GitHubEventPush {
|
|
50
|
-
type: 'push';
|
|
51
|
-
head_commit: GitHubHeadCommit;
|
|
52
|
-
repository: Repository;
|
|
53
|
-
ref: string;
|
|
54
|
-
commits: GithubCommit[];
|
|
55
|
-
before: string;
|
|
56
|
-
after: string;
|
|
57
|
-
}
|
|
58
|
-
export interface GithubCommit {
|
|
59
|
-
id: string;
|
|
60
|
-
tree_id: string;
|
|
61
|
-
distinct: boolean;
|
|
62
|
-
message: string;
|
|
63
|
-
timestamp: string;
|
|
64
|
-
url: string;
|
|
65
|
-
author: {
|
|
66
|
-
name: string;
|
|
67
|
-
email: string;
|
|
68
|
-
username: string;
|
|
69
|
-
};
|
|
70
|
-
committer: {
|
|
71
|
-
name: string;
|
|
72
|
-
email: string;
|
|
73
|
-
username: string;
|
|
74
|
-
};
|
|
75
|
-
added: string[];
|
|
76
|
-
removed: string[];
|
|
77
|
-
modified: string[];
|
|
78
|
-
}
|
|
79
15
|
export interface BuildData {
|
|
80
16
|
buildId: string;
|
|
81
17
|
actorRawId: string;
|
package/dist/bin/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../bin/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../bin/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B"}
|
package/dist/bin/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,EAAE,YAAY,MAAM,KAAG,OACZ,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,EAY1E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,eAAe,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,CAetE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,eAAO,MAAM,cAAc,GAAU,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,UAAU,CAGxF,CAAC;AAEH,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,EAAE,OAAM,MAAM,EAAO,WAgB7E,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,EAAE,eAAe,MAAM,KAAG,MAMlE,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,EAAE,YAAY,MAAM,KAAG,OACZ,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,EAY1E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,eAAe,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,CAetE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,eAAO,MAAM,cAAc,GAAU,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,UAAU,CAGxF,CAAC;AAEH,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,EAAE,OAAM,MAAM,EAAO,WAgB7E,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,EAAE,eAAe,MAAM,KAAG,MAMlE,CAAC;AAIF,eAAO,MAAM,MAAM,GAAI,eAAe;IAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,SAItE,CAAC"}
|
package/dist/bin/utils.js
CHANGED
|
@@ -67,12 +67,11 @@ export const getEnvVar = (varName, defaultValue) => {
|
|
|
67
67
|
}
|
|
68
68
|
return value;
|
|
69
69
|
};
|
|
70
|
+
// Commands expect to run from the repository root (config file and Actor folders are relative to it).
|
|
71
|
+
// That is the current directory by default, --workspace points elsewhere, e.g. for local development.
|
|
70
72
|
export const setCwd = ({ workspace }) => {
|
|
71
73
|
if (workspace) {
|
|
72
74
|
process.chdir(workspace);
|
|
73
|
-
return;
|
|
74
75
|
}
|
|
75
|
-
const ghWorkspace = getEnvVar('GITHUB_WORKSPACE', process.cwd());
|
|
76
|
-
process.chdir(ghWorkspace);
|
|
77
76
|
};
|
|
78
77
|
//# sourceMappingURL=utils.js.map
|
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,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,4DAA4D;AAC5D,qFAAqF;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,UAAkB,EAAW,EAAE,CAC3E,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAY,EAAE;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IACnF,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE;QACzF,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC/B,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,aAAuB,EAAe,EAAE;IACvE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE;QACzD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC/B,CAAC,CAAC;IAEH,sFAAsF;IACtF,2DAA2D;IAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAe,EAAE,OAAe,EAAuB,EAAE,CAAC,CAAC;IAC5F,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/D,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAe,EAAE,OAAiB,EAAE,EAAE,EAAE;IAC9E,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IAE9F,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,sIAAsI;QACtI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,KAAK,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,YAAqB,EAAU,EAAE;IACxE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,cAAc,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,SAAS,EAAqC,EAAE,EAAE;IACvE,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../bin/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/bin/build.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ActorSourceType } from 'apify-client';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { assertRepoUrlMatchesDefaultVersion, resolveDefaultVersion } from '../../../bin/build.js';
|
|
4
|
+
const ACTOR = 'owner/actor';
|
|
5
|
+
const REPO_URL = 'git@github.com:owner/repo';
|
|
6
|
+
const makeActorInfo = (overrides = {}) => ({
|
|
7
|
+
defaultRunOptions: { build: 'latest' },
|
|
8
|
+
taggedBuilds: { latest: { buildNumber: '0.1.5' } },
|
|
9
|
+
versions: [
|
|
10
|
+
{ versionNumber: '0.1', sourceType: ActorSourceType.GitRepo, gitRepoUrl: `${REPO_URL}#master:actors/a` },
|
|
11
|
+
],
|
|
12
|
+
...overrides,
|
|
13
|
+
});
|
|
14
|
+
describe('resolveDefaultVersion', () => {
|
|
15
|
+
it('should resolve the version the default build tag points to', () => {
|
|
16
|
+
const { defaultBuildTag, defaultBuildNumber, defaultVersionNumber, defaultVersion } = resolveDefaultVersion(ACTOR, makeActorInfo());
|
|
17
|
+
expect(defaultBuildTag).toBe('latest');
|
|
18
|
+
expect(defaultBuildNumber).toBe('0.1.5');
|
|
19
|
+
expect(defaultVersionNumber).toBe('0.1');
|
|
20
|
+
expect(defaultVersion?.versionNumber).toBe('0.1');
|
|
21
|
+
});
|
|
22
|
+
it('should explain the setup requirement when there is no default build', () => {
|
|
23
|
+
expect(() => resolveDefaultVersion(ACTOR, makeActorInfo({ taggedBuilds: {} }))).toThrow('every Actor needs at least one build under its default build tag');
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('assertRepoUrlMatchesDefaultVersion', () => {
|
|
27
|
+
const { defaultVersion } = resolveDefaultVersion(ACTOR, makeActorInfo());
|
|
28
|
+
it('should pass when the repositories match in a different URL form', () => {
|
|
29
|
+
expect(() => assertRepoUrlMatchesDefaultVersion(ACTOR, defaultVersion, 'https://github.com/owner/repo.git')).not.toThrow();
|
|
30
|
+
});
|
|
31
|
+
it('should throw when the remote points to a different repository', () => {
|
|
32
|
+
expect(() => assertRepoUrlMatchesDefaultVersion(ACTOR, defaultVersion, 'git@github.com:fork/repo')).toThrow('Repository mismatch');
|
|
33
|
+
});
|
|
34
|
+
it('should throw when the default version is not built from a Git repository', () => {
|
|
35
|
+
const sourceFilesVersion = {
|
|
36
|
+
versionNumber: '0.1',
|
|
37
|
+
sourceType: ActorSourceType.SourceFiles,
|
|
38
|
+
sourceFiles: [],
|
|
39
|
+
};
|
|
40
|
+
expect(() => assertRepoUrlMatchesDefaultVersion(ACTOR, sourceFilesVersion, REPO_URL)).toThrow('has source type "SOURCE_FILES"');
|
|
41
|
+
});
|
|
42
|
+
it('should throw when the default version no longer exists', () => {
|
|
43
|
+
expect(() => assertRepoUrlMatchesDefaultVersion(ACTOR, undefined, REPO_URL)).toThrow('no longer exists');
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=build.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/build.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
import { getBranchOnlyChangedFiles, getChangedFiles, getCommits, hasMergeFromTarget, parseBaseCommit, } from '../../../bin/git.js';
|
|
2
|
+
import { getBranchOnlyChangedFiles, getChangedFiles, getCommits, getCurrentBranch, getReleaseChanges, getRepoName, hasMergeFromTarget, normalizeRepoUrl, parseBaseCommit, resolveReleaseBaseCommit, } from '../../../bin/git.js';
|
|
3
3
|
import * as Utils from '../../../bin/utils.js';
|
|
4
4
|
describe('getCommits', () => {
|
|
5
5
|
const sourceBranch = 'feature-branch';
|
|
@@ -189,4 +189,107 @@ describe('parseBaseCommit', () => {
|
|
|
189
189
|
expect(() => parseBaseCommit(badJson)).toThrow('Invalid base commit SHA');
|
|
190
190
|
});
|
|
191
191
|
});
|
|
192
|
+
describe('getCurrentBranch', () => {
|
|
193
|
+
it('should return the checked-out branch', () => {
|
|
194
|
+
vi.spyOn(Utils, 'spawnCommandInGhWorkspace').mockReturnValue('master');
|
|
195
|
+
expect(getCurrentBranch()).toBe('master');
|
|
196
|
+
});
|
|
197
|
+
it('should throw on a detached HEAD', () => {
|
|
198
|
+
vi.spyOn(Utils, 'spawnCommandInGhWorkspace').mockReturnValue('HEAD');
|
|
199
|
+
expect(() => getCurrentBranch()).toThrow('HEAD is detached');
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe('normalizeRepoUrl', () => {
|
|
203
|
+
it.each([
|
|
204
|
+
'git@github.com:Apify-Store/google-maps.git',
|
|
205
|
+
'git@github.com:apify-store/google-maps',
|
|
206
|
+
'https://github.com/apify-store/google-maps',
|
|
207
|
+
'https://github.com/apify-store/google-maps.git/',
|
|
208
|
+
'ssh://git@github.com/apify-store/google-maps',
|
|
209
|
+
'git@github.com:apify-store/google-maps#master:actors/foo',
|
|
210
|
+
'https://github.com/apify-store/google-maps#master',
|
|
211
|
+
])('should normalize %s', (url) => {
|
|
212
|
+
expect(normalizeRepoUrl(url)).toBe('github.com/apify-store/google-maps');
|
|
213
|
+
});
|
|
214
|
+
it('should tell different repositories apart', () => {
|
|
215
|
+
expect(normalizeRepoUrl('git@github.com:my-fork/google-maps.git')).not.toBe(normalizeRepoUrl('git@github.com:apify-store/google-maps.git'));
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
describe('getRepoName', () => {
|
|
219
|
+
it('should return the repository name', () => {
|
|
220
|
+
expect(getRepoName('git@github.com:apify-store/google-maps.git')).toBe('google-maps');
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
describe('resolveReleaseBaseCommit', () => {
|
|
224
|
+
const baseSha = 'b'.repeat(40);
|
|
225
|
+
it('should return the base commit when it is an ancestor of HEAD', () => {
|
|
226
|
+
vi.spyOn(Utils, 'spawnCommandInGhWorkspace').mockImplementation((cmd) => {
|
|
227
|
+
if (cmd.startsWith('git rev-parse --verify'))
|
|
228
|
+
return baseSha;
|
|
229
|
+
if (cmd.startsWith('git merge-base'))
|
|
230
|
+
return baseSha;
|
|
231
|
+
return '';
|
|
232
|
+
});
|
|
233
|
+
expect(resolveReleaseBaseCommit(baseSha)).toBe(baseSha);
|
|
234
|
+
});
|
|
235
|
+
it('should throw on the all-zeros SHA of a newly created branch', () => {
|
|
236
|
+
const spy = vi.spyOn(Utils, 'spawnCommandInGhWorkspace');
|
|
237
|
+
expect(() => resolveReleaseBaseCommit('0'.repeat(40))).toThrow('the branch was just created');
|
|
238
|
+
expect(spy).not.toHaveBeenCalled();
|
|
239
|
+
});
|
|
240
|
+
it('should throw when the base commit is missing from the local history', () => {
|
|
241
|
+
vi.spyOn(Utils, 'spawnCommandInGhWorkspace').mockReturnValue('');
|
|
242
|
+
expect(() => resolveReleaseBaseCommit(baseSha)).toThrow('is not in the local git history');
|
|
243
|
+
});
|
|
244
|
+
it('should throw when the base commit is not an ancestor of HEAD (force push)', () => {
|
|
245
|
+
vi.spyOn(Utils, 'spawnCommandInGhWorkspace').mockImplementation((cmd) => {
|
|
246
|
+
if (cmd.startsWith('git rev-parse --verify'))
|
|
247
|
+
return baseSha;
|
|
248
|
+
if (cmd.startsWith('git merge-base'))
|
|
249
|
+
return 'c'.repeat(40);
|
|
250
|
+
return '';
|
|
251
|
+
});
|
|
252
|
+
expect(() => resolveReleaseBaseCommit(baseSha)).toThrow('is not an ancestor of HEAD');
|
|
253
|
+
});
|
|
254
|
+
it('should throw on an invalid SHA', () => {
|
|
255
|
+
expect(() => resolveReleaseBaseCommit('not-a-sha')).toThrow('Invalid base commit SHA');
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
describe('getReleaseChanges', () => {
|
|
259
|
+
const baseSha = 'b'.repeat(40);
|
|
260
|
+
const headSha = 'd'.repeat(40);
|
|
261
|
+
const mergedBranchCommit = `${'1'.repeat(40)}»¦«Dev<dev@example.com>»¦«Date1»¦«feat: branch change`;
|
|
262
|
+
const mergeCommit = `${headSha}»¦«Dev<dev@example.com>»¦«Date2»¦«Merge pull request #1`;
|
|
263
|
+
let gitCommandSpy;
|
|
264
|
+
beforeEach(() => {
|
|
265
|
+
gitCommandSpy = vi.spyOn(Utils, 'spawnCommandInGhWorkspace').mockImplementation((cmd) => {
|
|
266
|
+
if (cmd === 'git rev-parse HEAD')
|
|
267
|
+
return headSha;
|
|
268
|
+
if (cmd.startsWith('git log'))
|
|
269
|
+
return `${mergeCommit}\n${mergedBranchCommit}`;
|
|
270
|
+
if (cmd.startsWith('git diff --name-only'))
|
|
271
|
+
return 'actors/foo/src/main.ts\nCHANGELOG.md';
|
|
272
|
+
if (cmd === 'git')
|
|
273
|
+
return 'diff --git a/CHANGELOG.md b/CHANGELOG.md\n--- a/CHANGELOG.md\n+++ b/CHANGELOG.md\n@@ -1 +1,2 @@\n+- Added foo\n # Changelog';
|
|
274
|
+
return '';
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
it('should diff the range directly and return the commits oldest first', () => {
|
|
278
|
+
const changes = getReleaseChanges(baseSha);
|
|
279
|
+
expect(changes).toStrictEqual({
|
|
280
|
+
commits: [
|
|
281
|
+
{ sha: '1'.repeat(40), author: 'Dev<dev@example.com>', date: 'Date1', message: 'feat: branch change' },
|
|
282
|
+
{ sha: headSha, author: 'Dev<dev@example.com>', date: 'Date2', message: 'Merge pull request #1' },
|
|
283
|
+
],
|
|
284
|
+
changedFiles: ['actors/foo/src/main.ts', 'CHANGELOG.md'],
|
|
285
|
+
changelog: '- Added foo',
|
|
286
|
+
});
|
|
287
|
+
// Not from the parent of the oldest commit, which may predate the base commit for merge commits
|
|
288
|
+
expect(gitCommandSpy).toHaveBeenCalledWith(`git diff --name-only ${baseSha} HEAD`);
|
|
289
|
+
expect(gitCommandSpy).toHaveBeenCalledWith(`git log --pretty=format:'%H»¦«%aN<%aE>»¦«%aD»¦«%s' ${baseSha}..HEAD`);
|
|
290
|
+
});
|
|
291
|
+
it('should return null when HEAD is the base commit', () => {
|
|
292
|
+
expect(getReleaseChanges(headSha)).toBeNull();
|
|
293
|
+
});
|
|
294
|
+
});
|
|
192
295
|
//# sourceMappingURL=git.test.js.map
|