apify-test-tools 0.10.1-beta.2 → 0.10.1-beta.4
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/actions/checkout-restore-dependencies/action.yaml +4 -3
- package/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml +7 -2
- package/.github/workflows/public_platform-tests.yaml +0 -1
- package/.github/workflows-package-version +1 -1
- package/CHANGELOG.md +6 -0
- package/CONTRIBUTING.md +13 -3
- package/README.md +2 -2
- package/bin/build-from-local.ts +8 -7
- package/bin/build.ts +22 -21
- package/bin/diff-changes.ts +11 -10
- package/bin/diff-json-schema.ts +14 -12
- package/bin/git.ts +89 -47
- package/bin/logger.ts +23 -0
- package/bin/main.ts +44 -38
- package/bin/output.ts +6 -0
- package/bin/slack.ts +8 -7
- package/bin/test-report.ts +22 -21
- package/bin/types.ts +0 -1
- package/bin/utils/config/actor-json.ts +84 -0
- package/bin/utils/config/load-config.ts +46 -46
- package/bin/utils/config/parser.ts +33 -28
- package/bin/utils/config/structures/base.ts +7 -0
- package/bin/utils/json-file.ts +11 -14
- package/bin/utils/path/repo-relative.ts +156 -0
- package/bin/utils/path/schema.ts +18 -0
- package/bin/utils.ts +63 -44
- package/dist/bin/build-from-local.d.ts +1 -1
- package/dist/bin/build-from-local.d.ts.map +1 -1
- package/dist/bin/build-from-local.js +8 -7
- package/dist/bin/build-from-local.js.map +1 -1
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +22 -21
- package/dist/bin/build.js.map +1 -1
- package/dist/bin/diff-changes.d.ts +1 -1
- package/dist/bin/diff-changes.d.ts.map +1 -1
- package/dist/bin/diff-changes.js +9 -8
- package/dist/bin/diff-changes.js.map +1 -1
- package/dist/bin/diff-json-schema.d.ts +1 -1
- package/dist/bin/diff-json-schema.d.ts.map +1 -1
- package/dist/bin/diff-json-schema.js +13 -12
- package/dist/bin/diff-json-schema.js.map +1 -1
- package/dist/bin/git.d.ts +10 -10
- package/dist/bin/git.d.ts.map +1 -1
- package/dist/bin/git.js +78 -37
- package/dist/bin/git.js.map +1 -1
- package/dist/bin/logger.d.ts +11 -0
- package/dist/bin/logger.d.ts.map +1 -0
- package/dist/bin/logger.js +20 -0
- package/dist/bin/logger.js.map +1 -0
- package/dist/bin/main.d.ts +1 -1
- package/dist/bin/main.js +44 -38
- package/dist/bin/main.js.map +1 -1
- package/dist/bin/output.d.ts +3 -0
- package/dist/bin/output.d.ts.map +1 -0
- package/dist/bin/output.js +6 -0
- package/dist/bin/output.js.map +1 -0
- package/dist/bin/slack.d.ts.map +1 -1
- package/dist/bin/slack.js +8 -7
- package/dist/bin/slack.js.map +1 -1
- package/dist/bin/test-report.d.ts.map +1 -1
- package/dist/bin/test-report.js +22 -21
- package/dist/bin/test-report.js.map +1 -1
- package/dist/bin/types.d.ts +0 -1
- package/dist/bin/types.d.ts.map +1 -1
- package/dist/bin/utils/config/actor-json.d.ts +14 -0
- package/dist/bin/utils/config/actor-json.d.ts.map +1 -0
- package/dist/bin/utils/config/actor-json.js +60 -0
- package/dist/bin/utils/config/actor-json.js.map +1 -0
- package/dist/bin/utils/config/load-config.d.ts +12 -2
- package/dist/bin/utils/config/load-config.d.ts.map +1 -1
- package/dist/bin/utils/config/load-config.js +32 -31
- package/dist/bin/utils/config/load-config.js.map +1 -1
- package/dist/bin/utils/config/parser.d.ts +4 -12
- package/dist/bin/utils/config/parser.d.ts.map +1 -1
- package/dist/bin/utils/config/parser.js +24 -23
- package/dist/bin/utils/config/parser.js.map +1 -1
- package/dist/bin/utils/config/structures/base.d.ts +5 -0
- package/dist/bin/utils/config/structures/base.d.ts.map +1 -1
- package/dist/bin/utils/config/structures/base.js.map +1 -1
- package/dist/bin/utils/json-file.d.ts +3 -2
- package/dist/bin/utils/json-file.d.ts.map +1 -1
- package/dist/bin/utils/json-file.js +8 -13
- package/dist/bin/utils/json-file.js.map +1 -1
- package/dist/bin/utils/path/repo-relative.d.ts +35 -0
- package/dist/bin/utils/path/repo-relative.d.ts.map +1 -0
- package/dist/bin/utils/path/repo-relative.js +137 -0
- package/dist/bin/utils/path/repo-relative.js.map +1 -0
- package/dist/bin/utils/path/schema.d.ts +7 -0
- package/dist/bin/utils/path/schema.d.ts.map +1 -0
- package/dist/bin/utils/path/schema.js +16 -0
- package/dist/bin/utils/path/schema.js.map +1 -0
- package/dist/bin/utils.d.ts +14 -6
- package/dist/bin/utils.d.ts.map +1 -1
- package/dist/bin/utils.js +52 -36
- package/dist/bin/utils.js.map +1 -1
- package/dist/test/unit/bin/build-from-local.test.js +4 -40
- package/dist/test/unit/bin/build-from-local.test.js.map +1 -1
- package/dist/test/unit/bin/diff-changes.test.js +97 -96
- package/dist/test/unit/bin/diff-changes.test.js.map +1 -1
- package/dist/test/unit/bin/diff.test.js +52 -48
- package/dist/test/unit/bin/diff.test.js.map +1 -1
- package/dist/test/unit/bin/git-command.test.d.ts +2 -0
- package/dist/test/unit/bin/git-command.test.d.ts.map +1 -0
- package/dist/test/unit/bin/git-command.test.js +54 -0
- package/dist/test/unit/bin/git-command.test.js.map +1 -0
- package/dist/test/unit/bin/git.test.js +211 -94
- package/dist/test/unit/bin/git.test.js.map +1 -1
- package/dist/test/unit/bin/logger.test.d.ts +2 -0
- package/dist/test/unit/bin/logger.test.d.ts.map +1 -0
- package/dist/test/unit/bin/logger.test.js +44 -0
- package/dist/test/unit/bin/logger.test.js.map +1 -0
- package/dist/test/unit/bin/logging.test.d.ts +2 -0
- package/dist/test/unit/bin/logging.test.d.ts.map +1 -0
- package/dist/test/unit/bin/logging.test.js +43 -0
- package/dist/test/unit/bin/logging.test.js.map +1 -0
- package/dist/test/unit/bin/utils/config/load-config.test.js +47 -25
- package/dist/test/unit/bin/utils/config/load-config.test.js.map +1 -1
- package/dist/test/unit/bin/utils/config/parser.test.js +64 -19
- package/dist/test/unit/bin/utils/config/parser.test.js.map +1 -1
- package/dist/test/unit/bin/utils/files.test.js +16 -27
- package/dist/test/unit/bin/utils/files.test.js.map +1 -1
- package/dist/test/unit/bin/utils/path/repo-relative.test.d.ts +2 -0
- package/dist/test/unit/bin/utils/path/repo-relative.test.d.ts.map +1 -0
- package/dist/test/unit/bin/utils/path/repo-relative.test.js +196 -0
- package/dist/test/unit/bin/utils/path/repo-relative.test.js.map +1 -0
- package/dist/test/unit/bin/utils/path/schema.test.d.ts +2 -0
- package/dist/test/unit/bin/utils/path/schema.test.d.ts.map +1 -0
- package/dist/test/unit/bin/utils/path/schema.test.js +52 -0
- package/dist/test/unit/bin/utils/path/schema.test.js.map +1 -0
- package/dist/test/unit/should-built-and-test.test.js +40 -38
- package/dist/test/unit/should-built-and-test.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.mjs +9 -1
- package/package.json +5 -5
- package/test/unit/bin/build-from-local.test.ts +4 -54
- package/test/unit/bin/diff-changes.test.ts +97 -96
- package/test/unit/bin/diff.test.ts +53 -48
- package/test/unit/bin/git-command.test.ts +71 -0
- package/test/unit/bin/git.test.ts +246 -91
- package/test/unit/bin/logger.test.ts +55 -0
- package/test/unit/bin/logging.test.ts +52 -0
- package/test/unit/bin/utils/config/load-config.test.ts +63 -26
- package/test/unit/bin/utils/config/parser.test.ts +81 -27
- package/test/unit/bin/utils/files.test.ts +19 -33
- package/test/unit/bin/utils/path/repo-relative.test.ts +250 -0
- package/test/unit/bin/utils/path/schema.test.ts +65 -0
- package/test/unit/should-built-and-test.test.ts +40 -38
|
@@ -8,53 +8,53 @@ const commits = [
|
|
|
8
8
|
describe('isCosmeticOnlyJsonSchemaChange', () => {
|
|
9
9
|
let gitCommandSpy;
|
|
10
10
|
beforeEach(() => {
|
|
11
|
-
gitCommandSpy = vi.spyOn(Utils, '
|
|
11
|
+
gitCommandSpy = vi.spyOn(Utils, 'runGitCommand');
|
|
12
12
|
});
|
|
13
13
|
const mockGitCalls = (oldJson, newJson) => {
|
|
14
|
-
gitCommandSpy.
|
|
14
|
+
gitCommandSpy.mockResolvedValueOnce(oldJson).mockResolvedValueOnce(newJson);
|
|
15
15
|
};
|
|
16
|
-
test('returns true when nothing changed', () => {
|
|
16
|
+
test('returns true when nothing changed', async () => {
|
|
17
17
|
const json = JSON.stringify({ type: 'string', title: 'My field' });
|
|
18
18
|
mockGitCalls(json, json);
|
|
19
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
19
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
20
20
|
});
|
|
21
|
-
test('returns true when only title changes', () => {
|
|
21
|
+
test('returns true when only title changes', async () => {
|
|
22
22
|
mockGitCalls(JSON.stringify({ type: 'string', title: 'Old title' }), JSON.stringify({ type: 'string', title: 'New title' }));
|
|
23
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
23
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
24
24
|
});
|
|
25
|
-
test('returns true when only description changes', () => {
|
|
25
|
+
test('returns true when only description changes', async () => {
|
|
26
26
|
mockGitCalls(JSON.stringify({ type: 'string', description: 'Old desc' }), JSON.stringify({ type: 'string', description: 'New desc' }));
|
|
27
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
27
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
28
28
|
});
|
|
29
|
-
test('returns true when only example changes', () => {
|
|
29
|
+
test('returns true when only example changes', async () => {
|
|
30
30
|
mockGitCalls(JSON.stringify({ type: 'string', example: 'foo' }), JSON.stringify({ type: 'string', example: 'bar' }));
|
|
31
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
31
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
32
32
|
});
|
|
33
|
-
test('returns true when only enumTitles changes', () => {
|
|
33
|
+
test('returns true when only enumTitles changes', async () => {
|
|
34
34
|
mockGitCalls(JSON.stringify({ type: 'string', enum: ['a', 'b'], enumTitles: ['Option A', 'Option B'] }), JSON.stringify({ type: 'string', enum: ['a', 'b'], enumTitles: ['Choice A', 'Choice B'] }));
|
|
35
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
35
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
36
36
|
});
|
|
37
|
-
test('returns true when only sectionCaption changes', () => {
|
|
37
|
+
test('returns true when only sectionCaption changes', async () => {
|
|
38
38
|
mockGitCalls(JSON.stringify({ sectionCaption: 'Old caption' }), JSON.stringify({ sectionCaption: 'New caption' }));
|
|
39
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
39
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
40
40
|
});
|
|
41
|
-
test('returns true when only sectionDescription changes', () => {
|
|
41
|
+
test('returns true when only sectionDescription changes', async () => {
|
|
42
42
|
mockGitCalls(JSON.stringify({ sectionDescription: 'Old' }), JSON.stringify({ sectionDescription: 'New' }));
|
|
43
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
43
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
44
44
|
});
|
|
45
|
-
test('returns false when a functional field (type) changes', () => {
|
|
45
|
+
test('returns false when a functional field (type) changes', async () => {
|
|
46
46
|
mockGitCalls(JSON.stringify({ type: 'string', title: 'My field' }), JSON.stringify({ type: 'integer', title: 'My field' }));
|
|
47
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
47
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
48
48
|
});
|
|
49
|
-
test('returns false when a functional field is added', () => {
|
|
49
|
+
test('returns false when a functional field is added', async () => {
|
|
50
50
|
mockGitCalls(JSON.stringify({ title: 'My field' }), JSON.stringify({ title: 'My field', type: 'string' }));
|
|
51
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
51
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
52
52
|
});
|
|
53
|
-
test('returns false when a functional field is removed', () => {
|
|
53
|
+
test('returns false when a functional field is removed', async () => {
|
|
54
54
|
mockGitCalls(JSON.stringify({ type: 'string', title: 'My field' }), JSON.stringify({ title: 'My field' }));
|
|
55
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
55
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
56
56
|
});
|
|
57
|
-
test('returns true when non-functional fields change at nested level (input schema properties)', () => {
|
|
57
|
+
test('returns true when non-functional fields change at nested level (input schema properties)', async () => {
|
|
58
58
|
mockGitCalls(JSON.stringify({
|
|
59
59
|
type: 'object',
|
|
60
60
|
properties: {
|
|
@@ -66,9 +66,9 @@ describe('isCosmeticOnlyJsonSchemaChange', () => {
|
|
|
66
66
|
myField: { type: 'string', title: 'New title', description: 'New desc', example: 'new' },
|
|
67
67
|
},
|
|
68
68
|
}));
|
|
69
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
69
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
70
70
|
});
|
|
71
|
-
test('returns false when a functional nested field changes alongside non-functional ones', () => {
|
|
71
|
+
test('returns false when a functional nested field changes alongside non-functional ones', async () => {
|
|
72
72
|
mockGitCalls(JSON.stringify({
|
|
73
73
|
type: 'object',
|
|
74
74
|
properties: { myField: { type: 'string', title: 'Old title' } },
|
|
@@ -76,33 +76,37 @@ describe('isCosmeticOnlyJsonSchemaChange', () => {
|
|
|
76
76
|
type: 'object',
|
|
77
77
|
properties: { myField: { type: 'integer', title: 'New title' } },
|
|
78
78
|
}));
|
|
79
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
79
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
80
80
|
});
|
|
81
|
-
test('returns false when a new property is added to input schema', () => {
|
|
81
|
+
test('returns false when a new property is added to input schema', async () => {
|
|
82
82
|
mockGitCalls(JSON.stringify({ properties: { fieldA: { type: 'string' } } }), JSON.stringify({ properties: { fieldA: { type: 'string' }, fieldB: { type: 'integer' } } }));
|
|
83
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
83
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
84
84
|
});
|
|
85
|
-
test('returns false when a property is removed from input schema', () => {
|
|
85
|
+
test('returns false when a property is removed from input schema', async () => {
|
|
86
86
|
mockGitCalls(JSON.stringify({ properties: { fieldA: { type: 'string' }, fieldB: { type: 'integer' } } }), JSON.stringify({ properties: { fieldA: { type: 'string' } } }));
|
|
87
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
87
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
88
88
|
});
|
|
89
|
-
test('returns false when invalid JSON in old content', () => {
|
|
89
|
+
test('returns false when invalid JSON in old content', async () => {
|
|
90
90
|
mockGitCalls('not json', '{}');
|
|
91
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
91
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
92
92
|
});
|
|
93
|
-
test('returns false when invalid JSON in new content', () => {
|
|
93
|
+
test('returns false when invalid JSON in new content', async () => {
|
|
94
94
|
mockGitCalls('{}', 'not json');
|
|
95
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
95
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
96
96
|
});
|
|
97
|
-
test('returns false when
|
|
97
|
+
test('returns false when git cannot read a schema version', async () => {
|
|
98
|
+
gitCommandSpy.mockRejectedValueOnce(new Error('missing schema'));
|
|
99
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
100
|
+
});
|
|
101
|
+
test('returns false when array content changes (not under a non-functional key)', async () => {
|
|
98
102
|
mockGitCalls(JSON.stringify({ enum: [1, 2, 3] }), JSON.stringify({ enum: [1, 2, 4] }));
|
|
99
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
103
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
100
104
|
});
|
|
101
|
-
test('returns true when example array changes (non-functional key)', () => {
|
|
105
|
+
test('returns true when example array changes (non-functional key)', async () => {
|
|
102
106
|
mockGitCalls(JSON.stringify({ type: 'array', example: [1, 2, 3] }), JSON.stringify({ type: 'array', example: [4, 5, 6] }));
|
|
103
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
107
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
104
108
|
});
|
|
105
|
-
test('returns true for a realistic actor.json with only title/description change', () => {
|
|
109
|
+
test('returns true for a realistic actor.json with only title/description change', async () => {
|
|
106
110
|
mockGitCalls(JSON.stringify({
|
|
107
111
|
actorSpecification: 1,
|
|
108
112
|
name: 'my-actor',
|
|
@@ -116,9 +120,9 @@ describe('isCosmeticOnlyJsonSchemaChange', () => {
|
|
|
116
120
|
description: 'New description',
|
|
117
121
|
version: '1.0',
|
|
118
122
|
}));
|
|
119
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
123
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
120
124
|
});
|
|
121
|
-
test('returns true when fields under properties are reordered', () => {
|
|
125
|
+
test('returns true when fields under properties are reordered', async () => {
|
|
122
126
|
mockGitCalls(JSON.stringify({
|
|
123
127
|
type: 'object',
|
|
124
128
|
properties: { fieldA: { type: 'string' }, fieldB: { type: 'integer' }, fieldC: { type: 'boolean' } },
|
|
@@ -126,18 +130,18 @@ describe('isCosmeticOnlyJsonSchemaChange', () => {
|
|
|
126
130
|
type: 'object',
|
|
127
131
|
properties: { fieldC: { type: 'boolean' }, fieldA: { type: 'string' }, fieldB: { type: 'integer' } },
|
|
128
132
|
}));
|
|
129
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(true);
|
|
133
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(true);
|
|
130
134
|
});
|
|
131
|
-
test('returns false for a realistic actor.json with version change', () => {
|
|
135
|
+
test('returns false for a realistic actor.json with version change', async () => {
|
|
132
136
|
mockGitCalls(JSON.stringify({ actorSpecification: 1, name: 'my-actor', title: 'My Actor', version: '1.0' }), JSON.stringify({ actorSpecification: 1, name: 'my-actor', title: 'My Actor', version: '1.1' }));
|
|
133
|
-
expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).toBe(false);
|
|
137
|
+
await expect(isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json')).resolves.toBe(false);
|
|
134
138
|
});
|
|
135
|
-
it('uses correct git refs: first-commit parent for old, last commit for new', () => {
|
|
139
|
+
it('uses correct git refs: first-commit parent for old, last commit for new', async () => {
|
|
136
140
|
const json = JSON.stringify({});
|
|
137
141
|
mockGitCalls(json, json);
|
|
138
|
-
isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json');
|
|
139
|
-
expect(gitCommandSpy).toHaveBeenCalledWith('
|
|
140
|
-
expect(gitCommandSpy).toHaveBeenCalledWith('
|
|
142
|
+
await isCosmeticOnlyJsonSchemaChange(commits, 'actors/foo/actor.json');
|
|
143
|
+
expect(gitCommandSpy).toHaveBeenCalledWith(['show', 'Commit1~:actors/foo/actor.json']);
|
|
144
|
+
expect(gitCommandSpy).toHaveBeenCalledWith(['show', 'Commit3:actors/foo/actor.json']);
|
|
141
145
|
});
|
|
142
146
|
});
|
|
143
147
|
//# sourceMappingURL=diff.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/diff.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAE/C,MAAM,OAAO,GAAG;IACZ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACrD,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;CACxD,CAAC;AAEF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,IAAI,aAA2B,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"diff.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/diff.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-command.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/bin/git-command.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { describe, expect, it } from 'vitest';
|
|
4
|
+
import { getGitignoredPaths, GitCommandError, listRepoFilePaths, runGitCommand } from '../../../bin/utils.js';
|
|
5
|
+
describe('runGitCommand', () => {
|
|
6
|
+
it('returns trimmed Git output', async () => {
|
|
7
|
+
await expect(runGitCommand(['rev-parse', '--is-inside-work-tree'], {
|
|
8
|
+
cwd: process.cwd(),
|
|
9
|
+
operation: 'check whether the current directory is in a Git repository',
|
|
10
|
+
})).resolves.toBe('true');
|
|
11
|
+
});
|
|
12
|
+
it('rejects on git exit code, not stderr', async () => {
|
|
13
|
+
const error = await runGitCommand(['rev-parse', '--verify', '--quiet'], {
|
|
14
|
+
cwd: process.cwd(),
|
|
15
|
+
operation: 'verify a commit',
|
|
16
|
+
}).catch((failure) => failure);
|
|
17
|
+
expect(error).toBeInstanceOf(GitCommandError);
|
|
18
|
+
if (error instanceof GitCommandError) {
|
|
19
|
+
expect(error.exitCode).toBe(1);
|
|
20
|
+
expect(error.gitError).toContain('Command failed: git rev-parse --verify --quiet');
|
|
21
|
+
expect(error.message).toContain('Failed to verify a commit.\nCommand:');
|
|
22
|
+
expect(error.stack).toContain('Failed to verify a commit.');
|
|
23
|
+
expect(error.cause).toBeInstanceOf(Error);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
it('passes arguments literally and rejects Git failures', async () => {
|
|
27
|
+
await expect(runGitCommand(['rev-parse', '--verify', 'HEAD; echo injected'], {
|
|
28
|
+
operation: 'verify a commit reference',
|
|
29
|
+
})).rejects.toThrow('Command: git "rev-parse" "--verify" "HEAD; echo injected"\nGit error:');
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('listRepoFilePaths', () => {
|
|
33
|
+
it('lists files under a subdirectory relative to the repository root', async () => {
|
|
34
|
+
const repoRoot = process.cwd();
|
|
35
|
+
await expect(listRepoFilePaths(repoRoot, path.join(repoRoot, 'bin'))).resolves.toContain('bin/utils.ts');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('getGitignoredPaths', () => {
|
|
39
|
+
it('returns an empty set for no paths', async () => {
|
|
40
|
+
await expect(getGitignoredPaths([])).resolves.toStrictEqual(new Set());
|
|
41
|
+
});
|
|
42
|
+
it('returns only paths ignored by the repository rules', async () => {
|
|
43
|
+
await expect(getGitignoredPaths(['node_modules/example.js', 'bin/utils.ts', '.DS_Store'], process.cwd())).resolves.toStrictEqual(new Set(['node_modules/example.js', '.DS_Store']));
|
|
44
|
+
});
|
|
45
|
+
it('returns an empty set when Git exits with code 1', async () => {
|
|
46
|
+
await expect(getGitignoredPaths(['bin/utils.ts'], process.cwd())).resolves.toStrictEqual(new Set());
|
|
47
|
+
});
|
|
48
|
+
it('rejects unexpected Git errors', async () => {
|
|
49
|
+
await expect(getGitignoredPaths(['bin/utils.ts'], os.tmpdir())).rejects.toThrow('Failed to check which repository paths are ignored.\n' +
|
|
50
|
+
'Command: git "check-ignore" "--" "bin/utils.ts"\n' +
|
|
51
|
+
'Git error: fatal: not a git repository');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=git-command.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-command.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/git-command.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE9G,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,CACR,aAAa,CAAC,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE;YAClD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,SAAS,EAAE,4DAA4D;SAC1E,CAAC,CACL,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAY,MAAM,aAAa,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE;YAC7E,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,SAAS,EAAE,iBAAiB;SAC/B,CAAC,CAAC,KAAK,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;YACnF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,CACR,aAAa,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE;YAC5D,SAAS,EAAE,2BAA2B;SACzC,CAAC,CACL,CAAC,OAAO,CAAC,OAAO,CAAC,uEAAuE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,CACR,kBAAkB,CAAC,CAAC,yBAAyB,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAC9F,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC3E,uDAAuD;YACnD,mDAAmD;YACnD,wCAAwC,CAC/C,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|