Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions config/clients.config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"java": {
"folder": "clients/algoliasearch-client-java-2",
"mainGenerator": "javascript-search",
"modelFolder": "algoliasearch-core/com/algolia/model",
"customGenerator": "algolia-java",
"tests": {
Expand All @@ -10,6 +11,7 @@
},
"javascript": {
"folder": "clients/algoliasearch-client-javascript",
"mainGenerator": "java-search",
"modelFolder": "model",
"tests": {
"extension": ".test.ts",
Expand All @@ -18,6 +20,7 @@
},
"php": {
"folder": "clients/algoliasearch-client-php",
"mainGenerator": "php-search",
"modelFolder": "lib/Model"
}
}
4 changes: 4 additions & 0 deletions scripts/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ Object.entries(openapitools['generator-cli'].generators).forEach(
}
);

export function getPackageVersion(generator: string): string {
return GENERATORS[generator].additionalProperties.packageVersion;
}

export const LANGUAGES = [
...new Set(Object.values(GENERATORS).map((gen) => gen.language)),
];
Expand Down
40 changes: 20 additions & 20 deletions scripts/release/__tests__/create-release-issue.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,21 @@ describe('create release issue', () => {
getVersionChangesText({
javascript: {
current: '0.0.1',
next: '0.0.2',
releaseType: 'patch',
},
php: {
current: '0.0.1',
next: '0.0.2',
releaseType: 'patch',
},
java: {
current: '0.0.1',
next: '0.0.2',
releaseType: 'patch',
},
})
).toMatchInlineSnapshot(`
"- [x] javascript: v0.0.1 -> v0.0.2
- [x] java: v0.0.1 -> v0.0.2
- [x] php: v0.0.1 -> v0.0.2"
"- [x] javascript: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
- [x] java: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
- [x] php: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_"
`);
});

Expand All @@ -55,21 +55,21 @@ describe('create release issue', () => {
getVersionChangesText({
javascript: {
current: '0.0.1',
next: '0.0.2',
releaseType: 'patch',
},
php: {
current: '0.0.1',
next: '0.0.1',
releaseType: null,
noCommit: true,
},
java: {
current: '0.0.1',
next: '0.0.2',
releaseType: 'patch',
},
})
).toMatchInlineSnapshot(`
"- [x] javascript: v0.0.1 -> v0.0.2
- [x] java: v0.0.1 -> v0.0.2
"- [x] javascript: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
- [x] java: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
- ~php: v0.0.1 (no commit)~"
`);
});
Expand All @@ -79,23 +79,23 @@ describe('create release issue', () => {
getVersionChangesText({
javascript: {
current: '0.0.1',
next: '0.0.2',
releaseType: 'patch',
},
php: {
current: '0.0.1',
next: '0.0.1',
releaseType: 'minor',
},
java: {
current: '0.0.1',
next: '0.0.2',
releaseType: 'patch',
skipRelease: true,
},
})
).toMatchInlineSnapshot(`
"- [x] javascript: v0.0.1 -> v0.0.2
- [ ] java: v0.0.1 -> v0.0.2
"- [x] javascript: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
- [ ] java: v0.0.1 -> \`patch\` _(e.g. v0.0.2)_
- No \`feat\` or \`fix\` commit, thus unchecked by default.
- [x] php: v0.0.1 -> v0.0.1"
- [x] php: v0.0.1 -> \`minor\` _(e.g. v0.1.0)_"
`);
});

Expand Down Expand Up @@ -123,7 +123,7 @@ describe('create release issue', () => {
],
});

expect(versions.javascript.next).toEqual('1.0.0');
expect(versions.javascript.releaseType).toEqual('major');
});

it('bumps minor version for feat', () => {
Expand All @@ -150,7 +150,7 @@ describe('create release issue', () => {
],
});

expect(versions.php.next).toEqual('0.1.0');
expect(versions.php.releaseType).toEqual('minor');
});

it('bumps patch version for fix', () => {
Expand All @@ -177,7 +177,7 @@ describe('create release issue', () => {
],
});

expect(versions.java.next).toEqual('0.0.2');
expect(versions.java.releaseType).toEqual('patch');
});

it('marks noCommit for languages without any commit', () => {
Expand Down
52 changes: 44 additions & 8 deletions scripts/release/__tests__/process-release.test.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,67 @@
import { getVersionChangesText } from '../create-release-issue';
import { getVersionsToRelease, getLangsToUpdateRepo } from '../process-release';
import TEXT from '../text';

describe('process release', () => {
it('gets versions to release', () => {
const versions = getVersionsToRelease(`
## Version Changes

- [x] javascript: v1.0.0 -> v1.1.0
- [x] php: v2.0.0 -> v2.0.1
- [ ] java: v3.0.0 -> v3.0.1
- [x] javascript: v1.0.0 -> \`minor\` (e.g. v1.1.0)
- [x] php: v2.0.0 -> \`patch\` (e.g. v2.0.1)
- [ ] java: v3.0.0 -> \`patch\` (e.g. v3.0.1)
`);

expect(Object.keys(versions)).toEqual(['javascript', 'php']);
expect(versions.javascript.current).toEqual('1.0.0');
expect(versions.javascript.next).toEqual('1.1.0');
expect(versions.javascript.releaseType).toEqual('minor');
expect(versions.php.current).toEqual('2.0.0');
expect(versions.php.next).toEqual('2.0.1');
expect(versions.php.releaseType).toEqual('patch');
});

it('gets langs to update', () => {
expect(
getLangsToUpdateRepo(`
## Version Changes

- [ ] javascript: v1.0.0 -> v1.1.0
- [x] php: v2.0.0 -> v2.0.1
- [ ] java: v3.0.0 -> v3.0.1
- [ ] javascript: v1.0.0 -> \`minor\` (e.g. v1.1.0)
- [x] php: v2.0.0 -> \`patch\` (e.g. v2.0.1)
- [ ] java: v3.0.0 -> \`patch\` (e.g. v3.0.1)
`)
).toEqual(['javascript', 'java']);
});

it('parses issue body correctly', () => {
// This test is a glue between create-release-issue and process-release.
const issueBody = [
TEXT.versionChangeHeader,
getVersionChangesText({
javascript: {
current: '0.0.1',
releaseType: 'patch',
},
php: {
current: '0.0.1',
releaseType: 'minor',
},
java: {
current: '0.0.1',
releaseType: 'patch',
skipRelease: true,
},
}),
].join('\n');

const versions = getVersionsToRelease(issueBody);
expect(versions).toEqual({
javascript: expect.objectContaining({
current: '0.0.1',
releaseType: 'patch',
}),
php: expect.objectContaining({
current: '0.0.1',
releaseType: 'minor',
}),
});
});
});
10 changes: 10 additions & 0 deletions scripts/release/common.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
import clientsConfig from '../../config/clients.config.json';
import config from '../../config/release.config.json';
import { getGitHubUrl, run } from '../common';

export const RELEASED_TAG = config.releasedTag;
export const MAIN_BRANCH = config.mainBranch;
export const OWNER = config.owner;
export const REPO = config.repo;
export const MAIN_GENERATOR = Object.keys(clientsConfig).reduce(
(mainGenerator: { [lang: string]: string }, lang: string) => {
return {
...mainGenerator,
[lang]: clientsConfig[lang].mainGenerator,
};
},
{}
);

export function getTargetBranch(language: string): string {
return config.targetBranch[language] || config.defaultTargetBranch;
Expand Down
Loading