pareto-test 0.12.3 → 0.13.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.
Files changed (69) hide show
  1. package/dist/globals.d.ts +26 -0
  2. package/dist/globals.js +2 -0
  3. package/dist/implementation/commands/run_tests.d.ts +11 -0
  4. package/dist/implementation/commands/run_tests.js +73 -0
  5. package/dist/implementation/generic.d.ts +13 -0
  6. package/dist/implementation/generic.js +82 -0
  7. package/dist/implementation/transformers/test_result/fountain_pen.d.ts +4 -0
  8. package/dist/implementation/transformers/test_result/fountain_pen.js +53 -0
  9. package/dist/implementation/transformers/test_result/lines.d.ts +3 -0
  10. package/dist/implementation/transformers/test_result/lines.js +35 -0
  11. package/dist/interface/generic.d.ts +27 -0
  12. package/dist/interface/generic.js +3 -0
  13. package/package.json +6 -7
  14. package/dist/bin/json_to_astn.d.ts +0 -2
  15. package/dist/bin/json_to_astn.js +0 -177
  16. package/dist/bin/temp_serialize_json_schema.d.ts +0 -2
  17. package/dist/bin/temp_serialize_json_schema.js +0 -60
  18. package/dist/generated/implementation/generic/resolve.d.ts +0 -109
  19. package/dist/generated/implementation/generic/resolve.js +0 -276
  20. package/dist/generated/implementation/generic/unmarshall.d.ts +0 -42
  21. package/dist/generated/implementation/generic/unmarshall.js +0 -238
  22. package/dist/generated/implementation/schemas/legacy_json_schema/marshall.d.ts +0 -11
  23. package/dist/generated/implementation/schemas/legacy_json_schema/marshall.js +0 -260
  24. package/dist/generated/implementation/schemas/legacy_json_schema/unmarshall.d.ts +0 -11
  25. package/dist/generated/implementation/schemas/legacy_json_schema/unmarshall.js +0 -246
  26. package/dist/generated/interface/core/astn_source.d.ts +0 -108
  27. package/dist/generated/interface/core/astn_source.js +0 -3
  28. package/dist/generated/interface/core/astn_target.d.ts +0 -186
  29. package/dist/generated/interface/core/astn_target.js +0 -3
  30. package/dist/generated/interface/core/resolve.d.ts +0 -11
  31. package/dist/generated/interface/core/resolve.js +0 -3
  32. package/dist/generated/interface/core/resolved.d.ts +0 -117
  33. package/dist/generated/interface/core/resolved.js +0 -3
  34. package/dist/generated/interface/core/unconstrained.d.ts +0 -19
  35. package/dist/generated/interface/core/unconstrained.js +0 -3
  36. package/dist/generated/interface/core/unresolved.d.ts +0 -181
  37. package/dist/generated/interface/core/unresolved.js +0 -3
  38. package/dist/generated/interface/schemas/legacy_json_schema/data_types/resolve.d.ts +0 -1
  39. package/dist/generated/interface/schemas/legacy_json_schema/data_types/resolve.js +0 -7
  40. package/dist/generated/interface/schemas/legacy_json_schema/data_types/source.d.ts +0 -574
  41. package/dist/generated/interface/schemas/legacy_json_schema/data_types/source.js +0 -3
  42. package/dist/generated/interface/schemas/legacy_json_schema/data_types/target.d.ts +0 -574
  43. package/dist/generated/interface/schemas/legacy_json_schema/data_types/target.js +0 -3
  44. package/dist/generated/interface/schemas/legacy_json_schema/marshall.d.ts +0 -303
  45. package/dist/generated/interface/schemas/legacy_json_schema/marshall.js +0 -3
  46. package/dist/generated/interface/schemas/legacy_json_schema/migrate_boilerplate.d.ts +0 -222
  47. package/dist/generated/interface/schemas/legacy_json_schema/migrate_boilerplate.js +0 -3
  48. package/dist/generated/interface/schemas/legacy_json_schema/unmarshall.d.ts +0 -303
  49. package/dist/generated/interface/schemas/legacy_json_schema/unmarshall.js +0 -3
  50. package/dist/generated/interface/schemas/legacy_json_schema/value_deserializers.d.ts +0 -44
  51. package/dist/generated/interface/schemas/legacy_json_schema/value_deserializers.js +0 -3
  52. package/dist/generated/interface/schemas/legacy_json_schema/value_serializers.d.ts +0 -44
  53. package/dist/generated/interface/schemas/legacy_json_schema/value_serializers.js +0 -3
  54. package/dist/interface/testrunner.d.ts +0 -6
  55. package/dist/interface/testrunner.js +0 -3
  56. package/dist/run_tests.d.ts +0 -3
  57. package/dist/run_tests.js +0 -232
  58. package/dist/shorthands/legacy_json_schema.d.ts +0 -32
  59. package/dist/shorthands/legacy_json_schema.js +0 -119
  60. package/dist/temp_astn_target_to_fountain_pen_block.d.ts +0 -8
  61. package/dist/temp_astn_target_to_fountain_pen_block.js +0 -131
  62. package/dist/temp_data/json_schema.astn.d.ts +0 -2
  63. package/dist/temp_data/json_schema.astn.js +0 -278
  64. package/dist/transformations/legacy_json_schema/astn_sealed_target.d.ts +0 -38
  65. package/dist/transformations/legacy_json_schema/astn_sealed_target.js +0 -252
  66. package/dist/types/json.d.ts +0 -4
  67. package/dist/types/json.js +0 -3
  68. package/dist/unmarshall_helpers.d.ts +0 -16
  69. package/dist/unmarshall_helpers.js +0 -163
