mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-09 10:25:32 +00:00
[web] Fixup save not waiting on promise; more robustness on errors
This commit is contained in:
parent
6f9faa3b6e
commit
9ca8358a2b
4 changed files with 20 additions and 8 deletions
|
|
@ -53,11 +53,9 @@ module.exports = {
|
|||
let body = [];
|
||||
|
||||
function finish(json) {
|
||||
//console.log(json);
|
||||
|
||||
response.setHeader('Content-Type', 'application/json');
|
||||
if(request.method !== 'POST' || !json || typeof json != 'object' || !json.id || !json.shortname || !json.compilerVersion || !json.engineVersion) {
|
||||
console.error('/save-results Invalid request');
|
||||
console.warn('/save-results Invalid request');
|
||||
response.writeHead(400);
|
||||
return response.end(JSON.stringify({result: "Invalid request"}));
|
||||
}
|
||||
|
|
@ -76,7 +74,7 @@ module.exports = {
|
|||
typeof(json.shortname) != 'string' || !json.shortname.match(/^[a-z]+$/) ||
|
||||
typeof(compilerVersion) != 'string' || !compilerVersion.match(/^((\d+)(\.\d+)*)|source$/) ||
|
||||
typeof(engineVersion) != 'string' || !engineVersion.match(/^((\d+)(\.\d+)*)|source$/)) {
|
||||
console.error('/save-results Invalid request');
|
||||
console.warn('/save-results Invalid request');
|
||||
response.writeHead(400);
|
||||
return response.end(JSON.stringify({result: "Invalid request"}));
|
||||
}
|
||||
|
|
@ -85,7 +83,7 @@ module.exports = {
|
|||
let base = path.join(KEYBOARDS_ROOT, json.shortname, json.id);
|
||||
if(!fs.existsSync(base)) {
|
||||
const msg = `Keyboard ${json.shortname}/${json.id} not found at ${base}`;
|
||||
console.error('/save-results 404 '+msg);
|
||||
console.warn('/save-results 404 '+msg);
|
||||
response.writeHead(404);
|
||||
return response.end(JSON.stringify({result: msg}));
|
||||
}
|
||||
|
|
@ -94,7 +92,7 @@ module.exports = {
|
|||
fs.mkdirSync(base);
|
||||
if(!fs.existsSync(base)) {
|
||||
const msg = `Could not create tests folder ${base}`;
|
||||
console.error('/save-results 500 '+msg);
|
||||
console.warn('/save-results 500 '+msg);
|
||||
response.writeHead(500);
|
||||
return response.end(JSON.stringify({result: msg}));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@ var testRunner = {
|
|||
console.log('saving test '+locator);
|
||||
let json = testRunner.parseLocator(locator);
|
||||
if(!json.id) throw new Error('Invalid locator: '+locator);
|
||||
|
||||
json.results = typeof results == 'string' ? JSON.parse(results) : results;
|
||||
json.engineVersion = keyman.build.toString();
|
||||
try {
|
||||
|
|
@ -285,9 +286,13 @@ var testRunner = {
|
|||
keyman.interface.processKeystroke(keyman.util.physicalDevice, com.keyman.text ? com.keyman.text.Processor.getOutputTarget(receiver) : receiver, e);
|
||||
this.keyboards[keyboardId].results[testId] = receiver.value;
|
||||
} catch(err) {
|
||||
console.error(err);
|
||||
console.warn(err.toString());
|
||||
this.keyboards[keyboardId].results[testId] = {error: err.message, filename: err.filename, lineno: err.lineno};
|
||||
if(!knownFailures[keyboardId]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ keyboards.forEach(function(keyboard) {
|
|||
.then(function() {
|
||||
return testRunner.loadTests(locator)
|
||||
.then((shouldRun) => { if(shouldRun) { testRunner.runTests(id); } return shouldRun; })
|
||||
.then((shouldSave) => { testRunner.saveTestResults(locator, (testRunner.keyboards[id] || {}).results); return shouldSave; });
|
||||
.then((shouldSave) => testRunner.saveTestResults(locator, (testRunner.keyboards[id] || {}).results));
|
||||
//.then(() => testRunner.runTests(id))
|
||||
//.then(() => testRunner.saveTestResults(locator, testRunner.keyboards[id].results));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -333,6 +333,15 @@ cleanKeyboards.then(() => {
|
|||
|
||||
const testsFilename = path.join(KEYBOARDS_ROOT, keyboard.shortname, keyboard.id, 'tests', `${keyboard.id}.tests`);
|
||||
const testsJSON = JSON.parse(fs.readFileSync(testsFilename, 'utf8'));
|
||||
|
||||
// First, check the base result for errors
|
||||
for(let k in baseResultJSON) {
|
||||
if(typeof baseResultJSON[k] !== 'string') {
|
||||
let input = `${testsJSON.inputTests[k].context ? `"${testsJSON.inputTests[k].context}" ` : ""}+ ${keyname(testsJSON.inputTests[k].modifier, testsJSON.inputTests[k].key)}`;
|
||||
fail(`${keyboard.shortname}/${keyboard.id}[$k]: error in test: ${input}: ${baseResultJSON[k].error}`, 5);
|
||||
}
|
||||
}
|
||||
|
||||
//console.log(baseResultFilename, baseResult);
|
||||
testedCompilerVersions.forEach((cv) => {
|
||||
testedEngineVersions.forEach((ev) => {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue