@gitwand/core 2.2.0 → 2.4.1
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/dist/__tests__/corpus.d.ts.map +1 -1
- package/dist/__tests__/corpus.js +115 -0
- package/dist/__tests__/corpus.js.map +1 -1
- package/dist/__tests__/patterns/complex.test.d.ts +9 -0
- package/dist/__tests__/patterns/complex.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/complex.test.js +198 -0
- package/dist/__tests__/patterns/complex.test.js.map +1 -0
- package/dist/__tests__/patterns/delete-no-change.test.d.ts +11 -0
- package/dist/__tests__/patterns/delete-no-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/delete-no-change.test.js +178 -0
- package/dist/__tests__/patterns/delete-no-change.test.js.map +1 -0
- package/dist/__tests__/patterns/non-overlapping.test.d.ts +11 -0
- package/dist/__tests__/patterns/non-overlapping.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/non-overlapping.test.js +240 -0
- package/dist/__tests__/patterns/non-overlapping.test.js.map +1 -0
- package/dist/__tests__/patterns/one-side-change.test.d.ts +10 -0
- package/dist/__tests__/patterns/one-side-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/one-side-change.test.js +191 -0
- package/dist/__tests__/patterns/one-side-change.test.js.map +1 -0
- package/dist/__tests__/patterns/same-change.test.d.ts +9 -0
- package/dist/__tests__/patterns/same-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/same-change.test.js +173 -0
- package/dist/__tests__/patterns/same-change.test.js.map +1 -0
- package/dist/__tests__/patterns/value-only-change.test.d.ts +11 -0
- package/dist/__tests__/patterns/value-only-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/value-only-change.test.js +159 -0
- package/dist/__tests__/patterns/value-only-change.test.js.map +1 -0
- package/dist/__tests__/patterns/whitespace-only.test.d.ts +10 -0
- package/dist/__tests__/patterns/whitespace-only.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/whitespace-only.test.js +177 -0
- package/dist/__tests__/patterns/whitespace-only.test.js.map +1 -0
- package/dist/__tests__/resolvers/css.test.d.ts +12 -0
- package/dist/__tests__/resolvers/css.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/css.test.js +171 -0
- package/dist/__tests__/resolvers/css.test.js.map +1 -0
- package/dist/__tests__/resolvers/imports.test.d.ts +12 -0
- package/dist/__tests__/resolvers/imports.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/imports.test.js +135 -0
- package/dist/__tests__/resolvers/imports.test.js.map +1 -0
- package/dist/__tests__/resolvers/json.test.d.ts +12 -0
- package/dist/__tests__/resolvers/json.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/json.test.js +184 -0
- package/dist/__tests__/resolvers/json.test.js.map +1 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.d.ts +12 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.js +187 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.js.map +1 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts +12 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.js +175 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.js.map +1 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts +12 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.js +165 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.js.map +1 -0
- package/dist/__tests__/resolvers/markdown.test.d.ts +12 -0
- package/dist/__tests__/resolvers/markdown.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/markdown.test.js +188 -0
- package/dist/__tests__/resolvers/markdown.test.js.map +1 -0
- package/dist/__tests__/resolvers/vue.test.d.ts +12 -0
- package/dist/__tests__/resolvers/vue.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/vue.test.js +225 -0
- package/dist/__tests__/resolvers/vue.test.js.map +1 -0
- package/dist/__tests__/resolvers/yaml.test.d.ts +12 -0
- package/dist/__tests__/resolvers/yaml.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/yaml.test.js +203 -0
- package/dist/__tests__/resolvers/yaml.test.js.map +1 -0
- package/dist/__tests__/structural/grandeur-nature.test.d.ts +31 -0
- package/dist/__tests__/structural/grandeur-nature.test.d.ts.map +1 -0
- package/dist/__tests__/structural/grandeur-nature.test.js +264 -0
- package/dist/__tests__/structural/grandeur-nature.test.js.map +1 -0
- package/dist/__tests__/structural/languages.test.d.ts +5 -0
- package/dist/__tests__/structural/languages.test.d.ts.map +1 -0
- package/dist/__tests__/structural/languages.test.js +74 -0
- package/dist/__tests__/structural/languages.test.js.map +1 -0
- package/dist/__tests__/structural/matching.test.d.ts +6 -0
- package/dist/__tests__/structural/matching.test.d.ts.map +1 -0
- package/dist/__tests__/structural/matching.test.js +113 -0
- package/dist/__tests__/structural/matching.test.js.map +1 -0
- package/dist/__tests__/structural/merge.test.d.ts +6 -0
- package/dist/__tests__/structural/merge.test.d.ts.map +1 -0
- package/dist/__tests__/structural/merge.test.js +117 -0
- package/dist/__tests__/structural/merge.test.js.map +1 -0
- package/dist/__tests__/structural/reconstruct.test.d.ts +6 -0
- package/dist/__tests__/structural/reconstruct.test.d.ts.map +1 -0
- package/dist/__tests__/structural/reconstruct.test.js +104 -0
- package/dist/__tests__/structural/reconstruct.test.js.map +1 -0
- package/dist/__tests__/structural/structural-index.test.d.ts +14 -0
- package/dist/__tests__/structural/structural-index.test.d.ts.map +1 -0
- package/dist/__tests__/structural/structural-index.test.js +108 -0
- package/dist/__tests__/structural/structural-index.test.js.map +1 -0
- package/dist/__tests__/v2-core-scenarios.test.d.ts +35 -0
- package/dist/__tests__/v2-core-scenarios.test.d.ts.map +1 -0
- package/dist/__tests__/v2-core-scenarios.test.js +692 -0
- package/dist/__tests__/v2-core-scenarios.test.js.map +1 -0
- package/dist/__tests__/validation-parse-tree.test.d.ts +15 -0
- package/dist/__tests__/validation-parse-tree.test.d.ts.map +1 -0
- package/dist/__tests__/validation-parse-tree.test.js +243 -0
- package/dist/__tests__/validation-parse-tree.test.js.map +1 -0
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -1
- package/dist/diff/index.d.ts.map +1 -1
- package/dist/diff/index.js +1 -3
- package/dist/diff/index.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/patterns/utils.d.ts +8 -7
- package/dist/patterns/utils.d.ts.map +1 -1
- package/dist/patterns/utils.js +13 -12
- package/dist/patterns/utils.js.map +1 -1
- package/dist/resolver/adapters/strict-node.d.ts +32 -0
- package/dist/resolver/adapters/strict-node.d.ts.map +1 -0
- package/dist/resolver/adapters/strict-node.js +117 -0
- package/dist/resolver/adapters/strict-node.js.map +1 -0
- package/dist/resolver/index.d.ts +33 -0
- package/dist/resolver/index.d.ts.map +1 -1
- package/dist/resolver/index.js +113 -0
- package/dist/resolver/index.js.map +1 -1
- package/dist/resolver/policy.d.ts.map +1 -1
- package/dist/resolver/policy.js +3 -0
- package/dist/resolver/policy.js.map +1 -1
- package/dist/resolver/validate-parse-tree.d.ts +52 -0
- package/dist/resolver/validate-parse-tree.d.ts.map +1 -0
- package/dist/resolver/validate-parse-tree.js +87 -0
- package/dist/resolver/validate-parse-tree.js.map +1 -0
- package/dist/resolver/validate-strict.d.ts +27 -0
- package/dist/resolver/validate-strict.d.ts.map +1 -0
- package/dist/resolver/validate-strict.js +41 -0
- package/dist/resolver/validate-strict.js.map +1 -0
- package/dist/resolver/validation.d.ts.map +1 -1
- package/dist/resolver/validation.js +15 -1
- package/dist/resolver/validation.js.map +1 -1
- package/dist/resolvers/dispatcher.d.ts +17 -1
- package/dist/resolvers/dispatcher.d.ts.map +1 -1
- package/dist/resolvers/dispatcher.js.map +1 -1
- package/dist/structural/entities.d.ts +44 -0
- package/dist/structural/entities.d.ts.map +1 -0
- package/dist/structural/entities.js +315 -0
- package/dist/structural/entities.js.map +1 -0
- package/dist/structural/index.d.ts +48 -0
- package/dist/structural/index.d.ts.map +1 -0
- package/dist/structural/index.js +177 -0
- package/dist/structural/index.js.map +1 -0
- package/dist/structural/matching.d.ts +46 -0
- package/dist/structural/matching.d.ts.map +1 -0
- package/dist/structural/matching.js +83 -0
- package/dist/structural/matching.js.map +1 -0
- package/dist/structural/merge.d.ts +45 -0
- package/dist/structural/merge.d.ts.map +1 -0
- package/dist/structural/merge.js +127 -0
- package/dist/structural/merge.js.map +1 -0
- package/dist/structural/parsers/adapters/browser.d.ts +22 -0
- package/dist/structural/parsers/adapters/browser.d.ts.map +1 -0
- package/dist/structural/parsers/adapters/browser.js +27 -0
- package/dist/structural/parsers/adapters/browser.js.map +1 -0
- package/dist/structural/parsers/adapters/node.d.ts +18 -0
- package/dist/structural/parsers/adapters/node.d.ts.map +1 -0
- package/dist/structural/parsers/adapters/node.js +42 -0
- package/dist/structural/parsers/adapters/node.js.map +1 -0
- package/dist/structural/parsers/adapters/tauri.d.ts +26 -0
- package/dist/structural/parsers/adapters/tauri.d.ts.map +1 -0
- package/dist/structural/parsers/adapters/tauri.js +34 -0
- package/dist/structural/parsers/adapters/tauri.js.map +1 -0
- package/dist/structural/parsers/grammars/languages.d.ts +32 -0
- package/dist/structural/parsers/grammars/languages.d.ts.map +1 -0
- package/dist/structural/parsers/grammars/languages.js +73 -0
- package/dist/structural/parsers/grammars/languages.js.map +1 -0
- package/dist/structural/parsers/grammars/ts.d.ts +26 -0
- package/dist/structural/parsers/grammars/ts.d.ts.map +1 -0
- package/dist/structural/parsers/grammars/ts.js +46 -0
- package/dist/structural/parsers/grammars/ts.js.map +1 -0
- package/dist/structural/parsers/loader.d.ts +74 -0
- package/dist/structural/parsers/loader.d.ts.map +1 -0
- package/dist/structural/parsers/loader.js +181 -0
- package/dist/structural/parsers/loader.js.map +1 -0
- package/dist/structural/reconstruct.d.ts +28 -0
- package/dist/structural/reconstruct.d.ts.map +1 -0
- package/dist/structural/reconstruct.js +63 -0
- package/dist/structural/reconstruct.js.map +1 -0
- package/dist/types.d.ts +60 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +16 -2
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver lockfile-pnpm (pnpm-lock.yaml) — GitWand
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — package ajouté dans `packages:` d'un seul côté
|
|
6
|
+
* F2 — même package, version différente → prefer theirs ou conflit
|
|
7
|
+
* F3 — lockfile minimal
|
|
8
|
+
* F4 — ajout dans `importers:` d'un seul côté
|
|
9
|
+
* F5 — détection du nom `pnpm-lock.yaml` → bon resolver utilisé
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { resolve } from "../../resolver.js";
|
|
13
|
+
// ─── base lockfile ─────────────────────────────────────────────────────────────
|
|
14
|
+
const baseLock = `lockfileVersion: '9.0'
|
|
15
|
+
|
|
16
|
+
settings:
|
|
17
|
+
autoInstallPeers: true
|
|
18
|
+
excludeLinksFromLockfile: false
|
|
19
|
+
|
|
20
|
+
importers:
|
|
21
|
+
.:
|
|
22
|
+
dependencies:
|
|
23
|
+
vue:
|
|
24
|
+
specifier: ^3.4.0
|
|
25
|
+
version: 3.4.0
|
|
26
|
+
|
|
27
|
+
packages:
|
|
28
|
+
|
|
29
|
+
/vue@3.4.0:
|
|
30
|
+
resolution: {integrity: sha512-vue}
|
|
31
|
+
engines: {node: '>=16.11.0'}
|
|
32
|
+
`;
|
|
33
|
+
// ─── F1 — package ajouté dans packages: d'un seul côté ───────────────────────
|
|
34
|
+
describe("F1 — pnpm-lock.yaml : package ajouté dans packages: d'un seul côté (diff3)", () => {
|
|
35
|
+
const oursLock = baseLock + `
|
|
36
|
+
/axios@1.6.0:
|
|
37
|
+
resolution: {integrity: sha512-axios}
|
|
38
|
+
engines: {node: '>=16'}
|
|
39
|
+
`;
|
|
40
|
+
const input = [
|
|
41
|
+
`<<<<<<< ours`,
|
|
42
|
+
...oursLock.split("\n"),
|
|
43
|
+
`||||||| base`,
|
|
44
|
+
...baseLock.split("\n"),
|
|
45
|
+
`=======`,
|
|
46
|
+
...baseLock.split("\n"),
|
|
47
|
+
`>>>>>>> theirs`,
|
|
48
|
+
].join("\n");
|
|
49
|
+
it("auto-résout via le resolver lockfile-pnpm", () => {
|
|
50
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
51
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
52
|
+
});
|
|
53
|
+
it("le résultat contient le package ajouté", () => {
|
|
54
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
55
|
+
expect(result.mergedContent).toContain("axios");
|
|
56
|
+
expect(result.mergedContent).toContain("vue");
|
|
57
|
+
});
|
|
58
|
+
it("la raison mentionne [lockfile-pnpm]", () => {
|
|
59
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
60
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-pnpm\]/i);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
// ─── F2 — même package, version différente ────────────────────────────────────
|
|
64
|
+
describe("F2 — pnpm-lock.yaml : même package, version différente (diff3)", () => {
|
|
65
|
+
const oursLock = baseLock.replace("3.4.0", "3.4.1").replace("sha512-vue", "sha512-vue-new");
|
|
66
|
+
const theirsLock = baseLock.replace("3.4.0", "3.5.0").replace("sha512-vue", "sha512-vue-theirs");
|
|
67
|
+
const input = [
|
|
68
|
+
`<<<<<<< ours`,
|
|
69
|
+
...oursLock.split("\n"),
|
|
70
|
+
`||||||| base`,
|
|
71
|
+
...baseLock.split("\n"),
|
|
72
|
+
`=======`,
|
|
73
|
+
...theirsLock.split("\n"),
|
|
74
|
+
`>>>>>>> theirs`,
|
|
75
|
+
].join("\n");
|
|
76
|
+
it("ne lève pas d'exception", () => {
|
|
77
|
+
expect(() => resolve(input, "pnpm-lock.yaml")).not.toThrow();
|
|
78
|
+
});
|
|
79
|
+
it("la raison mentionne [lockfile-pnpm]", () => {
|
|
80
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
81
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-pnpm\]/i);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
// ─── F3 — lockfile minimal ────────────────────────────────────────────────────
|
|
85
|
+
describe("F3 — pnpm-lock.yaml minimal : ne plante pas", () => {
|
|
86
|
+
const minimal = `lockfileVersion: '9.0'\n\npackages:\n`;
|
|
87
|
+
const input = [
|
|
88
|
+
`<<<<<<< ours`,
|
|
89
|
+
...minimal.split("\n"),
|
|
90
|
+
`||||||| base`,
|
|
91
|
+
...minimal.split("\n"),
|
|
92
|
+
`=======`,
|
|
93
|
+
...minimal.split("\n"),
|
|
94
|
+
`>>>>>>> theirs`,
|
|
95
|
+
].join("\n");
|
|
96
|
+
it("ne lève pas d'exception", () => {
|
|
97
|
+
expect(() => resolve(input, "pnpm-lock.yaml")).not.toThrow();
|
|
98
|
+
});
|
|
99
|
+
it("produit un résultat avec au moins un hunk", () => {
|
|
100
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
101
|
+
expect(result.hunks.length).toBeGreaterThanOrEqual(1);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
// ─── F4 — ajout dans importers: d'un seul côté ───────────────────────────────
|
|
105
|
+
describe("F4 — pnpm-lock.yaml : ajout dans importers: d'un seul côté (diff3)", () => {
|
|
106
|
+
const oursLock = `lockfileVersion: '9.0'
|
|
107
|
+
|
|
108
|
+
settings:
|
|
109
|
+
autoInstallPeers: true
|
|
110
|
+
|
|
111
|
+
importers:
|
|
112
|
+
.:
|
|
113
|
+
dependencies:
|
|
114
|
+
vue:
|
|
115
|
+
specifier: ^3.4.0
|
|
116
|
+
version: 3.4.0
|
|
117
|
+
axios:
|
|
118
|
+
specifier: ^1.6.0
|
|
119
|
+
version: 1.6.0
|
|
120
|
+
|
|
121
|
+
packages:
|
|
122
|
+
|
|
123
|
+
/vue@3.4.0:
|
|
124
|
+
resolution: {integrity: sha512-vue}
|
|
125
|
+
|
|
126
|
+
/axios@1.6.0:
|
|
127
|
+
resolution: {integrity: sha512-axios}
|
|
128
|
+
`;
|
|
129
|
+
const input = [
|
|
130
|
+
`<<<<<<< ours`,
|
|
131
|
+
...oursLock.split("\n"),
|
|
132
|
+
`||||||| base`,
|
|
133
|
+
...baseLock.split("\n"),
|
|
134
|
+
`=======`,
|
|
135
|
+
...baseLock.split("\n"),
|
|
136
|
+
`>>>>>>> theirs`,
|
|
137
|
+
].join("\n");
|
|
138
|
+
it("auto-résout via le resolver lockfile-pnpm", () => {
|
|
139
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
140
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
141
|
+
});
|
|
142
|
+
it("le résultat contient la dépendance ajoutée dans importers", () => {
|
|
143
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
144
|
+
expect(result.mergedContent).toContain("axios");
|
|
145
|
+
});
|
|
146
|
+
it("la raison mentionne [lockfile-pnpm]", () => {
|
|
147
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
148
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-pnpm\]/i);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
// ─── F5 — détection du nom de fichier ────────────────────────────────────────
|
|
152
|
+
describe("F5 — pnpm-lock.yaml : détection du nom de fichier", () => {
|
|
153
|
+
const oursLock = baseLock + `
|
|
154
|
+
/lodash@4.17.21:
|
|
155
|
+
resolution: {integrity: sha512-lodash}
|
|
156
|
+
`;
|
|
157
|
+
const input = [
|
|
158
|
+
`<<<<<<< ours`,
|
|
159
|
+
...oursLock.split("\n"),
|
|
160
|
+
`||||||| base`,
|
|
161
|
+
...baseLock.split("\n"),
|
|
162
|
+
`=======`,
|
|
163
|
+
...baseLock.split("\n"),
|
|
164
|
+
`>>>>>>> theirs`,
|
|
165
|
+
].join("\n");
|
|
166
|
+
it("le nom pnpm-lock.yaml active le bon resolver", () => {
|
|
167
|
+
const result = resolve(input, "pnpm-lock.yaml");
|
|
168
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-pnpm\]/i);
|
|
169
|
+
});
|
|
170
|
+
it("le nom dans un sous-dossier est aussi détecté", () => {
|
|
171
|
+
const result = resolve(input, "packages/core/pnpm-lock.yaml");
|
|
172
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-pnpm\]/i);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=lockfile-pnpm.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-pnpm.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/lockfile-pnpm.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,kFAAkF;AAElF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;CAkBhB,CAAC;AAEF,gFAAgF;AAEhF,QAAQ,CAAC,4EAA4E,EAAE,GAAG,EAAE;IAC1F,MAAM,QAAQ,GAAG,QAAQ,GAAG;;;;CAI7B,CAAC;IAEA,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,SAAS;QACT,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,QAAQ,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC9E,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAEjG,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,SAAS;QACT,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QACzB,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,MAAM,OAAO,GAAG,uCAAuC,CAAC;IAExD,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACtB,cAAc;QACd,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACtB,SAAS;QACT,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACtB,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,QAAQ,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAClF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBlB,CAAC;IAEA,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,SAAS;QACT,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IACjE,MAAM,QAAQ,GAAG,QAAQ,GAAG;;;CAG7B,CAAC;IAEA,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,cAAc;QACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,SAAS;QACT,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver lockfile-yarn (yarn.lock) — GitWand
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — bloc de package ajouté d'un seul côté
|
|
6
|
+
* F2 — même bloc, version différente → prefer theirs
|
|
7
|
+
* F3 — yarn.lock minimal
|
|
8
|
+
* F4 — deux packages différents ajoutés de chaque côté
|
|
9
|
+
* F5 — détection du nom `yarn.lock` → bon resolver utilisé
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=lockfile-yarn.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-yarn.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/lockfile-yarn.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver lockfile-yarn (yarn.lock) — GitWand
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — bloc de package ajouté d'un seul côté
|
|
6
|
+
* F2 — même bloc, version différente → prefer theirs
|
|
7
|
+
* F3 — yarn.lock minimal
|
|
8
|
+
* F4 — deux packages différents ajoutés de chaque côté
|
|
9
|
+
* F5 — détection du nom `yarn.lock` → bon resolver utilisé
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { resolve } from "../../resolver.js";
|
|
13
|
+
// ─── base lockfile ─────────────────────────────────────────────────────────────
|
|
14
|
+
const baseLock = `# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
15
|
+
# yarn lockfile v1
|
|
16
|
+
|
|
17
|
+
react@^18.0.0:
|
|
18
|
+
version "18.2.0"
|
|
19
|
+
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz"
|
|
20
|
+
integrity sha512-react
|
|
21
|
+
|
|
22
|
+
vue@^3.0.0:
|
|
23
|
+
version "3.4.0"
|
|
24
|
+
resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.0.tgz"
|
|
25
|
+
integrity sha512-vue
|
|
26
|
+
`;
|
|
27
|
+
// ─── F1 — bloc de package ajouté d'un seul côté ──────────────────────────────
|
|
28
|
+
describe("F1 — yarn.lock : bloc de package ajouté d'un seul côté (diff3)", () => {
|
|
29
|
+
const oursLock = baseLock + `
|
|
30
|
+
axios@^1.0.0:
|
|
31
|
+
version "1.6.0"
|
|
32
|
+
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.0.tgz"
|
|
33
|
+
integrity sha512-axios
|
|
34
|
+
`;
|
|
35
|
+
const input = [
|
|
36
|
+
`<<<<<<< ours`,
|
|
37
|
+
...oursLock.split("\n"),
|
|
38
|
+
`||||||| base`,
|
|
39
|
+
...baseLock.split("\n"),
|
|
40
|
+
`=======`,
|
|
41
|
+
...baseLock.split("\n"),
|
|
42
|
+
`>>>>>>> theirs`,
|
|
43
|
+
].join("\n");
|
|
44
|
+
it("auto-résout via le resolver lockfile-yarn", () => {
|
|
45
|
+
const result = resolve(input, "yarn.lock");
|
|
46
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
47
|
+
});
|
|
48
|
+
it("le résultat contient le bloc de package ajouté", () => {
|
|
49
|
+
const result = resolve(input, "yarn.lock");
|
|
50
|
+
expect(result.mergedContent).toContain("axios@^1.0.0:");
|
|
51
|
+
expect(result.mergedContent).toContain("react@^18.0.0:");
|
|
52
|
+
expect(result.mergedContent).toContain("vue@^3.0.0:");
|
|
53
|
+
});
|
|
54
|
+
it("la raison mentionne [lockfile-yarn]", () => {
|
|
55
|
+
const result = resolve(input, "yarn.lock");
|
|
56
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-yarn\]/i);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
// ─── F2 — même bloc, version différente ───────────────────────────────────────
|
|
60
|
+
describe("F2 — yarn.lock : même bloc, version différente → prefer theirs (diff3)", () => {
|
|
61
|
+
const oursLock = baseLock.replace('"18.2.0"', '"18.3.0"').replace("sha512-react", "sha512-react-ours");
|
|
62
|
+
const theirsLock = baseLock.replace('"18.2.0"', '"18.3.1"').replace("sha512-react", "sha512-react-theirs");
|
|
63
|
+
const input = [
|
|
64
|
+
`<<<<<<< ours`,
|
|
65
|
+
...oursLock.split("\n"),
|
|
66
|
+
`||||||| base`,
|
|
67
|
+
...baseLock.split("\n"),
|
|
68
|
+
`=======`,
|
|
69
|
+
...theirsLock.split("\n"),
|
|
70
|
+
`>>>>>>> theirs`,
|
|
71
|
+
].join("\n");
|
|
72
|
+
it("ne lève pas d'exception", () => {
|
|
73
|
+
expect(() => resolve(input, "yarn.lock")).not.toThrow();
|
|
74
|
+
});
|
|
75
|
+
it("la raison mentionne [lockfile-yarn]", () => {
|
|
76
|
+
const result = resolve(input, "yarn.lock");
|
|
77
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-yarn\]/i);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
// ─── F3 — yarn.lock minimal ───────────────────────────────────────────────────
|
|
81
|
+
describe("F3 — yarn.lock minimal : ne plante pas", () => {
|
|
82
|
+
const minimal = `# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n# yarn lockfile v1\n`;
|
|
83
|
+
const input = [
|
|
84
|
+
`<<<<<<< ours`,
|
|
85
|
+
...minimal.split("\n"),
|
|
86
|
+
`||||||| base`,
|
|
87
|
+
...minimal.split("\n"),
|
|
88
|
+
`=======`,
|
|
89
|
+
...minimal.split("\n"),
|
|
90
|
+
`>>>>>>> theirs`,
|
|
91
|
+
].join("\n");
|
|
92
|
+
it("ne lève pas d'exception", () => {
|
|
93
|
+
expect(() => resolve(input, "yarn.lock")).not.toThrow();
|
|
94
|
+
});
|
|
95
|
+
it("produit un résultat avec au moins un hunk", () => {
|
|
96
|
+
const result = resolve(input, "yarn.lock");
|
|
97
|
+
expect(result.hunks.length).toBeGreaterThanOrEqual(1);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
// ─── F4 — deux packages différents ajoutés de chaque côté ────────────────────
|
|
101
|
+
describe("F4 — yarn.lock : packages différents ajoutés de chaque côté (diff3)", () => {
|
|
102
|
+
const oursLock = baseLock + `
|
|
103
|
+
lodash@^4.0.0:
|
|
104
|
+
version "4.17.21"
|
|
105
|
+
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz"
|
|
106
|
+
integrity sha512-lodash
|
|
107
|
+
`;
|
|
108
|
+
const theirsLock = baseLock + `
|
|
109
|
+
date-fns@^3.0.0:
|
|
110
|
+
version "3.0.0"
|
|
111
|
+
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.0.0.tgz"
|
|
112
|
+
integrity sha512-datefns
|
|
113
|
+
`;
|
|
114
|
+
const input = [
|
|
115
|
+
`<<<<<<< ours`,
|
|
116
|
+
...oursLock.split("\n"),
|
|
117
|
+
`||||||| base`,
|
|
118
|
+
...baseLock.split("\n"),
|
|
119
|
+
`=======`,
|
|
120
|
+
...theirsLock.split("\n"),
|
|
121
|
+
`>>>>>>> theirs`,
|
|
122
|
+
].join("\n");
|
|
123
|
+
it("auto-résout avec les deux packages", () => {
|
|
124
|
+
const result = resolve(input, "yarn.lock");
|
|
125
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
126
|
+
});
|
|
127
|
+
it("le résultat contient les deux packages ajoutés", () => {
|
|
128
|
+
const result = resolve(input, "yarn.lock");
|
|
129
|
+
expect(result.mergedContent).toContain("lodash@^4.0.0:");
|
|
130
|
+
expect(result.mergedContent).toContain("date-fns@^3.0.0:");
|
|
131
|
+
expect(result.mergedContent).toContain("react@^18.0.0:");
|
|
132
|
+
expect(result.mergedContent).toContain("vue@^3.0.0:");
|
|
133
|
+
});
|
|
134
|
+
it("la raison mentionne [lockfile-yarn]", () => {
|
|
135
|
+
const result = resolve(input, "yarn.lock");
|
|
136
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-yarn\]/i);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
// ─── F5 — détection du nom de fichier ────────────────────────────────────────
|
|
140
|
+
describe("F5 — yarn.lock : détection du nom de fichier", () => {
|
|
141
|
+
const oursLock = baseLock + `
|
|
142
|
+
zod@^3.0.0:
|
|
143
|
+
version "3.22.0"
|
|
144
|
+
resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.0.tgz"
|
|
145
|
+
integrity sha512-zod
|
|
146
|
+
`;
|
|
147
|
+
const input = [
|
|
148
|
+
`<<<<<<< ours`,
|
|
149
|
+
...oursLock.split("\n"),
|
|
150
|
+
`||||||| base`,
|
|
151
|
+
...baseLock.split("\n"),
|
|
152
|
+
`=======`,
|
|
153
|
+
...baseLock.split("\n"),
|
|
154
|
+
`>>>>>>> theirs`,
|
|
155
|
+
].join("\n");
|
|
156
|
+
it("le nom yarn.lock active le bon resolver", () => {
|
|
157
|
+
const result = resolve(input, "yarn.lock");
|
|
158
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-yarn\]/i);
|
|
159
|
+
});
|
|
160
|
+
it("le nom dans un sous-dossier est aussi détecté", () => {
|
|
161
|
+
const result = resolve(input, "apps/desktop/yarn.lock");
|
|
162
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-yarn\]/i);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=lockfile-yarn.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-yarn.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/lockfile-yarn.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver Markdown (GitWand)
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — section ajoutée d'un seul côté
|
|
6
|
+
* F2 — même section modifiée des deux côtés → conflit ou fallback
|
|
7
|
+
* F3 — Markdown minimal (texte sans heading)
|
|
8
|
+
* F4 — README avec section ## Features ajoutée d'un côté
|
|
9
|
+
* F5 — CHANGELOG avec entrée de version ajoutée
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=markdown.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/markdown.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver Markdown (GitWand)
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — section ajoutée d'un seul côté
|
|
6
|
+
* F2 — même section modifiée des deux côtés → conflit ou fallback
|
|
7
|
+
* F3 — Markdown minimal (texte sans heading)
|
|
8
|
+
* F4 — README avec section ## Features ajoutée d'un côté
|
|
9
|
+
* F5 — CHANGELOG avec entrée de version ajoutée
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { resolve } from "../../resolver.js";
|
|
13
|
+
// ─── F1 — section ajoutée d'un seul côté ─────────────────────────────────────
|
|
14
|
+
describe("F1 — Markdown : section ajoutée d'un seul côté (diff3)", () => {
|
|
15
|
+
const input = [
|
|
16
|
+
`<<<<<<< ours`,
|
|
17
|
+
`# My Project`,
|
|
18
|
+
``,
|
|
19
|
+
`## Introduction`,
|
|
20
|
+
``,
|
|
21
|
+
`This is my project.`,
|
|
22
|
+
``,
|
|
23
|
+
`## Installation`,
|
|
24
|
+
``,
|
|
25
|
+
`Run \`npm install\`.`,
|
|
26
|
+
`||||||| base`,
|
|
27
|
+
`# My Project`,
|
|
28
|
+
``,
|
|
29
|
+
`## Introduction`,
|
|
30
|
+
``,
|
|
31
|
+
`This is my project.`,
|
|
32
|
+
`=======`,
|
|
33
|
+
`# My Project`,
|
|
34
|
+
``,
|
|
35
|
+
`## Introduction`,
|
|
36
|
+
``,
|
|
37
|
+
`This is my project.`,
|
|
38
|
+
`>>>>>>> theirs`,
|
|
39
|
+
].join("\n");
|
|
40
|
+
it("auto-résout via le resolver markdown", () => {
|
|
41
|
+
const result = resolve(input, "README.md");
|
|
42
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
43
|
+
});
|
|
44
|
+
it("le résultat contient la section ajoutée", () => {
|
|
45
|
+
const result = resolve(input, "README.md");
|
|
46
|
+
expect(result.mergedContent).toContain("## Installation");
|
|
47
|
+
});
|
|
48
|
+
it("la raison mentionne [markdown]", () => {
|
|
49
|
+
const result = resolve(input, "README.md");
|
|
50
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[markdown\]/i);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
// ─── F2 — même section modifiée des deux côtés ────────────────────────────────
|
|
54
|
+
describe("F2 — Markdown : même section modifiée des deux côtés (diff3)", () => {
|
|
55
|
+
const input = [
|
|
56
|
+
`<<<<<<< ours`,
|
|
57
|
+
`# My Project`,
|
|
58
|
+
``,
|
|
59
|
+
`## Introduction`,
|
|
60
|
+
``,
|
|
61
|
+
`This is my awesome project with many features.`,
|
|
62
|
+
`||||||| base`,
|
|
63
|
+
`# My Project`,
|
|
64
|
+
``,
|
|
65
|
+
`## Introduction`,
|
|
66
|
+
``,
|
|
67
|
+
`This is my project.`,
|
|
68
|
+
`=======`,
|
|
69
|
+
`# My Project`,
|
|
70
|
+
``,
|
|
71
|
+
`## Introduction`,
|
|
72
|
+
``,
|
|
73
|
+
`This is my project, now with TypeScript support.`,
|
|
74
|
+
`>>>>>>> theirs`,
|
|
75
|
+
].join("\n");
|
|
76
|
+
it("ne lève pas d'exception", () => {
|
|
77
|
+
expect(() => resolve(input, "README.md")).not.toThrow();
|
|
78
|
+
});
|
|
79
|
+
it("la raison mentionne [markdown]", () => {
|
|
80
|
+
const result = resolve(input, "README.md");
|
|
81
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[markdown\]/i);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
// ─── F3 — Markdown minimal ────────────────────────────────────────────────────
|
|
85
|
+
describe("F3 — Markdown minimal : ne plante pas", () => {
|
|
86
|
+
const input = [
|
|
87
|
+
`<<<<<<< ours`,
|
|
88
|
+
`Some text on ours side.`,
|
|
89
|
+
`=======`,
|
|
90
|
+
`Some text on theirs side.`,
|
|
91
|
+
`>>>>>>> theirs`,
|
|
92
|
+
].join("\n");
|
|
93
|
+
it("ne lève pas d'exception", () => {
|
|
94
|
+
expect(() => resolve(input, "NOTES.md")).not.toThrow();
|
|
95
|
+
});
|
|
96
|
+
it("produit un résultat avec au moins un hunk", () => {
|
|
97
|
+
const result = resolve(input, "NOTES.md");
|
|
98
|
+
expect(result.hunks.length).toBeGreaterThanOrEqual(1);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
// ─── F4 — README avec section ## Features ajoutée d'un côté ──────────────────
|
|
102
|
+
describe("F4 — README : ajout de section ## Features (diff3)", () => {
|
|
103
|
+
const input = [
|
|
104
|
+
`<<<<<<< ours`,
|
|
105
|
+
`# GitWand`,
|
|
106
|
+
``,
|
|
107
|
+
`## Overview`,
|
|
108
|
+
``,
|
|
109
|
+
`GitWand is a Git client.`,
|
|
110
|
+
``,
|
|
111
|
+
`## Features`,
|
|
112
|
+
``,
|
|
113
|
+
`- Auto-resolve conflicts`,
|
|
114
|
+
`- AI-powered merge`,
|
|
115
|
+
`||||||| base`,
|
|
116
|
+
`# GitWand`,
|
|
117
|
+
``,
|
|
118
|
+
`## Overview`,
|
|
119
|
+
``,
|
|
120
|
+
`GitWand is a Git client.`,
|
|
121
|
+
`=======`,
|
|
122
|
+
`# GitWand`,
|
|
123
|
+
``,
|
|
124
|
+
`## Overview`,
|
|
125
|
+
``,
|
|
126
|
+
`GitWand is a Git client.`,
|
|
127
|
+
`>>>>>>> theirs`,
|
|
128
|
+
].join("\n");
|
|
129
|
+
it("auto-résout via le resolver markdown", () => {
|
|
130
|
+
const result = resolve(input, "README.md");
|
|
131
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
132
|
+
});
|
|
133
|
+
it("le résultat contient la section Features", () => {
|
|
134
|
+
const result = resolve(input, "README.md");
|
|
135
|
+
expect(result.mergedContent).toContain("## Features");
|
|
136
|
+
expect(result.mergedContent).toContain("Auto-resolve conflicts");
|
|
137
|
+
});
|
|
138
|
+
it("la raison mentionne [markdown]", () => {
|
|
139
|
+
const result = resolve(input, "README.md");
|
|
140
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[markdown\]/i);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
// ─── F5 — CHANGELOG avec entrée de version ajoutée ───────────────────────────
|
|
144
|
+
describe("F5 — CHANGELOG : entrée de version ajoutée d'un côté (diff3)", () => {
|
|
145
|
+
const input = [
|
|
146
|
+
`<<<<<<< ours`,
|
|
147
|
+
`# Changelog`,
|
|
148
|
+
``,
|
|
149
|
+
`## [2.1.0] - 2025-04-01`,
|
|
150
|
+
``,
|
|
151
|
+
`### Added`,
|
|
152
|
+
`- New conflict resolver for YAML files`,
|
|
153
|
+
``,
|
|
154
|
+
`## [2.0.0] - 2025-01-15`,
|
|
155
|
+
``,
|
|
156
|
+
`### Breaking Changes`,
|
|
157
|
+
`- Revamped API`,
|
|
158
|
+
`||||||| base`,
|
|
159
|
+
`# Changelog`,
|
|
160
|
+
``,
|
|
161
|
+
`## [2.0.0] - 2025-01-15`,
|
|
162
|
+
``,
|
|
163
|
+
`### Breaking Changes`,
|
|
164
|
+
`- Revamped API`,
|
|
165
|
+
`=======`,
|
|
166
|
+
`# Changelog`,
|
|
167
|
+
``,
|
|
168
|
+
`## [2.0.0] - 2025-01-15`,
|
|
169
|
+
``,
|
|
170
|
+
`### Breaking Changes`,
|
|
171
|
+
`- Revamped API`,
|
|
172
|
+
`>>>>>>> theirs`,
|
|
173
|
+
].join("\n");
|
|
174
|
+
it("auto-résout via le resolver markdown", () => {
|
|
175
|
+
const result = resolve(input, "CHANGELOG.md");
|
|
176
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
177
|
+
});
|
|
178
|
+
it("le résultat contient l'entrée de version ajoutée", () => {
|
|
179
|
+
const result = resolve(input, "CHANGELOG.md");
|
|
180
|
+
expect(result.mergedContent).toContain("## [2.1.0]");
|
|
181
|
+
expect(result.mergedContent).toContain("## [2.0.0]");
|
|
182
|
+
});
|
|
183
|
+
it("la raison mentionne [markdown]", () => {
|
|
184
|
+
const result = resolve(input, "CHANGELOG.md");
|
|
185
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[markdown\]/i);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
//# sourceMappingURL=markdown.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/markdown.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver Vue SFC (GitWand)
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — modification dans <template> d'un seul côté
|
|
6
|
+
* F2 — modification dans <script setup> d'un seul côté
|
|
7
|
+
* F3 — fichier .vue minimal
|
|
8
|
+
* F4 — ajout d'un <style scoped> d'un côté
|
|
9
|
+
* F5 — conflit dans <template> des deux côtés → conflit ou fallback
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=vue.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/vue.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|