Skip to content

Commit 830413b

Browse files
authored
Merge pull request #1 from UziTech/pr/1460
create dynamic redos specs
2 parents bd789b3 + bcb51f9 commit 830413b

File tree

7 files changed

+30
-4
lines changed

7 files changed

+30
-4
lines changed

test/redos/quadratic_br.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/redos/quadratic_br.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
markdown: `a${' '.repeat(50000)}`,
3+
html: `<p>a${' '.repeat(50000)}</p>`
4+
};

test/redos/quadratic_br.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/redos/quadratic_email.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/redos/quadratic_email.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
markdown: 'a'.repeat(50000),
3+
html: `<p>${'a'.repeat(50000)}</p>`
4+
};

test/redos/quadratic_email.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/specs/redos-spec.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const path = require('path');
2+
const fs = require('fs');
3+
4+
describe('ReDOS tests', () => {
5+
const files = fs.readdirSync(path.resolve(__dirname, '../redos/'));
6+
files.forEach(file => {
7+
if (!file.match(/\.js$/)) {
8+
return;
9+
}
10+
11+
it(file, () => {
12+
const spec = require(path.resolve(__dirname, '../redos', file));
13+
const before = process.hrtime();
14+
expect(spec).toRender(spec.html);
15+
const elapsed = process.hrtime(before);
16+
if (elapsed[0] > 0) {
17+
const s = (elapsed[0] + elapsed[1] * 1e-9).toFixed(3);
18+
fail(`took too long: ${s}s`);
19+
}
20+
});
21+
});
22+
});

0 commit comments

Comments
 (0)