@abaplint/transpiler 2.10.39 → 2.10.40
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/build/src/unit_test.js +43 -29
- package/package.json +1 -1
package/build/src/unit_test.js
CHANGED
|
@@ -88,7 +88,8 @@ run().then(() => {
|
|
|
88
88
|
}
|
|
89
89
|
tests.push({
|
|
90
90
|
obj,
|
|
91
|
-
|
|
91
|
+
filename: `./${(0, initialization_1.escapeNamespaceFilename)(obj.getName().toLowerCase())}.${obj.getType().toLowerCase()}.testclasses.mjs`,
|
|
92
|
+
localClass: def.name.toLowerCase(),
|
|
92
93
|
riskLevel: def.riskLevel,
|
|
93
94
|
duration: def.duration,
|
|
94
95
|
methods: methods,
|
|
@@ -144,41 +145,54 @@ run().then(() => {
|
|
|
144
145
|
return tests;
|
|
145
146
|
}
|
|
146
147
|
unitTestScript(reg, skip) {
|
|
148
|
+
const callSpecial = (name) => {
|
|
149
|
+
let ret = "";
|
|
150
|
+
ret += `if (test.${name}) await test.${name}();\n`;
|
|
151
|
+
ret += ` if (test.FRIENDS_ACCESS_INSTANCE.${name}) await test.FRIENDS_ACCESS_INSTANCE.${name}();\n`;
|
|
152
|
+
ret += ` if (test.FRIENDS_ACCESS_INSTANCE.SUPER && test.FRIENDS_ACCESS_INSTANCE.SUPER.${name}) await test.FRIENDS_ACCESS_INSTANCE.SUPER.${name}();`;
|
|
153
|
+
return ret;
|
|
154
|
+
};
|
|
147
155
|
let ret = `/* eslint-disable curly */
|
|
156
|
+
/* eslint-disable max-len */
|
|
148
157
|
import {initializeABAP} from "./init.mjs";
|
|
149
158
|
|
|
150
|
-
|
|
151
|
-
|
|
159
|
+
function getData() {
|
|
160
|
+
const ret = [];\n`;
|
|
152
161
|
for (const st of this.getSortedTests(reg)) {
|
|
153
|
-
|
|
154
|
-
const lc = st.localClass.toLowerCase();
|
|
155
|
-
ret += ` {
|
|
156
|
-
const {${lc}} = await import("./${(0, initialization_1.escapeNamespaceFilename)(st.obj.getName().toLowerCase())}.${st.obj.getType().toLowerCase()}.testclasses.mjs");
|
|
157
|
-
if (${lc}.class_setup) await ${lc}.class_setup();\n`;
|
|
162
|
+
const methods = [];
|
|
158
163
|
for (const m of st.methods) {
|
|
159
|
-
const skipThis = (skip || []).some(a => a.object === st.obj.getName()
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
ret += ` if (test.${name}) await test.${name}();\n`;
|
|
167
|
-
ret += ` if (test.FRIENDS_ACCESS_INSTANCE.${name}) await test.FRIENDS_ACCESS_INSTANCE.${name}();\n`;
|
|
168
|
-
ret += ` if (test.FRIENDS_ACCESS_INSTANCE.SUPER && test.FRIENDS_ACCESS_INSTANCE.SUPER.${name}) await test.FRIENDS_ACCESS_INSTANCE.SUPER.${name}();\n`;
|
|
169
|
-
return ret;
|
|
170
|
-
};
|
|
171
|
-
ret += ` {\n const test = await (new ${lc}()).constructor_();\n`;
|
|
172
|
-
ret += callSpecial("setup");
|
|
173
|
-
ret += ` console.log("${st.obj.getName()}: running ${lc}->${m}");\n`;
|
|
174
|
-
ret += ` await test.FRIENDS_ACCESS_INSTANCE.${m}();\n`;
|
|
175
|
-
ret += callSpecial("teardown");
|
|
176
|
-
ret += ` }\n`;
|
|
164
|
+
const skipThis = (skip || []).some(a => a.object.toUpperCase() === st.obj.getName().toUpperCase()
|
|
165
|
+
&& a.class.toUpperCase() === st.localClass.toUpperCase()
|
|
166
|
+
&& a.method.toUpperCase() === m.toUpperCase());
|
|
167
|
+
methods.push({
|
|
168
|
+
name: m,
|
|
169
|
+
skip: skipThis,
|
|
170
|
+
});
|
|
177
171
|
}
|
|
178
|
-
ret += `
|
|
179
|
-
ret += ` }\n`;
|
|
172
|
+
ret += ` ret.push({objectName: "${st.obj.getName()}", localClass: "${st.localClass}", methods: ${JSON.stringify(methods)}, filename: "${st.filename}"});\n`;
|
|
180
173
|
}
|
|
181
|
-
ret +=
|
|
174
|
+
ret += ` return ret;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
async function run() {
|
|
178
|
+
await initializeABAP();
|
|
179
|
+
for (const st of getData()) {
|
|
180
|
+
const imported = await import(st.filename);
|
|
181
|
+
const localClass = imported[st.localClass];
|
|
182
|
+
if (localClass.class_setup) await localClass.class_setup();
|
|
183
|
+
for (const m of st.methods) {
|
|
184
|
+
if (m.skip) {
|
|
185
|
+
console.log(st.objectName + ": running " + st.localClass + "->" + m.name + ", skipped");
|
|
186
|
+
} else {
|
|
187
|
+
const test = await (new localClass()).constructor_();
|
|
188
|
+
${callSpecial("setup")}
|
|
189
|
+
console.log(st.objectName + ": running " + st.localClass + "->" + m.name);
|
|
190
|
+
await test.FRIENDS_ACCESS_INSTANCE[m.name]();
|
|
191
|
+
${callSpecial("teardown")}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (localClass.class_teardown) await localClass.class_teardown();
|
|
195
|
+
}
|
|
182
196
|
}
|
|
183
197
|
|
|
184
198
|
run().then(() => {
|