a63f7ad486
This patch makes the follow changes: - Remove no longer necessary inline `// eslint-disable-...` comments. - Fix `// eslint-disable-...` comments that Prettier moved down, thus causing new linting errors. - Concatenate strings which now fit on just one line. - Fix comments that are now too long. - Finally, and most importantly, adjust comments that Prettier moved down, since the new positions often is confusing or outright wrong.
75 lines
2.1 KiB
JavaScript
75 lines
2.1 KiB
JavaScript
const fs = require("fs");
|
|
const crypto = require("crypto");
|
|
const execSync = require("child_process").execSync;
|
|
|
|
const testManifest = "test/test_manifest.json";
|
|
const pdfFolder = "test/pdfs/";
|
|
const gitIgnore = "test/pdfs/.gitignore";
|
|
|
|
if (process.argv.length < 3) {
|
|
console.log("\nUsage: node add_test.js FILE\n");
|
|
console.log(
|
|
` Add a PDF as a reference test. FILE must be located in ${pdfFolder}`
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
let file = process.argv[2];
|
|
if (!file.startsWith(pdfFolder)) {
|
|
throw new Error(`PDF file must be in '${pdfFolder}' directory.`);
|
|
}
|
|
if (!fs.existsSync(file)) {
|
|
throw new Error(`PDF file does not exist '${file}'.`);
|
|
}
|
|
|
|
function calculateMD5(file, callback) {
|
|
var hash = crypto.createHash("md5");
|
|
var stream = fs.createReadStream(file);
|
|
stream.on("data", function(data) {
|
|
hash.update(data);
|
|
});
|
|
stream.on("error", function(err) {
|
|
callback(err);
|
|
});
|
|
stream.on("end", function() {
|
|
var result = hash.digest("hex");
|
|
callback(null, result);
|
|
});
|
|
}
|
|
|
|
function getRandomArbitrary(min, max) {
|
|
return Math.floor(Math.random() * (max - min) + min);
|
|
}
|
|
|
|
calculateMD5(file, (err, md5) => {
|
|
if (err) {
|
|
throw new Error(err);
|
|
}
|
|
let contents = fs.readFileSync(gitIgnore, "utf8").split("\n");
|
|
let randomLine = getRandomArbitrary(10, contents.length - 2);
|
|
contents.splice(
|
|
randomLine,
|
|
0,
|
|
"!" + file.substring(file.lastIndexOf("/") + 1)
|
|
);
|
|
fs.writeFileSync("test/pdfs/.gitignore", contents.join("\n"));
|
|
|
|
contents = fs.readFileSync(testManifest, "utf8");
|
|
let pdf = file.substring(file.lastIndexOf("/") + 1, file.length - 4);
|
|
let randomPoint = getRandomArbitrary(100, contents.length - 20);
|
|
let bracket = contents.indexOf("},\n", randomPoint);
|
|
let out =
|
|
contents.substring(0, bracket) +
|
|
"},\n" +
|
|
` { "id": "${pdf}",\n` +
|
|
` "file": "pdfs/${pdf}.pdf",\n` +
|
|
` "md5": "${md5}",\n` +
|
|
' "rounds": 1,\n' +
|
|
' "type": "eq"\n' +
|
|
" " +
|
|
contents.substring(bracket);
|
|
fs.writeFileSync("test/test_manifest.json", out);
|
|
execSync(`git add ${testManifest} ${gitIgnore}`);
|
|
execSync(`git add ${file}`);
|
|
});
|