-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
git-changelog.test.ts
86 lines (74 loc) · 2.81 KB
/
git-changelog.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import { expectThrow } from '@joplin/lib/testing/test-utils';
import { filesApplyToPlatform, parseRenovateMessage, RenovateMessage, summarizeRenovateMessages } from './git-changelog';
describe('git-changelog', () => {
test('should find out if a file path is relevant to a platform', async () => {
type TestCase = [string[], string, boolean];
const testCases: TestCase[] = [
[['packages/app-mobile/package.json'], 'ios', true],
[['packages/app-mobile/package.json'], 'android', true],
[['packages/app-mobile/package.json'], 'desktop', false],
[[], 'desktop', false],
[['packages/server/package.json'], 'server', true],
[['packages/app-mobile/package.json', 'packages/server/package.json'], 'server', true],
[['packages/app-mobile/package.json', 'packages/server/package.json'], 'android', true],
[['packages/app-mobile/package.json', 'packages/server/package.json'], 'desktop', false],
[['packages/server/package.json'], 'desktop', false],
[['packages/lib/package.json'], 'server', true],
[['packages/lib/package.json'], 'desktop', true],
[['packages/lib/package.json'], 'android', true],
[['packages/lib/package.json'], 'clipper', false],
[['packages/app-clipper/package.json'], 'clipper', true],
];
for (const testCase of testCases) {
const [files, platform, expected] = testCase;
const actual = filesApplyToPlatform(files, platform);
expect(actual).toBe(expected);
}
});
test('should parse Renovate messages', async () => {
type TestCase = [string, string, string];
const testCases: TestCase[] = [
['Update typescript-eslint monorepo to v5 (#7291)', 'typescript-eslint', 'v5'],
['Update aws-sdk-js-v3 monorepo to v3.215.0', 'aws-sdk-js-v3', 'v3.215.0'],
['Update dependency moment to v2.29.4 (#7087)', 'moment', 'v2.29.4'],
['Update aws (#8106)', 'aws', ''],
];
for (const testCase of testCases) {
const [message, pkg, version] = testCase;
const actual = parseRenovateMessage(message);
expect(actual.package).toBe(pkg);
expect(actual.version).toBe(version);
}
await expectThrow(async () => parseRenovateMessage('not a renovate message'));
});
test('should summarize Renovate messages', async () => {
type TestCase = [RenovateMessage[], string];
const testCases: TestCase[] = [
[
[
{ package: 'sas', version: 'v1.0' },
{ package: 'sas', version: 'v1.2' },
{ package: 'moment', version: 'v3.4' },
{ package: 'eslint', version: 'v1.2' },
{ package: 'aws', version: '' },
],
'Updated packages aws, moment (v3.4), sas (v1.2)',
],
[
[
{ package: 'eslint', version: 'v1.2' },
],
'',
],
[
[],
'',
],
];
for (const testCase of testCases) {
const [messages, expected] = testCase;
const actual = summarizeRenovateMessages(messages);
expect(actual).toBe(expected);
}
});
});