pdf.js/test/add_test.js
Jonas Jenwald 842e9206c0 Replace String.prototype.substr() occurrences with String.prototype.substring()
As outlined in https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr, which refers to the ECMA-262 specification, using the `substr` function is advised against.

Hence this PR, which replaces all remaining `substr` occurrences with `substring` instead. Please refer to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr#Syntax respectively https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring#Syntax for the differences between the two functions.

Note that in most cases in the code-base there's only one argument passed to `substr`, and those require no other changes except replacing "substr" with "substring". For the other cases, the `substr(start, length)` calls are changed to `substring(start, start + length)` instead.
2018-09-28 11:41:07 +02:00

70 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}`);
});