@@ -1,303 +0,0 @@
1
- import * as _i_in from "../../core/astn_source";
2
- import * as _i_out from "./data_types/target";
3
- import * as _i_vd from "./value_deserializers";
4
- export type _T_Array_Definition = ($$_: _i_in._T_Value, $$_p: {
5
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
6
- }) => _i_out._T_Array_Definition;
7
- export type _T_Boolean_Definition = ($$_: _i_in._T_Value, $$_p: {
8
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
9
- }) => _i_out._T_Boolean_Definition;
10
- export type _T_Definition = ($$_: _i_in._T_Value, $$_p: {
11
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
12
- }) => _i_out._T_Definition;
13
- export type _T_Error = ($$_: _i_in._T_Value, $$_p: {
14
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
15
- }) => _i_out._T_Error;
16
- export type _T_Null_Definition = ($$_: _i_in._T_Value, $$_p: {
17
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
18
- }) => _i_out._T_Null_Definition;
19
- export type _T_Number_Definition = ($$_: _i_in._T_Value, $$_p: {
20
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
21
- }) => _i_out._T_Number_Definition;
22
- export type _T_Object_Definition = ($$_: _i_in._T_Value, $$_p: {
23
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
24
- }) => _i_out._T_Object_Definition;
25
- export type _T_Schema = ($$_: _i_in._T_Value, $$_p: {
26
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
27
- }) => _i_out._T_Schema;
28
- export type _T_String_Definition = ($$_: _i_in._T_Value, $$_p: {
29
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
30
- }) => _i_out._T_String_Definition;
31
- export type _T_Value_Type = ($$_: _i_in._T_Value, $$_p: {
32
- readonly 'value deserializers': _i_vd._T_Value_Deserializers;
33
- }) => _i_out._T_Value_Type;
34
- export type Array_Definition = _T_Array_Definition;
35
- export type Boolean_Definition = _T_Boolean_Definition;
36
- export type Definition = _T_Definition;
37
- export type Error = _T_Error;
38
- export type Null_Definition = _T_Null_Definition;
39
- export type Number_Definition = _T_Number_Definition;
40
- export type Object_Definition = _T_Object_Definition;
41
- export type Schema = _T_Schema;
42
- export type String_Definition = _T_String_Definition;
43
- export type Value_Type = _T_Value_Type;
44
- export declare namespace _T_Array_Definition {
45
- namespace CONTEXT {
46
- }
47
- type CONTEXT = _i_in._T_Value;
48
- namespace PARAMS {
49
- namespace value_deserializers {
50
- }
51
- type value_deserializers = _i_vd._T_Value_Deserializers;
52
- }
53
- namespace RESULT {
54
- }
55
- type RESULT = _i_out._T_Array_Definition;
56
- }
57
- export declare namespace _T_Boolean_Definition {
58
- namespace CONTEXT {
59
- }
60
- type CONTEXT = _i_in._T_Value;
61
- namespace PARAMS {
62
- namespace value_deserializers {
63
- }
64
- type value_deserializers = _i_vd._T_Value_Deserializers;
65
- }
66
- namespace RESULT {
67
- }
68
- type RESULT = _i_out._T_Boolean_Definition;
69
- }
70
- export declare namespace _T_Definition {
71
- namespace CONTEXT {
72
- }
73
- type CONTEXT = _i_in._T_Value;
74
- namespace PARAMS {
75
- namespace value_deserializers {
76
- }
77
- type value_deserializers = _i_vd._T_Value_Deserializers;
78
- }
79
- namespace RESULT {
80
- }
81
- type RESULT = _i_out._T_Definition;
82
- }
83
- export declare namespace _T_Error {
84
- namespace CONTEXT {
85
- }
86
- type CONTEXT = _i_in._T_Value;
87
- namespace PARAMS {
88
- namespace value_deserializers {
89
- }
90
- type value_deserializers = _i_vd._T_Value_Deserializers;
91
- }
92
- namespace RESULT {
93
- }
94
- type RESULT = _i_out._T_Error;
95
- }
96
- export declare namespace _T_Null_Definition {
97
- namespace CONTEXT {
98
- }
99
- type CONTEXT = _i_in._T_Value;
100
- namespace PARAMS {
101
- namespace value_deserializers {
102
- }
103
- type value_deserializers = _i_vd._T_Value_Deserializers;
104
- }
105
- namespace RESULT {
106
- }
107
- type RESULT = _i_out._T_Null_Definition;
108
- }
109
- export declare namespace _T_Number_Definition {
110
- namespace CONTEXT {
111
- }
112
- type CONTEXT = _i_in._T_Value;
113
- namespace PARAMS {
114
- namespace value_deserializers {
115
- }
116
- type value_deserializers = _i_vd._T_Value_Deserializers;
117
- }
118
- namespace RESULT {
119
- }
120
- type RESULT = _i_out._T_Number_Definition;
121
- }
122
- export declare namespace _T_Object_Definition {
123
- namespace CONTEXT {
124
- }
125
- type CONTEXT = _i_in._T_Value;
126
- namespace PARAMS {
127
- namespace value_deserializers {
128
- }
129
- type value_deserializers = _i_vd._T_Value_Deserializers;
130
- }
131
- namespace RESULT {
132
- }
133
- type RESULT = _i_out._T_Object_Definition;
134
- }
135
- export declare namespace _T_Schema {
136
- namespace CONTEXT {
137
- }
138
- type CONTEXT = _i_in._T_Value;
139
- namespace PARAMS {
140
- namespace value_deserializers {
141
- }
142
- type value_deserializers = _i_vd._T_Value_Deserializers;
143
- }
144
- namespace RESULT {
145
- }
146
- type RESULT = _i_out._T_Schema;
147
- }
148
- export declare namespace _T_String_Definition {
149
- namespace CONTEXT {
150
- }
151
- type CONTEXT = _i_in._T_Value;
152
- namespace PARAMS {
153
- namespace value_deserializers {
154
- }
155
- type value_deserializers = _i_vd._T_Value_Deserializers;
156
- }
157
- namespace RESULT {
158
- }
159
- type RESULT = _i_out._T_String_Definition;
160
- }
161
- export declare namespace _T_Value_Type {
162
- namespace CONTEXT {
163
- }
164
- type CONTEXT = _i_in._T_Value;
165
- namespace PARAMS {
166
- namespace value_deserializers {
167
- }
168
- type value_deserializers = _i_vd._T_Value_Deserializers;
169
- }
170
- namespace RESULT {
171
- }
172
- type RESULT = _i_out._T_Value_Type;
173
- }
174
- export declare namespace Array_Definition {
175
- namespace CONTEXT {
176
- }
177
- type CONTEXT = _i_in._T_Value;
178
- namespace PARAMS {
179
- namespace value_deserializers {
180
- }
181
- type value_deserializers = _i_vd._T_Value_Deserializers;
182
- }
183
- namespace RESULT {
184
- }
185
- type RESULT = _i_out._T_Array_Definition;
186
- }
187
- export declare namespace Boolean_Definition {
188
- namespace CONTEXT {
189
- }
190
- type CONTEXT = _i_in._T_Value;
191
- namespace PARAMS {
192
- namespace value_deserializers {
193
- }
194
- type value_deserializers = _i_vd._T_Value_Deserializers;
195
- }
196
- namespace RESULT {
197
- }
198
- type RESULT = _i_out._T_Boolean_Definition;
199
- }
200
- export declare namespace Definition {
201
- namespace CONTEXT {
202
- }
203
- type CONTEXT = _i_in._T_Value;
204
- namespace PARAMS {
205
- namespace value_deserializers {
206
- }
207
- type value_deserializers = _i_vd._T_Value_Deserializers;
208
- }
209
- namespace RESULT {
210
- }
211
- type RESULT = _i_out._T_Definition;
212
- }
213
- export declare namespace Error {
214
- namespace CONTEXT {
215
- }
216
- type CONTEXT = _i_in._T_Value;
217
- namespace PARAMS {
218
- namespace value_deserializers {
219
- }
220
- type value_deserializers = _i_vd._T_Value_Deserializers;
221
- }
222
- namespace RESULT {
223
- }
224
- type RESULT = _i_out._T_Error;
225
- }
226
- export declare namespace Null_Definition {
227
- namespace CONTEXT {
228
- }
229
- type CONTEXT = _i_in._T_Value;
230
- namespace PARAMS {
231
- namespace value_deserializers {
232
- }
233
- type value_deserializers = _i_vd._T_Value_Deserializers;
234
- }
235
- namespace RESULT {
236
- }
237
- type RESULT = _i_out._T_Null_Definition;
238
- }
239
- export declare namespace Number_Definition {
240
- namespace CONTEXT {
241
- }
242
- type CONTEXT = _i_in._T_Value;
243
- namespace PARAMS {
244
- namespace value_deserializers {
245
- }
246
- type value_deserializers = _i_vd._T_Value_Deserializers;
247
- }
248
- namespace RESULT {
249
- }
250
- type RESULT = _i_out._T_Number_Definition;
251
- }
252
- export declare namespace Object_Definition {
253
- namespace CONTEXT {
254
- }
255
- type CONTEXT = _i_in._T_Value;
256
- namespace PARAMS {
257
- namespace value_deserializers {
258
- }
259
- type value_deserializers = _i_vd._T_Value_Deserializers;
260
- }
261
- namespace RESULT {
262
- }
263
- type RESULT = _i_out._T_Object_Definition;
264
- }
265
- export declare namespace Schema {
266
- namespace CONTEXT {
267
- }
268
- type CONTEXT = _i_in._T_Value;
269
- namespace PARAMS {
270
- namespace value_deserializers {
271
- }
272
- type value_deserializers = _i_vd._T_Value_Deserializers;
273
- }
274
- namespace RESULT {
275
- }
276
- type RESULT = _i_out._T_Schema;
277
- }
278
- export declare namespace String_Definition {
279
- namespace CONTEXT {
280
- }
281
- type CONTEXT = _i_in._T_Value;
282
- namespace PARAMS {
283
- namespace value_deserializers {
284
- }
285
- type value_deserializers = _i_vd._T_Value_Deserializers;
286
- }
287
- namespace RESULT {
288
- }
289
- type RESULT = _i_out._T_String_Definition;
290
- }
291
- export declare namespace Value_Type {
292
- namespace CONTEXT {
293
- }
294
- type CONTEXT = _i_in._T_Value;
295
- namespace PARAMS {
296
- namespace value_deserializers {
297
- }
298
- type value_deserializers = _i_vd._T_Value_Deserializers;
299
- }
300
- namespace RESULT {
301
- }
302
- type RESULT = _i_out._T_Value_Type;
303
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5tYXJzaGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvaW50ZXJmYWNlL3NjaGVtYXMvbGVnYWN5X2pzb25fc2NoZW1hL3VubWFyc2hhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,44 +0,0 @@
1
- export type _T_Value_Deserializers = {
2
- readonly 'boolean': ($$_: string, $$_p: null) => boolean;
3
- readonly 'custom numbers': null;
4
- readonly 'default number': ($$_: string, $$_p: null) => number;
5
- };
6
- export type Value_Deserializers = _T_Value_Deserializers;
7
- export declare namespace _T_Value_Deserializers {
8
- namespace _boolean {
9
- type CONTEXT = string;
10
- namespace PARAMS {
11
- }
12
- type RESULT = boolean;
13
- }
14
- type _boolean = ($$_: string, $$_p: null) => boolean;
15
- namespace custom_numbers {
16
- }
17
- type custom_numbers = null;
18
- namespace default_number {
19
- type CONTEXT = string;
20
- namespace PARAMS {
21
- }
22
- type RESULT = number;
23
- }
24
- type default_number = ($$_: string, $$_p: null) => number;
25
- }
26
- export declare namespace Value_Deserializers {
27
- namespace _boolean {
28
- type CONTEXT = string;
29
- namespace PARAMS {
30
- }
31
- type RESULT = boolean;
32
- }
33
- type _boolean = ($$_: string, $$_p: null) => boolean;
34
- namespace custom_numbers {
35
- }
36
- type custom_numbers = null;
37
- namespace default_number {
38
- type CONTEXT = string;
39
- namespace PARAMS {
40
- }
41
- type RESULT = number;
42
- }
43
- type default_number = ($$_: string, $$_p: null) => number;
44
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfZGVzZXJpYWxpemVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvaW50ZXJmYWNlL3NjaGVtYXMvbGVnYWN5X2pzb25fc2NoZW1hL3ZhbHVlX2Rlc2VyaWFsaXplcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,44 +0,0 @@
1
- export type _T_Value_Serializers = {
2
- readonly 'boolean': ($$_: boolean, $$_p: null) => string;
3
- readonly 'custom numbers': null;
4
- readonly 'default number': ($$_: number, $$_p: null) => string;
5
- };
6
- export type Value_Serializers = _T_Value_Serializers;
7
- export declare namespace _T_Value_Serializers {
8
- namespace _boolean {
9
- type CONTEXT = boolean;
10
- namespace PARAMS {
11
- }
12
- type RESULT = string;
13
- }
14
- type _boolean = ($$_: boolean, $$_p: null) => string;
15
- namespace custom_numbers {
16
- }
17
- type custom_numbers = null;
18
- namespace default_number {
19
- type CONTEXT = number;
20
- namespace PARAMS {
21
- }
22
- type RESULT = string;
23
- }
24
- type default_number = ($$_: number, $$_p: null) => string;
25
- }
26
- export declare namespace Value_Serializers {
27
- namespace _boolean {
28
- type CONTEXT = boolean;
29
- namespace PARAMS {
30
- }
31
- type RESULT = string;
32
- }
33
- type _boolean = ($$_: boolean, $$_p: null) => string;
34
- namespace custom_numbers {
35
- }
36
- type custom_numbers = null;
37
- namespace default_number {
38
- type CONTEXT = number;
39
- namespace PARAMS {
40
- }
41
- type RESULT = string;
42
- }
43
- type default_number = ($$_: number, $$_p: null) => string;
44
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfc2VyaWFsaXplcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL2ludGVyZmFjZS9zY2hlbWFzL2xlZ2FjeV9qc29uX3NjaGVtYS92YWx1ZV9zZXJpYWxpemVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,6 +0,0 @@
1
- import * as _et from 'exupery-core-types';
2
- export type Test_Runner = {
3
- 'target_extension': string;
4
- 'transformer': (input_content: string) => string;
5
- };
6
- export type Test_Runners = _et.Dictionary<Test_Runner>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2UvdGVzdHJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,3 +0,0 @@
1
- import { Test_Runner, Test_Runners } from "./interface/testrunner";
2
- export declare const run_tests: (tests: Test_Runners, overwrite_expected: boolean, test_dir: string) => void;
3
- export declare const test_runner: ($p: Test_Runner, name: string, overwrite_expected: boolean, test_dir: string) => boolean;
package/dist/run_tests.js DELETED
@@ -1,232 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.test_runner = exports.run_tests = void 0;
27
- const child_process_1 = require("child_process");
28
- const path = __importStar(require("path"));
29
- const fs = __importStar(require("fs"));
30
- const run_tests = (tests, overwrite_expected, test_dir) => {
31
- // Clean the entire 'actual' directory before starting tests
32
- const actual_dir = path.join(test_dir, 'actual');
33
- if (fs.existsSync(actual_dir)) {
34
- // Remove all contents
35
- const entries = fs.readdirSync(actual_dir);
36
- for (const entry of entries) {
37
- const entry_path = path.join(actual_dir, entry);
38
- const stat = fs.statSync(entry_path);
39
- if (stat.isDirectory()) {
40
- fs.rmSync(entry_path, { recursive: true, force: true });
41
- }
42
- else {
43
- fs.unlinkSync(entry_path);
44
- }
45
- }
46
- console.log('✓ Cleaned actual directory\n');
47
- }
48
- else {
49
- fs.mkdirSync(actual_dir, { recursive: true });
50
- console.log('✓ Created actual directory\n');
51
- }
52
- console.log('Running all tests...\n');
53
- console.log('-'.repeat(60));
54
- let failed_tests = 0;
55
- let passed_tests = 0;
56
- const failed_test_types = [];
57
- // Run each test
58
- tests.map(($, key) => {
59
- try {
60
- const success = (0, exports.test_runner)($, key, overwrite_expected, test_dir);
61
- if (success) {
62
- passed_tests++;
63
- }
64
- else {
65
- failed_tests++;
66
- failed_test_types.push(key);
67
- }
68
- }
69
- catch (err) {
70
- failed_tests++;
71
- failed_test_types.push(key);
72
- }
73
- });
74
- // Summary
75
- console.log('\n' + '-'.repeat(60));
76
- console.log(`Test Summary:`);
77
- console.log(` - ${passed_tests} test(s) passed`);
78
- console.log(` - ${failed_tests} test(s) failed`);
79
- if (failed_tests > 0) {
80
- console.log('\n❌ Some tests failed');
81
- // Open Beyond Compare for expected vs actual directories
82
- const expected_path = path.join(test_dir, 'expected');
83
- const actual_path = path.join(test_dir, 'actual');
84
- console.log(`\nOpening Beyond Compare...`);
85
- console.log(` Expected: ${expected_path}`);
86
- console.log(` Actual: ${actual_path}`);
87
- try {
88
- (0, child_process_1.execSync)(`bcompare "${expected_path}" "${actual_path}" &`, {
89
- stdio: 'ignore'
90
- });
91
- }
92
- catch (err) {
93
- console.error(` ⚠️ Could not open Beyond Compare. Make sure 'bcompare' is in your PATH.`);
94
- }
95
- process.exit(1);
96
- }
97
- else {
98
- console.log('\n✓ All tests passed');
99
- }
100
- };
101
- exports.run_tests = run_tests;
102
- function to_snake_case(str) {
103
- return str.toLowerCase().replace(/\s+/g, '_');
104
- }
105
- const test_runner = ($p, name, overwrite_expected, test_dir) => {
106
- const fixtures_dir = path.join(test_dir, 'fixtures');
107
- const test_dir_name = to_snake_case(name);
108
- const input_dir = path.join(fixtures_dir, test_dir_name);
109
- const expected_dir = path.join(test_dir, 'expected');
110
- const actual_dir = path.join(test_dir, 'actual');
111
- console.log('='.repeat(60));
112
- console.log(`Running test: ${name}\n`);
113
- // Check if input directory exists
114
- if (!fs.existsSync(input_dir)) {
115
- console.error(`❌ Input directory not found: ${input_dir}`);
116
- return false;
117
- }
118
- // Ensure actual output directory exists
119
- const actual_output_dir = path.join(actual_dir, test_dir_name);
120
- if (!fs.existsSync(actual_output_dir)) {
121
- fs.mkdirSync(actual_output_dir, { recursive: true });
122
- }
123
- // Clear/create expected output directory if overwrite flag is set
124
- const expected_output_dir = path.join(expected_dir, test_dir_name);
125
- if (overwrite_expected) {
126
- // Only clear if the directory exists and has files
127
- if (fs.existsSync(expected_output_dir)) {
128
- const files = fs.readdirSync(expected_output_dir);
129
- console.log(`⚠️ Overwrite mode: Will replace ${files.length} existing expected file(s) in ${test_dir_name}`);
130
- for (const file of files) {
131
- fs.unlinkSync(path.join(expected_output_dir, file));
132
- }
133
- console.log(`✓ Cleared ${expected_output_dir}`);
134
- }
135
- else {
136
- fs.mkdirSync(expected_output_dir, { recursive: true });
137
- console.log(`✓ Created ${expected_output_dir}`);
138
- }
139
- }
140
- else {
141
- // Ensure expected output directory exists
142
- if (!fs.existsSync(expected_output_dir)) {
143
- fs.mkdirSync(expected_output_dir, { recursive: true });
144
- }
145
- }
146
- // Read all files from input directory
147
- const input_files = fs.readdirSync(input_dir);
148
- console.log(`\nFound ${input_files.length} input file(s) to process\n`);
149
- let differences_found = 0;
150
- let matches_found = 0;
151
- for (const input_file of input_files) {
152
- const base_name = path.basename(input_file, path.extname(input_file));
153
- const output_name = `${base_name}.${$p.target_extension}`;
154
- try {
155
- // Read input file
156
- const input_path = path.join(input_dir, input_file);
157
- const input_content = fs.readFileSync(input_path, 'utf8');
158
- // Transform input to output
159
- const output_content = $p.transformer(input_content);
160
- // If overwrite expected, write to expected directory
161
- if (overwrite_expected) {
162
- const expected_path = path.join(expected_output_dir, output_name);
163
- fs.writeFileSync(expected_path, output_content);
164
- console.log(`\x1b[32m${base_name} ✓\x1b[0m`);
165
- }
166
- else {
167
- // Compare with expected
168
- const expected_path = path.join(expected_output_dir, output_name);
169
- if (!fs.existsSync(expected_path)) {
170
- // No expected file exists, write to actual
171
- const actual_path = path.join(actual_output_dir, output_name);
172
- fs.writeFileSync(actual_path, output_content);
173
- console.log(`\x1b[31m${base_name} ❌\x1b[0m`);
174
- differences_found++;
175
- }
176
- else {
177
- // Compare with expected
178
- const expected_content = fs.readFileSync(expected_path, 'utf8');
179
- if (output_content === expected_content) {
180
- console.log(`\x1b[32m${base_name} ✓\x1b[0m`);
181
- matches_found++;
182
- }
183
- else {
184
- // Write to actual directory
185
- const actual_path = path.join(actual_output_dir, output_name);
186
- fs.writeFileSync(actual_path, output_content);
187
- console.log(`\x1b[31m${base_name} ❌\x1b[0m`);
188
- differences_found++;
189
- }
190
- }
191
- }
192
- }
193
- catch (error) {
194
- // Write error information to actual file so we can see what went wrong
195
- const actual_path = path.join(actual_output_dir, output_name);
196
- const error_content = `ERROR during transformation:\n${error instanceof Error ? error.stack : String(error)}`;
197
- fs.writeFileSync(actual_path, error_content);
198
- console.log(`\x1b[31m${base_name} ❌\x1b[0m`);
199
- console.log('\n' + '-'.repeat(60));
200
- console.error(`❌ FATAL ERROR during transformation of ${base_name}:`);
201
- console.error(error instanceof Error ? error.message : String(error));
202
- console.error(`Full error details written to: ${actual_path}`);
203
- console.error(`\nAborting test run due to transformation error.`);
204
- console.log('='.repeat(60));
205
- process.exit(1);
206
- }
207
- }
208
- console.log('\n' + '-'.repeat(60));
209
- if (overwrite_expected) {
210
- console.log(`✓ Baseline set: ${input_files.length} file(s) written to expected directory`);
211
- console.log('='.repeat(60));
212
- return true;
213
- }
214
- else {
215
- console.log(`Summary:`);
216
- console.log(` - ${matches_found} file(s) match expected`);
217
- console.log(` - ${differences_found} file(s) differ or missing expected`);
218
- if (differences_found > 0) {
219
- console.log(`\n⚠️ Differences found! Check files in: ${actual_output_dir}`);
220
- console.log(`To set new baseline, run with: --overwrite-expected`);
221
- console.log('='.repeat(60));
222
- return false;
223
- }
224
- else {
225
- console.log(`\n✓ All generated files match expected`);
226
- console.log('='.repeat(60));
227
- return true;
228
- }
229
- }
230
- };
231
- exports.test_runner = test_runner;
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuX3Rlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bl90ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGlEQUF3QztBQUN4QywyQ0FBNEI7QUFDNUIsdUNBQXdCO0FBR2pCLE1BQU0sU0FBUyxHQUFHLENBQ3JCLEtBQW1CLEVBQ25CLGtCQUEyQixFQUMzQixRQUFnQixFQUNsQixFQUFFO0lBRUEsNERBQTREO0lBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ2hELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzVCLHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzFDLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7WUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDL0MsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUNwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUNyQixFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7WUFDM0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDN0IsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUE7SUFDL0MsQ0FBQztTQUFNLENBQUM7UUFDSixFQUFFLENBQUMsU0FB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