summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-02-17 22:31:28 -0500
committertoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-02-17 22:31:28 -0500
commit06480751a9d9ff1471455f31e3efc99d552a4975 (patch)
treed689028a78330eb0434165c638206b135bfe4844
parent7cbebf6897efb32c80c5e258f594d18861974bad (diff)
Create yomichan-test script to reduce repeated code
-rw-r--r--test/dictionary-validate.js10
-rw-r--r--test/schema-validate.js6
-rw-r--r--test/test-schema.js7
-rw-r--r--test/yomichan-test.js33
4 files changed, 40 insertions, 16 deletions
diff --git a/test/dictionary-validate.js b/test/dictionary-validate.js
index dca3bcf5..082f0aea 100644
--- a/test/dictionary-validate.js
+++ b/test/dictionary-validate.js
@@ -1,13 +1,9 @@
const fs = require('fs');
const path = require('path');
+const yomichanTest = require('./yomichan-test');
-process.noDeprecation = true; // Suppress a warning about JSZip
-const JSZip = require(path.join(__dirname, '../ext/mixed/lib/jszip.min.js'));
-process.noDeprecation = false;
-
-const jsonSchemaFileName = path.join(__dirname, '../ext/bg/js/json-schema.js');
-const jsonSchemaFileSource = fs.readFileSync(jsonSchemaFileName, {encoding: 'utf8'});
-const JsonSchema = Function(`'use strict';${jsonSchemaFileSource};return JsonSchema;`)();
+const JSZip = yomichanTest.JSZip;
+const {JsonSchema} = yomichanTest.requireScript('ext/bg/js/json-schema.js', ['JsonSchema']);
function readSchema(relativeFileName) {
diff --git a/test/schema-validate.js b/test/schema-validate.js
index 309adf83..1271a611 100644
--- a/test/schema-validate.js
+++ b/test/schema-validate.js
@@ -1,9 +1,7 @@
const fs = require('fs');
-const path = require('path');
+const yomichanTest = require('./yomichan-test');
-const jsonSchemaFileName = path.join(__dirname, '../ext/bg/js/json-schema.js');
-const jsonSchemaFileSource = fs.readFileSync(jsonSchemaFileName, {encoding: 'utf8'});
-const JsonSchema = Function(`'use strict';${jsonSchemaFileSource};return JsonSchema;`)();
+const {JsonSchema} = yomichanTest.requireScript('ext/bg/js/json-schema.js', ['JsonSchema']);
function main() {
diff --git a/test/test-schema.js b/test/test-schema.js
index 762b8509..ca4f56dd 100644
--- a/test/test-schema.js
+++ b/test/test-schema.js
@@ -1,10 +1,7 @@
-const fs = require('fs');
-const path = require('path');
const assert = require('assert');
+const yomichanTest = require('./yomichan-test');
-const jsonSchemaFileName = path.join(__dirname, '../ext/bg/js/json-schema.js');
-const jsonSchemaFileSource = fs.readFileSync(jsonSchemaFileName, {encoding: 'utf8'});
-const JsonSchema = Function(`'use strict';${jsonSchemaFileSource};return JsonSchema;`)();
+const {JsonSchema} = yomichanTest.requireScript('ext/bg/js/json-schema.js', ['JsonSchema']);
function testValidate1() {
diff --git a/test/yomichan-test.js b/test/yomichan-test.js
new file mode 100644
index 00000000..602b8d78
--- /dev/null
+++ b/test/yomichan-test.js
@@ -0,0 +1,33 @@
+const fs = require('fs');
+const path = require('path');
+
+
+let JSZip = null;
+
+function requireScript(fileName, exportNames, variables) {
+ const absoluteFileName = path.join(__dirname, '..', fileName);
+ const source = fs.readFileSync(absoluteFileName, {encoding: 'utf8'});
+ const exportNamesString = Array.isArray(exportNames) ? exportNames.join(',') : '';
+ const variablesArgumentName = '__variables__';
+ let variableString = '';
+ if (typeof variables === 'object' && variables !== null) {
+ variableString = Object.keys(variables).join(',');
+ variableString = `const {${variableString}} = ${variablesArgumentName};`;
+ }
+ return Function(variablesArgumentName, `'use strict';${variableString}${source}\n;return {${exportNamesString}};`)(variables);
+}
+
+function getJSZip() {
+ if (JSZip === null) {
+ process.noDeprecation = true; // Suppress a warning about JSZip
+ JSZip = require(path.join(__dirname, '../ext/mixed/lib/jszip.min.js'));
+ process.noDeprecation = false;
+ }
+ return JSZip;
+}
+
+
+module.exports = {
+ requireScript,
+ get JSZip() { return getJSZip(); }
+};