@keymanapp/developer-utils 18.0.120-alpha → 18.0.122-alpha

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.
@@ -0,0 +1,152 @@
1
+ /*
2
+ * Keyman is copyright (C) SIL Global. MIT License.
3
+ *
4
+ * Created by srl on 2024-09-27
5
+ *
6
+ * Test for abstraction for XML reading and writing
7
+ */
8
+
9
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ad4ac8a8-5fd2-5481-9dfa-3c2c423a995f")}catch(e){}}();
10
+ import { assert } from 'chai';
11
+ import 'mocha';
12
+ import { env } from 'node:process';
13
+ import { readFileSync, writeFileSync } from 'node:fs';
14
+ import { KeymanXMLReader, KeymanXMLWriter } from '../src/xml-utils.js';
15
+ import { makePathToFixture } from './helpers/index.js';
16
+ // if true, attempt to WRITE the fixtures
17
+ const { GEN_XML_FIXTURES } = env;
18
+ class Case {
19
+ type;
20
+ paths;
21
+ }
22
+ ;
23
+ const read_cases = [
24
+ {
25
+ type: 'keyboard3',
26
+ paths: [
27
+ // keyboards
28
+ 'disp_maximal.xml',
29
+ 'k_020_fr.xml',
30
+ 'strs_invalid-illegal.xml',
31
+ 'tran_fail-empty.xml',
32
+ ],
33
+ }, {
34
+ type: 'keyboardTest3',
35
+ paths: [
36
+ // keyboard test
37
+ 'k_020_fr-test.xml',
38
+ ],
39
+ }, {
40
+ type: 'kvks',
41
+ paths: [
42
+ // kvks
43
+ 'khmer_angkor.kvks',
44
+ ],
45
+ }, {
46
+ type: 'kps',
47
+ paths: [
48
+ // kps
49
+ 'test_valid.kps',
50
+ // 'error_invalid_package_file.kps',
51
+ ],
52
+ }, {
53
+ type: 'kpj',
54
+ paths: [
55
+ // kpj
56
+ 'khmer_angkor.kpj',
57
+ ],
58
+ },
59
+ ];
60
+ const write_cases = [
61
+ {
62
+ type: 'kvks',
63
+ paths: [
64
+ // kvks
65
+ 'khmer_angkor2.kvks', // similar to the 'read case' with the similar name, except for whitespace differences and the prologue
66
+ ],
67
+ },
68
+ ];
69
+ /** read data, or null */
70
+ function readData(path) {
71
+ try {
72
+ return readFileSync(path, 'utf-8');
73
+ }
74
+ catch (e) {
75
+ if (e?.code !== 'ENOENT')
76
+ console.error(`reading ${path}`, e);
77
+ return null;
78
+ }
79
+ }
80
+ function readJson(path) {
81
+ const data = readData(path);
82
+ if (data === null)
83
+ return null;
84
+ return JSON.parse(data);
85
+ }
86
+ function writeJson(path, data) {
87
+ writeFileSync(path, JSON.stringify(data, null, ' '));
88
+ }
89
+ describe(`XML Reader Test ${GEN_XML_FIXTURES && '(update mode!)' || ''}`, () => {
90
+ for (const c of read_cases) {
91
+ const { type, paths } = c;
92
+ describe(`test reading ${type}`, () => {
93
+ for (const path of paths) {
94
+ const xmlPath = makePathToFixture('xml', `${path}`);
95
+ const jsonPath = makePathToFixture('xml', `${path}.json`);
96
+ it(`read: xml/${path}`, () => {
97
+ // get the string data
98
+ const xml = readData(xmlPath);
99
+ assert.ok(xml, `Could not read ${xmlPath}`);
100
+ const reader = new KeymanXMLReader(type);
101
+ assert.ok(reader);
102
+ // now, parse. subsitute endings for Win
103
+ const actual = reader.parse(xml.replace(/\r\n/g, '\n'));
104
+ assert.ok(actual, `Parser failed on ${xmlPath}`);
105
+ // get the expected
106
+ const expect = readJson(jsonPath);
107
+ if (GEN_XML_FIXTURES) {
108
+ console.log(`GEN_XML_FIXTURES: writing ${jsonPath} from actual`);
109
+ writeJson(jsonPath, actual);
110
+ }
111
+ else {
112
+ assert.ok(expect, `Could not read ${jsonPath} - run with env GEN_XML_FIXTURES=1 to update.`);
113
+ assert.deepEqual(actual, expect, `Mismatch of ${xmlPath} vs ${jsonPath}`);
114
+ }
115
+ });
116
+ }
117
+ });
118
+ }
119
+ });
120
+ describe(`XML Writer Test ${GEN_XML_FIXTURES && '(update mode!)' || ''}`, () => {
121
+ for (const c of write_cases) {
122
+ const { type, paths } = c;
123
+ describe(`test writing ${type}`, () => {
124
+ const writer = new KeymanXMLWriter(type);
125
+ assert.ok(writer);
126
+ for (const path of paths) {
127
+ const jsonPath = makePathToFixture('xml', `${path}.json`);
128
+ const xmlPath = makePathToFixture('xml', `${path}`);
129
+ it(`write: xml/${path}`, () => {
130
+ // get the object data
131
+ const data = readJson(jsonPath);
132
+ assert.ok(data, `Could not read input ${jsonPath}`);
133
+ // now, write.
134
+ const actual = writer.write(data);
135
+ assert.ok(actual, `Writer failed on ${jsonPath}`);
136
+ if (GEN_XML_FIXTURES) {
137
+ console.log(`GEN_XML_FIXTURES: writing ${xmlPath} from actual`);
138
+ writeFileSync(xmlPath, actual);
139
+ }
140
+ else {
141
+ // get the expected data
142
+ const expect = readData(xmlPath).replace(/\r\n/g, '\n');
143
+ assert.ok(expect, `Could not read expected output ${xmlPath} - run with env=GEN_XML_FIXTURES=1 to update`);
144
+ assert.deepEqual(actual.trim(), expect.trim(), `Mismatch of ${xmlPath} vs ${jsonPath}`);
145
+ }
146
+ });
147
+ }
148
+ });
149
+ }
150
+ });
151
+ //# sourceMappingURL=test-xml-utils.js.map
152
+ //# debugId=ad4ac8a8-5fd2-5481-9dfa-3c2c423a995f
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-xml-utils.js","sources":["../../test/test-xml-utils.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"ad4ac8a8-5fd2-5481-9dfa-3c2c423a995f"}