@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,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern value_only_change (priority 60)
|
|
3
|
+
*
|
|
4
|
+
* Nécessite diff2 (sans base).
|
|
5
|
+
* Détection : même nombre de lignes ET detectValueOnlyChange() réussit —
|
|
6
|
+
* les lignes diffèrent uniquement sur des valeurs scalaires volatiles
|
|
7
|
+
* (version, hash, checksum, timestamp, UUID, integrity hash, etc.).
|
|
8
|
+
* Auto-résolu (prend theirs ou ours selon la politique).
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=value-only-change.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-only-change.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/patterns/value-only-change.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern value_only_change (priority 60)
|
|
3
|
+
*
|
|
4
|
+
* Nécessite diff2 (sans base).
|
|
5
|
+
* Détection : même nombre de lignes ET detectValueOnlyChange() réussit —
|
|
6
|
+
* les lignes diffèrent uniquement sur des valeurs scalaires volatiles
|
|
7
|
+
* (version, hash, checksum, timestamp, UUID, integrity hash, etc.).
|
|
8
|
+
* Auto-résolu (prend theirs ou ours selon la politique).
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from "vitest";
|
|
11
|
+
import { resolve } from "../../resolver.js";
|
|
12
|
+
// ─── Cas qui doivent matcher value_only_change ───────────────
|
|
13
|
+
describe("value_only_change : numéros de version (diff2)", () => {
|
|
14
|
+
const input = [
|
|
15
|
+
`<<<<<<< ours`,
|
|
16
|
+
` "version": "1.0.0"`,
|
|
17
|
+
`=======`,
|
|
18
|
+
` "version": "2.0.0"`,
|
|
19
|
+
`>>>>>>> theirs`,
|
|
20
|
+
].join("\n");
|
|
21
|
+
it("classifie en value_only_change", () => {
|
|
22
|
+
const result = resolve(input, "package.json");
|
|
23
|
+
expect(result.hunks[0].type).toBe("value_only_change");
|
|
24
|
+
});
|
|
25
|
+
it("auto-résout (autoResolved === 1)", () => {
|
|
26
|
+
const result = resolve(input, "package.json");
|
|
27
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe("value_only_change : checksums différents (diff2)", () => {
|
|
31
|
+
const input = [
|
|
32
|
+
`<<<<<<< ours`,
|
|
33
|
+
`checksum = "abc123def456"`,
|
|
34
|
+
`=======`,
|
|
35
|
+
`checksum = "def456abc123"`,
|
|
36
|
+
`>>>>>>> theirs`,
|
|
37
|
+
].join("\n");
|
|
38
|
+
it("classifie en value_only_change", () => {
|
|
39
|
+
const result = resolve(input, "Cargo.lock");
|
|
40
|
+
expect(result.hunks[0].type).toBe("value_only_change");
|
|
41
|
+
});
|
|
42
|
+
it("auto-résout", () => {
|
|
43
|
+
const result = resolve(input, "Cargo.lock");
|
|
44
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe("value_only_change : integrity hash npm (diff2)", () => {
|
|
48
|
+
const input = [
|
|
49
|
+
`<<<<<<< ours`,
|
|
50
|
+
` "integrity": "sha512-aaaaaaaaaaaaaaaa=="`,
|
|
51
|
+
`=======`,
|
|
52
|
+
` "integrity": "sha512-bbbbbbbbbbbbbbbb=="`,
|
|
53
|
+
`>>>>>>> theirs`,
|
|
54
|
+
].join("\n");
|
|
55
|
+
it("classifie en value_only_change", () => {
|
|
56
|
+
const result = resolve(input, "package-lock.json");
|
|
57
|
+
expect(result.hunks[0].type).toBe("value_only_change");
|
|
58
|
+
});
|
|
59
|
+
it("auto-résout", () => {
|
|
60
|
+
const result = resolve(input, "package-lock.json");
|
|
61
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe("value_only_change : multiple lignes avec valeurs scalaires (diff2)", () => {
|
|
65
|
+
const input = [
|
|
66
|
+
`<<<<<<< ours`,
|
|
67
|
+
` "version": "1.2.3",`,
|
|
68
|
+
` "resolved": "https://registry.npmjs.org/pkg/-/pkg-1.2.3.tgz"`,
|
|
69
|
+
`=======`,
|
|
70
|
+
` "version": "1.2.4",`,
|
|
71
|
+
` "resolved": "https://registry.npmjs.org/pkg/-/pkg-1.2.4.tgz"`,
|
|
72
|
+
`>>>>>>> theirs`,
|
|
73
|
+
].join("\n");
|
|
74
|
+
it("classifie en value_only_change", () => {
|
|
75
|
+
const result = resolve(input, "package-lock.json");
|
|
76
|
+
expect(result.hunks[0].type).toBe("value_only_change");
|
|
77
|
+
});
|
|
78
|
+
it("auto-résout", () => {
|
|
79
|
+
const result = resolve(input, "package-lock.json");
|
|
80
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe("value_only_change : hash de commit (diff2)", () => {
|
|
84
|
+
const input = [
|
|
85
|
+
`<<<<<<< ours`,
|
|
86
|
+
` source = "git+https://github.com/org/repo?rev=aabbccdd11223344"`,
|
|
87
|
+
`=======`,
|
|
88
|
+
` source = "git+https://github.com/org/repo?rev=99887766aabbccdd"`,
|
|
89
|
+
`>>>>>>> theirs`,
|
|
90
|
+
].join("\n");
|
|
91
|
+
it("classifie en value_only_change", () => {
|
|
92
|
+
const result = resolve(input, "Cargo.lock");
|
|
93
|
+
expect(result.hunks[0].type).toBe("value_only_change");
|
|
94
|
+
});
|
|
95
|
+
it("auto-résout", () => {
|
|
96
|
+
const result = resolve(input, "Cargo.lock");
|
|
97
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
// ─── Cas qui ne doivent PAS matcher value_only_change ────────
|
|
101
|
+
describe("value_only_change : cas qui ne doivent pas matcher", () => {
|
|
102
|
+
it("ne matche pas si les noms de clés changent (pas seulement des valeurs)", () => {
|
|
103
|
+
const input = [
|
|
104
|
+
`<<<<<<< ours`,
|
|
105
|
+
` "oldKey": "value",`,
|
|
106
|
+
`=======`,
|
|
107
|
+
` "newKey": "value",`,
|
|
108
|
+
`>>>>>>> theirs`,
|
|
109
|
+
].join("\n");
|
|
110
|
+
const result = resolve(input, "package.json");
|
|
111
|
+
expect(result.hunks[0].type).not.toBe("value_only_change");
|
|
112
|
+
});
|
|
113
|
+
it("ne matche pas si le nombre de lignes diffère", () => {
|
|
114
|
+
const input = [
|
|
115
|
+
`<<<<<<< ours`,
|
|
116
|
+
` "version": "1.0.0",`,
|
|
117
|
+
` "extra": "line",`,
|
|
118
|
+
`=======`,
|
|
119
|
+
` "version": "2.0.0",`,
|
|
120
|
+
`>>>>>>> theirs`,
|
|
121
|
+
].join("\n");
|
|
122
|
+
const result = resolve(input, "package.json");
|
|
123
|
+
expect(result.hunks[0].type).not.toBe("value_only_change");
|
|
124
|
+
});
|
|
125
|
+
it("ne matche pas si la structure du code change (pas juste des valeurs)", () => {
|
|
126
|
+
const input = [
|
|
127
|
+
`<<<<<<< ours`,
|
|
128
|
+
`const x = computeValue();`,
|
|
129
|
+
`=======`,
|
|
130
|
+
`const x = 42;`,
|
|
131
|
+
`>>>>>>> theirs`,
|
|
132
|
+
].join("\n");
|
|
133
|
+
const result = resolve(input, "src/test.ts");
|
|
134
|
+
expect(result.hunks[0].type).not.toBe("value_only_change");
|
|
135
|
+
});
|
|
136
|
+
it("ne matche pas si les deux côtés sont identiques (same_change prioritaire)", () => {
|
|
137
|
+
const input = [
|
|
138
|
+
`<<<<<<< ours`,
|
|
139
|
+
` "version": "1.0.0"`,
|
|
140
|
+
`=======`,
|
|
141
|
+
` "version": "1.0.0"`,
|
|
142
|
+
`>>>>>>> theirs`,
|
|
143
|
+
].join("\n");
|
|
144
|
+
const result = resolve(input, "package.json");
|
|
145
|
+
expect(result.hunks[0].type).toBe("same_change");
|
|
146
|
+
});
|
|
147
|
+
it("ne matche pas si les noms de fonctions changent", () => {
|
|
148
|
+
const input = [
|
|
149
|
+
`<<<<<<< ours`,
|
|
150
|
+
`function handleLogin() {`,
|
|
151
|
+
`=======`,
|
|
152
|
+
`function handleSignIn() {`,
|
|
153
|
+
`>>>>>>> theirs`,
|
|
154
|
+
].join("\n");
|
|
155
|
+
const result = resolve(input, "src/auth.ts");
|
|
156
|
+
expect(result.hunks[0].type).not.toBe("value_only_change");
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=value-only-change.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-only-change.test.js","sourceRoot":"","sources":["../../../src/__tests__/patterns/value-only-change.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern whitespace_only (priority 50)
|
|
3
|
+
*
|
|
4
|
+
* Compatible diff2 et diff3.
|
|
5
|
+
* Détection : après normalisation (trim de chaque ligne), ours et theirs
|
|
6
|
+
* sont identiques — même code mais indentation ou espacement différent.
|
|
7
|
+
* Auto-résolu (prend ours ou theirs selon la politique).
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=whitespace-only.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whitespace-only.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/patterns/whitespace-only.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern whitespace_only (priority 50)
|
|
3
|
+
*
|
|
4
|
+
* Compatible diff2 et diff3.
|
|
5
|
+
* Détection : après normalisation (trim de chaque ligne), ours et theirs
|
|
6
|
+
* sont identiques — même code mais indentation ou espacement différent.
|
|
7
|
+
* Auto-résolu (prend ours ou theirs selon la politique).
|
|
8
|
+
*/
|
|
9
|
+
import { describe, it, expect } from "vitest";
|
|
10
|
+
import { resolve } from "../../resolver.js";
|
|
11
|
+
// ─── Cas qui doivent matcher whitespace_only ─────────────────
|
|
12
|
+
describe("whitespace_only : indentation différente (diff2)", () => {
|
|
13
|
+
const input = [
|
|
14
|
+
`<<<<<<< ours`,
|
|
15
|
+
` const x = 42;`,
|
|
16
|
+
` return x;`,
|
|
17
|
+
`=======`,
|
|
18
|
+
` const x = 42;`,
|
|
19
|
+
` return x;`,
|
|
20
|
+
`>>>>>>> theirs`,
|
|
21
|
+
].join("\n");
|
|
22
|
+
it("classifie en whitespace_only", () => {
|
|
23
|
+
const result = resolve(input, "src/utils.ts");
|
|
24
|
+
expect(result.hunks[0].type).toBe("whitespace_only");
|
|
25
|
+
});
|
|
26
|
+
it("auto-résout (autoResolved === 1)", () => {
|
|
27
|
+
const result = resolve(input, "src/utils.ts");
|
|
28
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe("whitespace_only : tabs vs spaces (diff2)", () => {
|
|
32
|
+
const input = [
|
|
33
|
+
`<<<<<<< ours`,
|
|
34
|
+
`\tfunction hello() {`,
|
|
35
|
+
`\t\treturn "world";`,
|
|
36
|
+
`\t}`,
|
|
37
|
+
`=======`,
|
|
38
|
+
`function hello() {`,
|
|
39
|
+
` return "world";`,
|
|
40
|
+
`}`,
|
|
41
|
+
`>>>>>>> theirs`,
|
|
42
|
+
].join("\n");
|
|
43
|
+
it("classifie en whitespace_only", () => {
|
|
44
|
+
const result = resolve(input, "src/hello.ts");
|
|
45
|
+
expect(result.hunks[0].type).toBe("whitespace_only");
|
|
46
|
+
});
|
|
47
|
+
it("auto-résout", () => {
|
|
48
|
+
const result = resolve(input, "src/hello.ts");
|
|
49
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("whitespace_only : espaces de fin de ligne (diff2)", () => {
|
|
53
|
+
const input = [
|
|
54
|
+
`<<<<<<< ours`,
|
|
55
|
+
`const a = 1; `,
|
|
56
|
+
`const b = 2;`,
|
|
57
|
+
`=======`,
|
|
58
|
+
`const a = 1;`,
|
|
59
|
+
`const b = 2; `,
|
|
60
|
+
`>>>>>>> theirs`,
|
|
61
|
+
].join("\n");
|
|
62
|
+
it("classifie en whitespace_only", () => {
|
|
63
|
+
const result = resolve(input, "src/vars.ts");
|
|
64
|
+
expect(result.hunks[0].type).toBe("whitespace_only");
|
|
65
|
+
});
|
|
66
|
+
it("auto-résout", () => {
|
|
67
|
+
const result = resolve(input, "src/vars.ts");
|
|
68
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe("whitespace_only : indentation modifiée avec base (diff3)", () => {
|
|
72
|
+
const input = [
|
|
73
|
+
`<<<<<<< ours`,
|
|
74
|
+
` if (condition) {`,
|
|
75
|
+
` doSomething();`,
|
|
76
|
+
` }`,
|
|
77
|
+
`||||||| base`,
|
|
78
|
+
` if (condition) {`,
|
|
79
|
+
` doSomething();`,
|
|
80
|
+
` }`,
|
|
81
|
+
`=======`,
|
|
82
|
+
` if (condition) {`,
|
|
83
|
+
` doSomething();`,
|
|
84
|
+
` }`,
|
|
85
|
+
`>>>>>>> theirs`,
|
|
86
|
+
].join("\n");
|
|
87
|
+
it("classifie en whitespace_only", () => {
|
|
88
|
+
const result = resolve(input, "src/logic.ts");
|
|
89
|
+
expect(result.hunks[0].type).toBe("whitespace_only");
|
|
90
|
+
});
|
|
91
|
+
it("auto-résout", () => {
|
|
92
|
+
const result = resolve(input, "src/logic.ts");
|
|
93
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe("whitespace_only : reformatage JSON (diff2)", () => {
|
|
97
|
+
const input = [
|
|
98
|
+
`<<<<<<< ours`,
|
|
99
|
+
` "name": "gitwand",`,
|
|
100
|
+
` "version": "1.0.0"`,
|
|
101
|
+
`=======`,
|
|
102
|
+
` "name": "gitwand",`,
|
|
103
|
+
` "version": "1.0.0"`,
|
|
104
|
+
`>>>>>>> theirs`,
|
|
105
|
+
].join("\n");
|
|
106
|
+
it("classifie en whitespace_only", () => {
|
|
107
|
+
const result = resolve(input, "package.json");
|
|
108
|
+
expect(result.hunks[0].type).toBe("whitespace_only");
|
|
109
|
+
});
|
|
110
|
+
it("auto-résout", () => {
|
|
111
|
+
const result = resolve(input, "package.json");
|
|
112
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
// ─── Cas qui ne doivent PAS matcher whitespace_only ──────────
|
|
116
|
+
describe("whitespace_only : cas qui ne doivent pas matcher", () => {
|
|
117
|
+
it("ne matche pas si les contenus diffèrent après trim", () => {
|
|
118
|
+
const input = [
|
|
119
|
+
`<<<<<<< ours`,
|
|
120
|
+
` const x = 42;`,
|
|
121
|
+
`=======`,
|
|
122
|
+
` const x = 99;`,
|
|
123
|
+
`>>>>>>> theirs`,
|
|
124
|
+
].join("\n");
|
|
125
|
+
const result = resolve(input, "src/test.ts");
|
|
126
|
+
expect(result.hunks[0].type).not.toBe("whitespace_only");
|
|
127
|
+
});
|
|
128
|
+
it("ne matche pas si une ligne est ajoutée (nombre de lignes différent)", () => {
|
|
129
|
+
const input = [
|
|
130
|
+
`<<<<<<< ours`,
|
|
131
|
+
` const a = 1;`,
|
|
132
|
+
` const b = 2;`,
|
|
133
|
+
`=======`,
|
|
134
|
+
` const a = 1;`,
|
|
135
|
+
`>>>>>>> theirs`,
|
|
136
|
+
].join("\n");
|
|
137
|
+
const result = resolve(input, "src/test.ts");
|
|
138
|
+
expect(result.hunks[0].type).not.toBe("whitespace_only");
|
|
139
|
+
});
|
|
140
|
+
it("ne matche pas si les variables ont des noms différents", () => {
|
|
141
|
+
const input = [
|
|
142
|
+
`<<<<<<< ours`,
|
|
143
|
+
` const foo = bar;`,
|
|
144
|
+
`=======`,
|
|
145
|
+
` const baz = bar;`,
|
|
146
|
+
`>>>>>>> theirs`,
|
|
147
|
+
].join("\n");
|
|
148
|
+
const result = resolve(input, "src/test.ts");
|
|
149
|
+
expect(result.hunks[0].type).not.toBe("whitespace_only");
|
|
150
|
+
});
|
|
151
|
+
it("ne matche pas si seul l'ordre des lignes change (reorder_only le capte)", () => {
|
|
152
|
+
const input = [
|
|
153
|
+
`<<<<<<< ours`,
|
|
154
|
+
`alpha`,
|
|
155
|
+
`beta`,
|
|
156
|
+
`=======`,
|
|
157
|
+
`beta`,
|
|
158
|
+
`alpha`,
|
|
159
|
+
`>>>>>>> theirs`,
|
|
160
|
+
].join("\n");
|
|
161
|
+
const result = resolve(input, "src/test.ts");
|
|
162
|
+
expect(result.hunks[0].type).not.toBe("whitespace_only");
|
|
163
|
+
});
|
|
164
|
+
it("ne matche pas si les deux côtés sont identiques (same_change prioritaire)", () => {
|
|
165
|
+
const input = [
|
|
166
|
+
`<<<<<<< ours`,
|
|
167
|
+
` const x = 1;`,
|
|
168
|
+
`=======`,
|
|
169
|
+
` const x = 1;`,
|
|
170
|
+
`>>>>>>> theirs`,
|
|
171
|
+
].join("\n");
|
|
172
|
+
// same_change (prio 10) prend la main
|
|
173
|
+
const result = resolve(input, "src/test.ts");
|
|
174
|
+
expect(result.hunks[0].type).toBe("same_change");
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=whitespace-only.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whitespace-only.test.js","sourceRoot":"","sources":["../../../src/__tests__/patterns/whitespace-only.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver CSS/SCSS/Less (GitWand)
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — règle ajoutée d'un seul côté
|
|
6
|
+
* F2 — même règle, propriétés différentes → conflit partiel
|
|
7
|
+
* F3 — CSS minimal (1 règle)
|
|
8
|
+
* F4 — conflit dans .btn avec couleurs différentes
|
|
9
|
+
* F5 — SCSS avec variable modifiée
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=css.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/css.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver CSS/SCSS/Less (GitWand)
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — règle ajoutée d'un seul côté
|
|
6
|
+
* F2 — même règle, propriétés différentes → conflit partiel
|
|
7
|
+
* F3 — CSS minimal (1 règle)
|
|
8
|
+
* F4 — conflit dans .btn avec couleurs différentes
|
|
9
|
+
* F5 — SCSS avec variable modifiée
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { resolve } from "../../resolver.js";
|
|
13
|
+
// ─── F1 — règle ajoutée d'un seul côté ───────────────────────────────────────
|
|
14
|
+
describe("F1 — CSS : règle ajoutée d'un seul côté (diff3)", () => {
|
|
15
|
+
const input = [
|
|
16
|
+
`<<<<<<< ours`,
|
|
17
|
+
`.container {`,
|
|
18
|
+
` display: flex;`,
|
|
19
|
+
` padding: 16px;`,
|
|
20
|
+
`}`,
|
|
21
|
+
``,
|
|
22
|
+
`.header {`,
|
|
23
|
+
` background-color: #fff;`,
|
|
24
|
+
` height: 60px;`,
|
|
25
|
+
`}`,
|
|
26
|
+
`||||||| base`,
|
|
27
|
+
`.container {`,
|
|
28
|
+
` display: flex;`,
|
|
29
|
+
` padding: 16px;`,
|
|
30
|
+
`}`,
|
|
31
|
+
`=======`,
|
|
32
|
+
`.container {`,
|
|
33
|
+
` display: flex;`,
|
|
34
|
+
` padding: 16px;`,
|
|
35
|
+
`}`,
|
|
36
|
+
`>>>>>>> theirs`,
|
|
37
|
+
].join("\n");
|
|
38
|
+
it("auto-résout via le resolver css", () => {
|
|
39
|
+
const result = resolve(input, "styles.css");
|
|
40
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
41
|
+
});
|
|
42
|
+
it("le résultat contient la règle ajoutée", () => {
|
|
43
|
+
const result = resolve(input, "styles.css");
|
|
44
|
+
expect(result.mergedContent).toContain(".header");
|
|
45
|
+
});
|
|
46
|
+
it("la raison mentionne [css]", () => {
|
|
47
|
+
const result = resolve(input, "styles.css");
|
|
48
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[css\]/i);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
// ─── F2 — même règle, propriétés différentes ─────────────────────────────────
|
|
52
|
+
describe("F2 — CSS : même règle, valeurs différentes des deux côtés (diff3)", () => {
|
|
53
|
+
const input = [
|
|
54
|
+
`<<<<<<< ours`,
|
|
55
|
+
`.container {`,
|
|
56
|
+
` max-width: 1200px;`,
|
|
57
|
+
` padding: 24px;`,
|
|
58
|
+
`}`,
|
|
59
|
+
`||||||| base`,
|
|
60
|
+
`.container {`,
|
|
61
|
+
` max-width: 960px;`,
|
|
62
|
+
` padding: 16px;`,
|
|
63
|
+
`}`,
|
|
64
|
+
`=======`,
|
|
65
|
+
`.container {`,
|
|
66
|
+
` max-width: 1440px;`,
|
|
67
|
+
` padding: 32px;`,
|
|
68
|
+
`}`,
|
|
69
|
+
`>>>>>>> theirs`,
|
|
70
|
+
].join("\n");
|
|
71
|
+
it("ne lève pas d'exception", () => {
|
|
72
|
+
expect(() => resolve(input, "styles.css")).not.toThrow();
|
|
73
|
+
});
|
|
74
|
+
it("la raison mentionne [css]", () => {
|
|
75
|
+
const result = resolve(input, "styles.css");
|
|
76
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[css\]/i);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
// ─── F3 — CSS minimal ────────────────────────────────────────────────────────
|
|
80
|
+
describe("F3 — CSS minimal : ne plante pas", () => {
|
|
81
|
+
const input = [
|
|
82
|
+
`<<<<<<< ours`,
|
|
83
|
+
`body { margin: 0; }`,
|
|
84
|
+
`||||||| base`,
|
|
85
|
+
`body { margin: 8px; }`,
|
|
86
|
+
`=======`,
|
|
87
|
+
`body { margin: 0; padding: 0; }`,
|
|
88
|
+
`>>>>>>> theirs`,
|
|
89
|
+
].join("\n");
|
|
90
|
+
it("ne lève pas d'exception", () => {
|
|
91
|
+
expect(() => resolve(input, "minimal.css")).not.toThrow();
|
|
92
|
+
});
|
|
93
|
+
it("produit un résultat avec au moins un hunk", () => {
|
|
94
|
+
const result = resolve(input, "minimal.css");
|
|
95
|
+
expect(result.hunks.length).toBeGreaterThanOrEqual(1);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
// ─── F4 — conflit dans .btn avec couleurs différentes ────────────────────────
|
|
99
|
+
describe("F4 — CSS : .btn avec ajout de règles indépendantes (diff3)", () => {
|
|
100
|
+
const input = [
|
|
101
|
+
`<<<<<<< ours`,
|
|
102
|
+
`.btn {`,
|
|
103
|
+
` display: inline-flex;`,
|
|
104
|
+
` padding: 8px 16px;`,
|
|
105
|
+
` border-radius: 4px;`,
|
|
106
|
+
` font-weight: 600;`,
|
|
107
|
+
`}`,
|
|
108
|
+
``,
|
|
109
|
+
`.btn-primary {`,
|
|
110
|
+
` background-color: #3b82f6;`,
|
|
111
|
+
` color: #fff;`,
|
|
112
|
+
`}`,
|
|
113
|
+
`||||||| base`,
|
|
114
|
+
`.btn {`,
|
|
115
|
+
` display: inline-flex;`,
|
|
116
|
+
` padding: 8px 16px;`,
|
|
117
|
+
` border-radius: 4px;`,
|
|
118
|
+
`}`,
|
|
119
|
+
`=======`,
|
|
120
|
+
`.btn {`,
|
|
121
|
+
` display: inline-flex;`,
|
|
122
|
+
` padding: 8px 16px;`,
|
|
123
|
+
` border-radius: 4px;`,
|
|
124
|
+
`}`,
|
|
125
|
+
``,
|
|
126
|
+
`.btn-danger {`,
|
|
127
|
+
` background-color: #ef4444;`,
|
|
128
|
+
` color: #fff;`,
|
|
129
|
+
`}`,
|
|
130
|
+
`>>>>>>> theirs`,
|
|
131
|
+
].join("\n");
|
|
132
|
+
it("ne lève pas d'exception", () => {
|
|
133
|
+
expect(() => resolve(input, "buttons.css")).not.toThrow();
|
|
134
|
+
});
|
|
135
|
+
it("la raison mentionne [css]", () => {
|
|
136
|
+
const result = resolve(input, "buttons.css");
|
|
137
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[css\]/i);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
// ─── F5 — SCSS avec variable modifiée ────────────────────────────────────────
|
|
141
|
+
describe("F5 — SCSS : variable ajoutée d'un seul côté (diff3)", () => {
|
|
142
|
+
const input = [
|
|
143
|
+
`<<<<<<< ours`,
|
|
144
|
+
`$primary-color: #3b82f6;`,
|
|
145
|
+
`$secondary-color: #6b7280;`,
|
|
146
|
+
`$font-size-base: 16px;`,
|
|
147
|
+
`$border-radius: 4px;`,
|
|
148
|
+
`||||||| base`,
|
|
149
|
+
`$primary-color: #3b82f6;`,
|
|
150
|
+
`$secondary-color: #6b7280;`,
|
|
151
|
+
`$font-size-base: 16px;`,
|
|
152
|
+
`=======`,
|
|
153
|
+
`$primary-color: #3b82f6;`,
|
|
154
|
+
`$secondary-color: #6b7280;`,
|
|
155
|
+
`$font-size-base: 16px;`,
|
|
156
|
+
`>>>>>>> theirs`,
|
|
157
|
+
].join("\n");
|
|
158
|
+
it("auto-résout via le resolver css", () => {
|
|
159
|
+
const result = resolve(input, "app.scss");
|
|
160
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
161
|
+
});
|
|
162
|
+
it("le résultat contient la variable ajoutée", () => {
|
|
163
|
+
const result = resolve(input, "app.scss");
|
|
164
|
+
expect(result.mergedContent).toContain("border-radius");
|
|
165
|
+
});
|
|
166
|
+
it("la raison mentionne [css]", () => {
|
|
167
|
+
const result = resolve(input, "app.scss");
|
|
168
|
+
expect(result.resolutions[0].resolutionReason).toMatch(/\[css\]/i);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=css.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/css.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du resolver imports ES/TS (GitWand)
|
|
3
|
+
*
|
|
4
|
+
* Fixtures :
|
|
5
|
+
* F1 — import ajouté d'un seul côté
|
|
6
|
+
* F2 — même module importé différemment des deux côtés → conflit non résolvable
|
|
7
|
+
* F3 — imports vides (bloc vide)
|
|
8
|
+
* F4 — TypeScript avec `import type`
|
|
9
|
+
* F5 — re-exports `export { X } from 'y'`
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=imports.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imports.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/resolvers/imports.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|