@gitwand/core 2.3.0 → 2.5.0
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 +377 -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/llm-proposed.test.d.ts +10 -0
- package/dist/__tests__/patterns/llm-proposed.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/llm-proposed.test.js +306 -0
- package/dist/__tests__/patterns/llm-proposed.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__/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/classifier.d.ts.map +1 -1
- package/dist/classifier.js +3 -0
- package/dist/classifier.js.map +1 -1
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +42 -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 +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/patterns/llm-proposed.d.ts +8 -0
- package/dist/patterns/llm-proposed.d.ts.map +1 -0
- package/dist/patterns/llm-proposed.js +66 -0
- package/dist/patterns/llm-proposed.js.map +1 -0
- 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 +20 -1
- package/dist/resolver/index.d.ts.map +1 -1
- package/dist/resolver/index.js +106 -5
- package/dist/resolver/index.js.map +1 -1
- package/dist/resolver/llm-pipeline.d.ts +33 -0
- package/dist/resolver/llm-pipeline.d.ts.map +1 -0
- package/dist/resolver/llm-pipeline.js +218 -0
- package/dist/resolver/llm-pipeline.js.map +1 -0
- package/dist/resolver/policy.d.ts.map +1 -1
- package/dist/resolver/policy.js +5 -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.map +1 -1
- package/dist/resolvers/dispatcher.js.map +1 -1
- package/dist/resolvers/llm-fallback.d.ts +41 -0
- package/dist/resolvers/llm-fallback.d.ts.map +1 -0
- package/dist/resolvers/llm-fallback.js +231 -0
- package/dist/resolvers/llm-fallback.js.map +1 -0
- package/dist/types.d.ts +183 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
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
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { resolve } from "../../resolver.js";
|
|
13
|
+
// ─── F1 — modification dans <template> d'un seul côté ────────────────────────
|
|
14
|
+
describe("F1 — Vue : modification dans <template> d'un seul côté (diff3)", () => {
|
|
15
|
+
const input = [
|
|
16
|
+
`<<<<<<< ours`,
|
|
17
|
+
`<template>`,
|
|
18
|
+
` <div class="app">`,
|
|
19
|
+
` <h1>Hello World</h1>`,
|
|
20
|
+
` <p>Welcome to my app</p>`,
|
|
21
|
+
` </div>`,
|
|
22
|
+
`</template>`,
|
|
23
|
+
``,
|
|
24
|
+
`<script setup>`,
|
|
25
|
+
`const title = 'Hello World';`,
|
|
26
|
+
`</script>`,
|
|
27
|
+
`||||||| base`,
|
|
28
|
+
`<template>`,
|
|
29
|
+
` <div class="app">`,
|
|
30
|
+
` <h1>Hello World</h1>`,
|
|
31
|
+
` </div>`,
|
|
32
|
+
`</template>`,
|
|
33
|
+
``,
|
|
34
|
+
`<script setup>`,
|
|
35
|
+
`const title = 'Hello World';`,
|
|
36
|
+
`</script>`,
|
|
37
|
+
`=======`,
|
|
38
|
+
`<template>`,
|
|
39
|
+
` <div class="app">`,
|
|
40
|
+
` <h1>Hello World</h1>`,
|
|
41
|
+
` </div>`,
|
|
42
|
+
`</template>`,
|
|
43
|
+
``,
|
|
44
|
+
`<script setup>`,
|
|
45
|
+
`const title = 'Hello World';`,
|
|
46
|
+
`</script>`,
|
|
47
|
+
`>>>>>>> theirs`,
|
|
48
|
+
].join("\n");
|
|
49
|
+
it("auto-résout via le resolver vue", () => {
|
|
50
|
+
const result = resolve(input, "App.vue");
|
|
51
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
52
|
+
});
|
|
53
|
+
it("le résultat contient la modification du template", () => {
|
|
54
|
+
const result = resolve(input, "App.vue");
|
|
55
|
+
expect(result.mergedContent).toContain("Welcome to my app");
|
|
56
|
+
});
|
|
57
|
+
it("la raison mentionne [vue]", () => {
|
|
58
|
+
const result = resolve(input, "App.vue");
|
|
59
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
// ─── F2 — modification dans <script setup> d'un seul côté ────────────────────
|
|
63
|
+
describe("F2 — Vue : modification dans <script setup> d'un seul côté (diff3)", () => {
|
|
64
|
+
const input = [
|
|
65
|
+
`<<<<<<< ours`,
|
|
66
|
+
`<template>`,
|
|
67
|
+
` <button @click="handleClick">Click me</button>`,
|
|
68
|
+
`</template>`,
|
|
69
|
+
``,
|
|
70
|
+
`<script setup lang="ts">`,
|
|
71
|
+
`import { ref } from 'vue';`,
|
|
72
|
+
`import { useRouter } from 'vue-router';`,
|
|
73
|
+
``,
|
|
74
|
+
`const count = ref(0);`,
|
|
75
|
+
`const router = useRouter();`,
|
|
76
|
+
``,
|
|
77
|
+
`function handleClick() {`,
|
|
78
|
+
` count.value++;`,
|
|
79
|
+
`}`,
|
|
80
|
+
`</script>`,
|
|
81
|
+
`||||||| base`,
|
|
82
|
+
`<template>`,
|
|
83
|
+
` <button @click="handleClick">Click me</button>`,
|
|
84
|
+
`</template>`,
|
|
85
|
+
``,
|
|
86
|
+
`<script setup lang="ts">`,
|
|
87
|
+
`import { ref } from 'vue';`,
|
|
88
|
+
``,
|
|
89
|
+
`const count = ref(0);`,
|
|
90
|
+
``,
|
|
91
|
+
`function handleClick() {`,
|
|
92
|
+
` count.value++;`,
|
|
93
|
+
`}`,
|
|
94
|
+
`</script>`,
|
|
95
|
+
`=======`,
|
|
96
|
+
`<template>`,
|
|
97
|
+
` <button @click="handleClick">Click me</button>`,
|
|
98
|
+
`</template>`,
|
|
99
|
+
``,
|
|
100
|
+
`<script setup lang="ts">`,
|
|
101
|
+
`import { ref } from 'vue';`,
|
|
102
|
+
``,
|
|
103
|
+
`const count = ref(0);`,
|
|
104
|
+
``,
|
|
105
|
+
`function handleClick() {`,
|
|
106
|
+
` count.value++;`,
|
|
107
|
+
`}`,
|
|
108
|
+
`</script>`,
|
|
109
|
+
`>>>>>>> theirs`,
|
|
110
|
+
].join("\n");
|
|
111
|
+
it("auto-résout via le resolver vue", () => {
|
|
112
|
+
const result = resolve(input, "Button.vue");
|
|
113
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
114
|
+
});
|
|
115
|
+
it("le résultat contient le code ajouté dans script setup", () => {
|
|
116
|
+
const result = resolve(input, "Button.vue");
|
|
117
|
+
expect(result.mergedContent).toContain("useRouter");
|
|
118
|
+
});
|
|
119
|
+
it("la raison mentionne [vue]", () => {
|
|
120
|
+
const result = resolve(input, "Button.vue");
|
|
121
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
// ─── F3 — fichier .vue minimal ────────────────────────────────────────────────
|
|
125
|
+
describe("F3 — Vue minimal : ne plante pas", () => {
|
|
126
|
+
const input = [
|
|
127
|
+
`<<<<<<< ours`,
|
|
128
|
+
`<template><div>Ours</div></template>`,
|
|
129
|
+
`=======`,
|
|
130
|
+
`<template><div>Theirs</div></template>`,
|
|
131
|
+
`>>>>>>> theirs`,
|
|
132
|
+
].join("\n");
|
|
133
|
+
it("ne lève pas d'exception", () => {
|
|
134
|
+
expect(() => resolve(input, "Minimal.vue")).not.toThrow();
|
|
135
|
+
});
|
|
136
|
+
it("produit un résultat avec au moins un hunk", () => {
|
|
137
|
+
const result = resolve(input, "Minimal.vue");
|
|
138
|
+
expect(result.hunks.length).toBeGreaterThanOrEqual(1);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
// ─── F4 — ajout d'un <style scoped> d'un côté ────────────────────────────────
|
|
142
|
+
describe("F4 — Vue : ajout d'un <style scoped> d'un côté (diff3)", () => {
|
|
143
|
+
const input = [
|
|
144
|
+
`<<<<<<< ours`,
|
|
145
|
+
`<template>`,
|
|
146
|
+
` <div class="card">Card content</div>`,
|
|
147
|
+
`</template>`,
|
|
148
|
+
``,
|
|
149
|
+
`<script setup lang="ts">`,
|
|
150
|
+
`// component logic`,
|
|
151
|
+
`</script>`,
|
|
152
|
+
``,
|
|
153
|
+
`<style scoped>`,
|
|
154
|
+
`.card {`,
|
|
155
|
+
` padding: 16px;`,
|
|
156
|
+
` border-radius: 8px;`,
|
|
157
|
+
` box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);`,
|
|
158
|
+
`}`,
|
|
159
|
+
`</style>`,
|
|
160
|
+
`||||||| base`,
|
|
161
|
+
`<template>`,
|
|
162
|
+
` <div class="card">Card content</div>`,
|
|
163
|
+
`</template>`,
|
|
164
|
+
``,
|
|
165
|
+
`<script setup lang="ts">`,
|
|
166
|
+
`// component logic`,
|
|
167
|
+
`</script>`,
|
|
168
|
+
`=======`,
|
|
169
|
+
`<template>`,
|
|
170
|
+
` <div class="card">Card content</div>`,
|
|
171
|
+
`</template>`,
|
|
172
|
+
``,
|
|
173
|
+
`<script setup lang="ts">`,
|
|
174
|
+
`// component logic`,
|
|
175
|
+
`</script>`,
|
|
176
|
+
`>>>>>>> theirs`,
|
|
177
|
+
].join("\n");
|
|
178
|
+
it("auto-résout via le resolver vue", () => {
|
|
179
|
+
const result = resolve(input, "Card.vue");
|
|
180
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
181
|
+
});
|
|
182
|
+
it("le résultat contient le bloc style ajouté", () => {
|
|
183
|
+
const result = resolve(input, "Card.vue");
|
|
184
|
+
expect(result.mergedContent).toContain("<style scoped>");
|
|
185
|
+
expect(result.mergedContent).toContain(".card");
|
|
186
|
+
});
|
|
187
|
+
it("la raison mentionne [vue]", () => {
|
|
188
|
+
const result = resolve(input, "Card.vue");
|
|
189
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
// ─── F5 — conflit dans <template> des deux côtés ─────────────────────────────
|
|
193
|
+
describe("F5 — Vue : conflit dans <template> des deux côtés (diff3)", () => {
|
|
194
|
+
const input = [
|
|
195
|
+
`<<<<<<< ours`,
|
|
196
|
+
`<template>`,
|
|
197
|
+
` <div class="app">`,
|
|
198
|
+
` <h1>My Awesome App</h1>`,
|
|
199
|
+
` <p>Version 2.0</p>`,
|
|
200
|
+
` </div>`,
|
|
201
|
+
`</template>`,
|
|
202
|
+
`||||||| base`,
|
|
203
|
+
`<template>`,
|
|
204
|
+
` <div class="app">`,
|
|
205
|
+
` <h1>My App</h1>`,
|
|
206
|
+
` </div>`,
|
|
207
|
+
`</template>`,
|
|
208
|
+
`=======`,
|
|
209
|
+
`<template>`,
|
|
210
|
+
` <div class="app">`,
|
|
211
|
+
` <h1>My Great App</h1>`,
|
|
212
|
+
` <span>Beta</span>`,
|
|
213
|
+
` </div>`,
|
|
214
|
+
`</template>`,
|
|
215
|
+
`>>>>>>> theirs`,
|
|
216
|
+
].join("\n");
|
|
217
|
+
it("ne lève pas d'exception", () => {
|
|
218
|
+
expect(() => resolve(input, "App.vue")).not.toThrow();
|
|
219
|
+
});
|
|
220
|
+
it("la raison mentionne [vue]", () => {
|
|
221
|
+
const result = resolve(input, "App.vue");
|
|
222
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[vue\]/i);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
//# sourceMappingURL=vue.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/vue.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver YAML (GitWand)
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — clé ajoutée d'un seul côté
|
|
6
|
+
* F2 — même clé modifiée des deux côtés → conflit non résolvable
|
|
7
|
+
* F3 — YAML minimal (1 ligne)
|
|
8
|
+
* F4 — conflit dans values.yaml Helm (clés indépendantes)
|
|
9
|
+
* F5 — conflit dans un workflow GitHub Actions
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=yaml.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/yaml.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|