@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,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver JSON/JSONC (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 — JSON vide/minimal {}
|
|
8
|
+
* F4 — conflit dans package.json scripts
|
|
9
|
+
* F5 — conflit dans tsconfig.json compilerOptions
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { resolve } from "../../resolver.js";
|
|
13
|
+
// ─── F1 — clé ajoutée d'un seul côté ─────────────────────────────────────────
|
|
14
|
+
describe("F1 — JSON : clé ajoutée d'un seul côté (diff3)", () => {
|
|
15
|
+
const input = [
|
|
16
|
+
`<<<<<<< ours`,
|
|
17
|
+
`{`,
|
|
18
|
+
` "name": "my-app",`,
|
|
19
|
+
` "version": "1.0.0",`,
|
|
20
|
+
` "description": "A test app"`,
|
|
21
|
+
`}`,
|
|
22
|
+
`||||||| base`,
|
|
23
|
+
`{`,
|
|
24
|
+
` "name": "my-app",`,
|
|
25
|
+
` "version": "1.0.0"`,
|
|
26
|
+
`}`,
|
|
27
|
+
`=======`,
|
|
28
|
+
`{`,
|
|
29
|
+
` "name": "my-app",`,
|
|
30
|
+
` "version": "1.0.0"`,
|
|
31
|
+
`}`,
|
|
32
|
+
`>>>>>>> theirs`,
|
|
33
|
+
].join("\n");
|
|
34
|
+
it("auto-résout via le resolver json", () => {
|
|
35
|
+
const result = resolve(input, "package.json");
|
|
36
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
37
|
+
});
|
|
38
|
+
it("le résultat contient la clé ajoutée", () => {
|
|
39
|
+
const result = resolve(input, "package.json");
|
|
40
|
+
expect(result.mergedContent).toContain("description");
|
|
41
|
+
});
|
|
42
|
+
it("la raison mentionne [json]", () => {
|
|
43
|
+
const result = resolve(input, "package.json");
|
|
44
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[json\]/i);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
// ─── F2 — même clé modifiée des deux côtés ────────────────────────────────────
|
|
48
|
+
describe("F2 — JSON : même clé modifiée des deux côtés → conflit non résolvable", () => {
|
|
49
|
+
const input = [
|
|
50
|
+
`<<<<<<< ours`,
|
|
51
|
+
`{`,
|
|
52
|
+
` "name": "my-app",`,
|
|
53
|
+
` "version": "2.0.0"`,
|
|
54
|
+
`}`,
|
|
55
|
+
`||||||| base`,
|
|
56
|
+
`{`,
|
|
57
|
+
` "name": "my-app",`,
|
|
58
|
+
` "version": "1.0.0"`,
|
|
59
|
+
`}`,
|
|
60
|
+
`=======`,
|
|
61
|
+
`{`,
|
|
62
|
+
` "name": "my-app",`,
|
|
63
|
+
` "version": "3.0.0"`,
|
|
64
|
+
`}`,
|
|
65
|
+
`>>>>>>> theirs`,
|
|
66
|
+
].join("\n");
|
|
67
|
+
it("ne lève pas d'exception", () => {
|
|
68
|
+
expect(() => resolve(input, "package.json")).not.toThrow();
|
|
69
|
+
});
|
|
70
|
+
it("la raison mentionne [json]", () => {
|
|
71
|
+
const result = resolve(input, "package.json");
|
|
72
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[json\]/i);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
// ─── F3 — JSON vide / minimal ─────────────────────────────────────────────────
|
|
76
|
+
describe("F3 — JSON minimal {} : ne plante pas", () => {
|
|
77
|
+
const input = [
|
|
78
|
+
`<<<<<<< ours`,
|
|
79
|
+
`{}`,
|
|
80
|
+
`||||||| base`,
|
|
81
|
+
`{}`,
|
|
82
|
+
`=======`,
|
|
83
|
+
`{}`,
|
|
84
|
+
`>>>>>>> theirs`,
|
|
85
|
+
].join("\n");
|
|
86
|
+
it("ne lève pas d'exception", () => {
|
|
87
|
+
expect(() => resolve(input, "empty.json")).not.toThrow();
|
|
88
|
+
});
|
|
89
|
+
it("produit un résultat avec au moins un hunk", () => {
|
|
90
|
+
const result = resolve(input, "empty.json");
|
|
91
|
+
expect(result.hunks.length).toBeGreaterThanOrEqual(1);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
// ─── F4 — conflit dans package.json scripts ───────────────────────────────────
|
|
95
|
+
describe("F4 — package.json : merge des scripts (diff3)", () => {
|
|
96
|
+
const input = [
|
|
97
|
+
`<<<<<<< ours`,
|
|
98
|
+
`{`,
|
|
99
|
+
` "scripts": {`,
|
|
100
|
+
` "build": "tsc",`,
|
|
101
|
+
` "test": "vitest",`,
|
|
102
|
+
` "lint": "eslint ."`,
|
|
103
|
+
` }`,
|
|
104
|
+
`}`,
|
|
105
|
+
`||||||| base`,
|
|
106
|
+
`{`,
|
|
107
|
+
` "scripts": {`,
|
|
108
|
+
` "build": "tsc",`,
|
|
109
|
+
` "test": "vitest"`,
|
|
110
|
+
` }`,
|
|
111
|
+
`}`,
|
|
112
|
+
`=======`,
|
|
113
|
+
`{`,
|
|
114
|
+
` "scripts": {`,
|
|
115
|
+
` "build": "tsc",`,
|
|
116
|
+
` "test": "vitest",`,
|
|
117
|
+
` "format": "prettier --write ."`,
|
|
118
|
+
` }`,
|
|
119
|
+
`}`,
|
|
120
|
+
`>>>>>>> theirs`,
|
|
121
|
+
].join("\n");
|
|
122
|
+
it("auto-résout via le resolver json", () => {
|
|
123
|
+
const result = resolve(input, "package.json");
|
|
124
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
125
|
+
});
|
|
126
|
+
it("le résultat contient les scripts des deux côtés", () => {
|
|
127
|
+
const result = resolve(input, "package.json");
|
|
128
|
+
expect(result.mergedContent).toContain("lint");
|
|
129
|
+
expect(result.mergedContent).toContain("format");
|
|
130
|
+
expect(result.mergedContent).toContain("build");
|
|
131
|
+
expect(result.mergedContent).toContain("test");
|
|
132
|
+
});
|
|
133
|
+
it("la raison mentionne [json]", () => {
|
|
134
|
+
const result = resolve(input, "package.json");
|
|
135
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[json\]/i);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
// ─── F5 — conflit dans tsconfig.json compilerOptions ─────────────────────────
|
|
139
|
+
describe("F5 — tsconfig.json : merge des compilerOptions (diff3)", () => {
|
|
140
|
+
const input = [
|
|
141
|
+
`<<<<<<< ours`,
|
|
142
|
+
`{`,
|
|
143
|
+
` "compilerOptions": {`,
|
|
144
|
+
` "target": "ES2022",`,
|
|
145
|
+
` "module": "ESNext",`,
|
|
146
|
+
` "strict": true,`,
|
|
147
|
+
` "noUncheckedIndexedAccess": true`,
|
|
148
|
+
` }`,
|
|
149
|
+
`}`,
|
|
150
|
+
`||||||| base`,
|
|
151
|
+
`{`,
|
|
152
|
+
` "compilerOptions": {`,
|
|
153
|
+
` "target": "ES2022",`,
|
|
154
|
+
` "module": "ESNext",`,
|
|
155
|
+
` "strict": true`,
|
|
156
|
+
` }`,
|
|
157
|
+
`}`,
|
|
158
|
+
`=======`,
|
|
159
|
+
`{`,
|
|
160
|
+
` "compilerOptions": {`,
|
|
161
|
+
` "target": "ES2022",`,
|
|
162
|
+
` "module": "ESNext",`,
|
|
163
|
+
` "strict": true,`,
|
|
164
|
+
` "exactOptionalPropertyTypes": true`,
|
|
165
|
+
` }`,
|
|
166
|
+
`}`,
|
|
167
|
+
`>>>>>>> theirs`,
|
|
168
|
+
].join("\n");
|
|
169
|
+
it("auto-résout via le resolver json", () => {
|
|
170
|
+
const result = resolve(input, "tsconfig.json");
|
|
171
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
172
|
+
});
|
|
173
|
+
it("le résultat contient les options des deux côtés", () => {
|
|
174
|
+
const result = resolve(input, "tsconfig.json");
|
|
175
|
+
expect(result.mergedContent).toContain("noUncheckedIndexedAccess");
|
|
176
|
+
expect(result.mergedContent).toContain("exactOptionalPropertyTypes");
|
|
177
|
+
expect(result.mergedContent).toContain("strict");
|
|
178
|
+
});
|
|
179
|
+
it("la raison mentionne [json]", () => {
|
|
180
|
+
const result = resolve(input, "tsconfig.json");
|
|
181
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[json\]/i);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
//# sourceMappingURL=json.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/json.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver lockfile-npm (package-lock.json) — GitWand
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — package ajouté d'un seul côté
|
|
6
|
+
* F2 — même package, version différente → prefer theirs ou conflit
|
|
7
|
+
* F3 — lockfile minimal (structure vide)
|
|
8
|
+
* F4 — dépendances directes ajoutées des deux côtés (différents packages)
|
|
9
|
+
* F5 — détection du nom `package-lock.json` → bon resolver utilisé
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=lockfile-npm.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-npm.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/lockfile-npm.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver lockfile-npm (package-lock.json) — GitWand
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — package ajouté d'un seul côté
|
|
6
|
+
* F2 — même package, version différente → prefer theirs ou conflit
|
|
7
|
+
* F3 — lockfile minimal (structure vide)
|
|
8
|
+
* F4 — dépendances directes ajoutées des deux côtés (différents packages)
|
|
9
|
+
* F5 — détection du nom `package-lock.json` → bon resolver utilisé
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { resolve } from "../../resolver.js";
|
|
13
|
+
// ─── helpers ──────────────────────────────────────────────────────────────────
|
|
14
|
+
function makeLock(extra = {}) {
|
|
15
|
+
return JSON.stringify({
|
|
16
|
+
name: "my-app",
|
|
17
|
+
version: "1.0.0",
|
|
18
|
+
lockfileVersion: 3,
|
|
19
|
+
requires: true,
|
|
20
|
+
packages: {
|
|
21
|
+
"": { name: "my-app", version: "1.0.0" },
|
|
22
|
+
"node_modules/react": {
|
|
23
|
+
version: "18.2.0",
|
|
24
|
+
resolved: "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
|
|
25
|
+
integrity: "sha512-react",
|
|
26
|
+
},
|
|
27
|
+
...extra,
|
|
28
|
+
},
|
|
29
|
+
}, null, 2);
|
|
30
|
+
}
|
|
31
|
+
// ─── F1 — package ajouté d'un seul côté ───────────────────────────────────────
|
|
32
|
+
describe("F1 — package-lock.json : package ajouté d'un seul côté (diff3)", () => {
|
|
33
|
+
const base = makeLock();
|
|
34
|
+
const ours = makeLock({
|
|
35
|
+
"node_modules/lodash": {
|
|
36
|
+
version: "4.17.21",
|
|
37
|
+
resolved: "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
|
38
|
+
integrity: "sha512-lodash",
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
const input = [
|
|
42
|
+
`<<<<<<< ours`,
|
|
43
|
+
...ours.split("\n"),
|
|
44
|
+
`||||||| base`,
|
|
45
|
+
...base.split("\n"),
|
|
46
|
+
`=======`,
|
|
47
|
+
...base.split("\n"),
|
|
48
|
+
`>>>>>>> theirs`,
|
|
49
|
+
].join("\n");
|
|
50
|
+
it("auto-résout via le resolver lockfile-npm", () => {
|
|
51
|
+
const result = resolve(input, "package-lock.json");
|
|
52
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
53
|
+
});
|
|
54
|
+
it("le résultat contient le package ajouté", () => {
|
|
55
|
+
const result = resolve(input, "package-lock.json");
|
|
56
|
+
expect(result.mergedContent).toContain("lodash");
|
|
57
|
+
expect(result.mergedContent).toContain("react");
|
|
58
|
+
});
|
|
59
|
+
it("la raison mentionne [lockfile-npm]", () => {
|
|
60
|
+
const result = resolve(input, "package-lock.json");
|
|
61
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-npm\]/i);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
// ─── F2 — même package, version différente ────────────────────────────────────
|
|
65
|
+
describe("F2 — package-lock.json : même package, version différente (diff3)", () => {
|
|
66
|
+
const base = makeLock();
|
|
67
|
+
const ours = makeLock({
|
|
68
|
+
"node_modules/lodash": {
|
|
69
|
+
version: "4.17.20",
|
|
70
|
+
resolved: "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
|
71
|
+
integrity: "sha512-old",
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
const theirs = makeLock({
|
|
75
|
+
"node_modules/lodash": {
|
|
76
|
+
version: "4.17.21",
|
|
77
|
+
resolved: "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
|
78
|
+
integrity: "sha512-new",
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
const input = [
|
|
82
|
+
`<<<<<<< ours`,
|
|
83
|
+
...ours.split("\n"),
|
|
84
|
+
`||||||| base`,
|
|
85
|
+
...base.split("\n"),
|
|
86
|
+
`=======`,
|
|
87
|
+
...theirs.split("\n"),
|
|
88
|
+
`>>>>>>> theirs`,
|
|
89
|
+
].join("\n");
|
|
90
|
+
it("ne lève pas d'exception", () => {
|
|
91
|
+
expect(() => resolve(input, "package-lock.json")).not.toThrow();
|
|
92
|
+
});
|
|
93
|
+
it("la raison mentionne [lockfile-npm]", () => {
|
|
94
|
+
const result = resolve(input, "package-lock.json");
|
|
95
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-npm\]/i);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
// ─── F3 — lockfile minimal ────────────────────────────────────────────────────
|
|
99
|
+
describe("F3 — package-lock.json minimal : ne plante pas", () => {
|
|
100
|
+
const minimal = JSON.stringify({ name: "test", version: "1.0.0", lockfileVersion: 3, packages: {} }, null, 2);
|
|
101
|
+
const input = [
|
|
102
|
+
`<<<<<<< ours`,
|
|
103
|
+
...minimal.split("\n"),
|
|
104
|
+
`||||||| base`,
|
|
105
|
+
...minimal.split("\n"),
|
|
106
|
+
`=======`,
|
|
107
|
+
...minimal.split("\n"),
|
|
108
|
+
`>>>>>>> theirs`,
|
|
109
|
+
].join("\n");
|
|
110
|
+
it("ne lève pas d'exception", () => {
|
|
111
|
+
expect(() => resolve(input, "package-lock.json")).not.toThrow();
|
|
112
|
+
});
|
|
113
|
+
it("produit un résultat avec au moins un hunk", () => {
|
|
114
|
+
const result = resolve(input, "package-lock.json");
|
|
115
|
+
expect(result.hunks.length).toBeGreaterThanOrEqual(1);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
// ─── F4 — dépendances différentes ajoutées des deux côtés ────────────────────
|
|
119
|
+
describe("F4 — package-lock.json : packages différents ajoutés des deux côtés (diff3)", () => {
|
|
120
|
+
const base = makeLock();
|
|
121
|
+
const ours = makeLock({
|
|
122
|
+
"node_modules/axios": {
|
|
123
|
+
version: "1.6.0",
|
|
124
|
+
resolved: "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
|
|
125
|
+
integrity: "sha512-axios",
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
const theirs = makeLock({
|
|
129
|
+
"node_modules/date-fns": {
|
|
130
|
+
version: "3.0.0",
|
|
131
|
+
resolved: "https://registry.npmjs.org/date-fns/-/date-fns-3.0.0.tgz",
|
|
132
|
+
integrity: "sha512-datefns",
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
const input = [
|
|
136
|
+
`<<<<<<< ours`,
|
|
137
|
+
...ours.split("\n"),
|
|
138
|
+
`||||||| base`,
|
|
139
|
+
...base.split("\n"),
|
|
140
|
+
`=======`,
|
|
141
|
+
...theirs.split("\n"),
|
|
142
|
+
`>>>>>>> theirs`,
|
|
143
|
+
].join("\n");
|
|
144
|
+
it("auto-résout via le resolver lockfile-npm", () => {
|
|
145
|
+
const result = resolve(input, "package-lock.json");
|
|
146
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
147
|
+
});
|
|
148
|
+
it("le résultat contient les deux packages", () => {
|
|
149
|
+
const result = resolve(input, "package-lock.json");
|
|
150
|
+
expect(result.mergedContent).toContain("axios");
|
|
151
|
+
expect(result.mergedContent).toContain("date-fns");
|
|
152
|
+
expect(result.mergedContent).toContain("react");
|
|
153
|
+
});
|
|
154
|
+
it("la raison mentionne [lockfile-npm]", () => {
|
|
155
|
+
const result = resolve(input, "package-lock.json");
|
|
156
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-npm\]/i);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
// ─── F5 — détection du nom de fichier ────────────────────────────────────────
|
|
160
|
+
describe("F5 — package-lock.json : détection du nom de fichier", () => {
|
|
161
|
+
const base = makeLock();
|
|
162
|
+
const ours = makeLock({
|
|
163
|
+
"node_modules/vue": {
|
|
164
|
+
version: "3.4.0",
|
|
165
|
+
resolved: "https://registry.npmjs.org/vue/-/vue-3.4.0.tgz",
|
|
166
|
+
integrity: "sha512-vue",
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
const input = [
|
|
170
|
+
`<<<<<<< ours`,
|
|
171
|
+
...ours.split("\n"),
|
|
172
|
+
`||||||| base`,
|
|
173
|
+
...base.split("\n"),
|
|
174
|
+
`=======`,
|
|
175
|
+
...base.split("\n"),
|
|
176
|
+
`>>>>>>> theirs`,
|
|
177
|
+
].join("\n");
|
|
178
|
+
it("le nom package-lock.json active le bon resolver", () => {
|
|
179
|
+
const result = resolve(input, "package-lock.json");
|
|
180
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-npm\]/i);
|
|
181
|
+
});
|
|
182
|
+
it("le nom dans un sous-dossier est aussi détecté", () => {
|
|
183
|
+
const result = resolve(input, "apps/frontend/package-lock.json");
|
|
184
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[lockfile-npm\]/i);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=lockfile-npm.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-npm.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/lockfile-npm.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=lockfile-pnpm.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile-pnpm.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/lockfile-pnpm.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|