mirror of
https://github.com/wekan/wekan.git
synced 2026-03-12 08:32:33 +01:00
Include to Wekan packages directory contents, so that meteor command would build all directly.
This also simplifies build scripts. Thanks to xet7 !
This commit is contained in:
parent
6117097a93
commit
73e265d8fd
354 changed files with 36977 additions and 106 deletions
5327
packages/markdown/marked/test/specs/commonmark/commonmark.0.29.json
Normal file
5327
packages/markdown/marked/test/specs/commonmark/commonmark.0.29.json
Normal file
File diff suppressed because it is too large
Load diff
24
packages/markdown/marked/test/specs/commonmark/getSpecs.js
Normal file
24
packages/markdown/marked/test/specs/commonmark/getSpecs.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
const fetch = require('node-fetch');
|
||||
const marked = require('../../../');
|
||||
const htmlDiffer = require('../../helpers/html-differ.js');
|
||||
const fs = require('fs');
|
||||
|
||||
fetch('https://raw.githubusercontent.com/commonmark/commonmark.js/master/package.json')
|
||||
.then(res => res.json())
|
||||
.then(pkg => pkg.version.replace(/^(\d+\.\d+).*$/, '$1'))
|
||||
.then(version =>
|
||||
fetch(`https://spec.commonmark.org/${version}/spec.json`)
|
||||
.then(res => res.json())
|
||||
.then(specs => {
|
||||
specs.forEach(spec => {
|
||||
const html = marked(spec.markdown, {headerIds: false});
|
||||
if (!htmlDiffer.isEqual(html, spec.html)) {
|
||||
spec.shouldFail = true;
|
||||
}
|
||||
});
|
||||
fs.writeFileSync(`commonmark.${version}.json`, JSON.stringify(specs, null, 2) + '\n');
|
||||
})
|
||||
)
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
});
|
||||
44
packages/markdown/marked/test/specs/gfm/getSpecs.js
Normal file
44
packages/markdown/marked/test/specs/gfm/getSpecs.js
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
const fetch = require('node-fetch');
|
||||
const cheerio = require('cheerio');
|
||||
const marked = require('../../../');
|
||||
const htmlDiffer = require('../../helpers/html-differ.js');
|
||||
const fs = require('fs');
|
||||
|
||||
fetch('https://github.github.com/gfm/')
|
||||
.then(res => res.text())
|
||||
.then(html => cheerio.load(html))
|
||||
.then($ => {
|
||||
const version = $('.version').text().match(/\d+\.\d+/)[0];
|
||||
if (!version) {
|
||||
throw new Error('No version found');
|
||||
}
|
||||
const specs = [];
|
||||
$('.extension').each((i, ext) => {
|
||||
const section = $('.definition', ext).text().trim().replace(/^\d+\.\d+(.*?) \(extension\)[\s\S]*$/, '$1');
|
||||
$('.example', ext).each((j, exa) => {
|
||||
const example = +$(exa).attr('id').replace(/\D/g, '');
|
||||
const markdown = $('.language-markdown', exa).text().trim();
|
||||
const html = $('.language-html', exa).text().trim();
|
||||
specs.push({
|
||||
section,
|
||||
html,
|
||||
markdown,
|
||||
example
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
return [version, specs];
|
||||
})
|
||||
.then(([version, specs]) => {
|
||||
specs.forEach(spec => {
|
||||
const html = marked(spec.markdown, {gfm: true});
|
||||
if (!htmlDiffer.isEqual(html, spec.html)) {
|
||||
spec.shouldFail = true;
|
||||
}
|
||||
});
|
||||
fs.writeFileSync(`gfm.${version}.json`, JSON.stringify(specs, null, 2) + '\n');
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
});
|
||||
147
packages/markdown/marked/test/specs/gfm/gfm.0.29.json
Normal file
147
packages/markdown/marked/test/specs/gfm/gfm.0.29.json
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
[
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<table>\n<thead>\n<tr>\n<th>foo</th>\n<th>bar</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>baz</td>\n<td>bim</td>\n</tr>\n</tbody>\n</table>",
|
||||
"markdown": "| foo | bar |\n| --- | --- |\n| baz | bim |",
|
||||
"example": 198
|
||||
},
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<table>\n<thead>\n<tr>\n<th align=\"center\">abc</th>\n<th align=\"right\">defghi</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"center\">bar</td>\n<td align=\"right\">baz</td>\n</tr>\n</tbody>\n</table>",
|
||||
"markdown": "| abc | defghi |\n:-: | -----------:\nbar | baz",
|
||||
"example": 199
|
||||
},
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<table>\n<thead>\n<tr>\n<th>f|oo</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>b <code>|</code> az</td>\n</tr>\n<tr>\n<td>b <strong>|</strong> im</td>\n</tr>\n</tbody>\n</table>",
|
||||
"markdown": "| f\\|oo |\n| ------ |\n| b `\\|` az |\n| b **\\|** im |",
|
||||
"example": 200
|
||||
},
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<table>\n<thead>\n<tr>\n<th>abc</th>\n<th>def</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bar</td>\n<td>baz</td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>bar</p>\n</blockquote>",
|
||||
"markdown": "| abc | def |\n| --- | --- |\n| bar | baz |\n> bar",
|
||||
"example": 201
|
||||
},
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<table>\n<thead>\n<tr>\n<th>abc</th>\n<th>def</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bar</td>\n<td>baz</td>\n</tr>\n<tr>\n<td>bar</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n<p>bar</p>",
|
||||
"markdown": "| abc | def |\n| --- | --- |\n| bar | baz |\nbar\n\nbar",
|
||||
"example": 202
|
||||
},
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<p>| abc | def |\n| --- |\n| bar |</p>",
|
||||
"markdown": "| abc | def |\n| --- |\n| bar |",
|
||||
"example": 203
|
||||
},
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<table>\n<thead>\n<tr>\n<th>abc</th>\n<th>def</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bar</td>\n<td></td>\n</tr>\n<tr>\n<td>bar</td>\n<td>baz</td>\n</tr>\n</tbody>\n</table>",
|
||||
"markdown": "| abc | def |\n| --- | --- |\n| bar |\n| bar | baz | boo |",
|
||||
"example": 204
|
||||
},
|
||||
{
|
||||
"section": "Tables",
|
||||
"html": "<table>\n<thead>\n<tr>\n<th>abc</th>\n<th>def</th>\n</tr>\n</thead>\n</table>",
|
||||
"markdown": "| abc | def |\n| --- | --- |",
|
||||
"example": 205
|
||||
},
|
||||
{
|
||||
"section": "Task list items",
|
||||
"html": "<ul>\n<li><input disabled=\"\" type=\"checkbox\"> foo</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> bar</li>\n</ul>",
|
||||
"markdown": "- [ ] foo\n- [x] bar",
|
||||
"example": 279
|
||||
},
|
||||
{
|
||||
"section": "Task list items",
|
||||
"html": "<ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> foo\n<ul>\n<li><input disabled=\"\" type=\"checkbox\"> bar</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> baz</li>\n</ul>\n</li>\n<li><input disabled=\"\" type=\"checkbox\"> bim</li>\n</ul>",
|
||||
"markdown": "- [x] foo\n - [ ] bar\n - [x] baz\n- [ ] bim",
|
||||
"example": 280
|
||||
},
|
||||
{
|
||||
"section": "Strikethrough",
|
||||
"html": "<p><del>Hi</del> Hello, world!</p>",
|
||||
"markdown": "~~Hi~~ Hello, world!",
|
||||
"example": 491
|
||||
},
|
||||
{
|
||||
"section": "Strikethrough",
|
||||
"html": "<p>This ~~has a</p>\n<p>new paragraph~~.</p>",
|
||||
"markdown": "This ~~has a\n\nnew paragraph~~.",
|
||||
"example": 492
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"http://www.commonmark.org\">www.commonmark.org</a></p>",
|
||||
"markdown": "www.commonmark.org",
|
||||
"example": 621
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p>Visit <a href=\"http://www.commonmark.org/help\">www.commonmark.org/help</a> for more information.</p>",
|
||||
"markdown": "Visit www.commonmark.org/help for more information.",
|
||||
"example": 622
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p>Visit <a href=\"http://www.commonmark.org\">www.commonmark.org</a>.</p>\n<p>Visit <a href=\"http://www.commonmark.org/a.b\">www.commonmark.org/a.b</a>.</p>",
|
||||
"markdown": "Visit www.commonmark.org.\n\nVisit www.commonmark.org/a.b.",
|
||||
"example": 623
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"http://www.google.com/search?q=Markup+(business)\">www.google.com/search?q=Markup+(business)</a></p>\n<p>(<a href=\"http://www.google.com/search?q=Markup+(business)\">www.google.com/search?q=Markup+(business)</a>)</p>",
|
||||
"markdown": "www.google.com/search?q=Markup+(business)\n\n(www.google.com/search?q=Markup+(business))",
|
||||
"example": 624
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"http://www.google.com/search?q=(business))+ok\">www.google.com/search?q=(business))+ok</a></p>",
|
||||
"markdown": "www.google.com/search?q=(business))+ok",
|
||||
"example": 625
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"http://www.google.com/search?q=commonmark&hl=en\">www.google.com/search?q=commonmark&hl=en</a></p>\n<p><a href=\"http://www.google.com/search?q=commonmark\">www.google.com/search?q=commonmark</a>&hl;</p>",
|
||||
"markdown": "www.google.com/search?q=commonmark&hl=en\n\nwww.google.com/search?q=commonmark&hl;",
|
||||
"example": 626
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"http://www.commonmark.org/he\">www.commonmark.org/he</a><lp</p>",
|
||||
"markdown": "www.commonmark.org/he<lp",
|
||||
"example": 627
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"http://commonmark.org\">http://commonmark.org</a></p>\n<p>(Visit <a href=\"https://encrypted.google.com/search?q=Markup+(business)\">https://encrypted.google.com/search?q=Markup+(business)</a>)</p>\n<p>Anonymous FTP is available at <a href=\"ftp://foo.bar.baz\">ftp://foo.bar.baz</a>.</p>",
|
||||
"markdown": "http://commonmark.org\n\n(Visit https://encrypted.google.com/search?q=Markup+(business))\n\nAnonymous FTP is available at ftp://foo.bar.baz.",
|
||||
"example": 628
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"mailto:foo@bar.baz\">foo@bar.baz</a></p>",
|
||||
"markdown": "foo@bar.baz",
|
||||
"example": 629
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p>hello@mail+xyz.example isn't valid, but <a href=\"mailto:hello+xyz@mail.example\">hello+xyz@mail.example</a> is.</p>",
|
||||
"markdown": "hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is.",
|
||||
"example": 630
|
||||
},
|
||||
{
|
||||
"section": "Autolinks",
|
||||
"html": "<p><a href=\"mailto:a.b-c_d@a.b\">a.b-c_d@a.b</a></p>\n<p><a href=\"mailto:a.b-c_d@a.b\">a.b-c_d@a.b</a>.</p>\n<p>a.b-c_d@a.b-</p>\n<p>a.b-c_d@a.b_</p>",
|
||||
"markdown": "a.b-c_d@a.b\n\na.b-c_d@a.b.\n\na.b-c_d@a.b-\n\na.b-c_d@a.b_",
|
||||
"example": 631
|
||||
},
|
||||
{
|
||||
"section": "Disallowed Raw HTML",
|
||||
"html": "<p><strong> <title> <style> <em></p>\n<blockquote>\n <xmp> is disallowed. <XMP> is also disallowed.\n</blockquote>",
|
||||
"markdown": "<strong> <title> <style> <em>\n\n<blockquote>\n <xmp> is disallowed. <XMP> is also disallowed.\n</blockquote>",
|
||||
"example": 653,
|
||||
"shouldFail": true
|
||||
}
|
||||
]
|
||||
12
packages/markdown/marked/test/specs/original/specs-spec.js
Normal file
12
packages/markdown/marked/test/specs/original/specs-spec.js
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
var specTests = require('../../');
|
||||
|
||||
it('should run spec tests', () => {
|
||||
// hide output
|
||||
spyOn(console, 'log');
|
||||
if (!specTests(['', '', '--stop'])) {
|
||||
// if tests fail rerun tests and show output
|
||||
console.log.and.callThrough();
|
||||
specTests([]);
|
||||
fail();
|
||||
}
|
||||
});
|
||||
24
packages/markdown/marked/test/specs/redos-spec.js
Normal file
24
packages/markdown/marked/test/specs/redos-spec.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const redosDir = path.resolve(__dirname, '../redos');
|
||||
|
||||
describe('ReDOS tests', () => {
|
||||
const files = fs.readdirSync(redosDir);
|
||||
files.forEach(file => {
|
||||
if (!file.match(/\.js$/)) {
|
||||
return;
|
||||
}
|
||||
|
||||
it(file, () => {
|
||||
const spec = require(path.resolve(redosDir, file));
|
||||
const before = process.hrtime();
|
||||
expect(spec).toRender(spec.html);
|
||||
const elapsed = process.hrtime(before);
|
||||
if (elapsed[0] > 0) {
|
||||
const s = (elapsed[0] + elapsed[1] * 1e-9).toFixed(3);
|
||||
fail(`took too long: ${s}s`);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
52
packages/markdown/marked/test/specs/run-spec.js
Normal file
52
packages/markdown/marked/test/specs/run-spec.js
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
function runSpecs(title, file, options) {
|
||||
const json = require(file);
|
||||
let longestName = 0;
|
||||
let maxSpecs = 0;
|
||||
const specs = json.reduce((obj, spec) => {
|
||||
if (!obj[spec.section]) {
|
||||
longestName = Math.max(spec.section.length, longestName);
|
||||
obj[spec.section] = {
|
||||
specs: [],
|
||||
pass: 0,
|
||||
total: 0
|
||||
};
|
||||
}
|
||||
obj[spec.section].total++;
|
||||
maxSpecs = Math.max(obj[spec.section].total, maxSpecs);
|
||||
if (!spec.shouldFail) {
|
||||
obj[spec.section].pass++;
|
||||
}
|
||||
obj[spec.section].specs.push(spec);
|
||||
return obj;
|
||||
}, {});
|
||||
|
||||
describe(title, () => {
|
||||
const maxSpecsLen = ('' + maxSpecs).length;
|
||||
const spaces = maxSpecsLen * 2 + longestName + 11;
|
||||
console.log('-'.padEnd(spaces + 4, '-'));
|
||||
console.log(`| ${title.padStart(Math.ceil((spaces + title.length) / 2)).padEnd(spaces)} |`);
|
||||
console.log(`| ${' '.padEnd(spaces)} |`);
|
||||
Object.keys(specs).forEach(section => {
|
||||
console.log(`| ${section.padEnd(longestName)} ${('' + specs[section].pass).padStart(maxSpecsLen)} of ${('' + specs[section].total).padStart(maxSpecsLen)} ${(100 * specs[section].pass / specs[section].total).toFixed().padStart(4)}% |`);
|
||||
describe(section, () => {
|
||||
specs[section].specs.forEach((spec) => {
|
||||
if (options) {
|
||||
spec.options = Object.assign({}, options, (spec.options || {}));
|
||||
}
|
||||
(spec.only ? fit : it)('should ' + (spec.shouldFail ? 'fail' : 'pass') + ' example ' + spec.example, () => {
|
||||
if (spec.shouldFail) {
|
||||
expect(spec).not.toRender(spec.html);
|
||||
} else {
|
||||
expect(spec).toRender(spec.html);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
console.log('-'.padEnd(spaces + 4, '-'));
|
||||
console.log();
|
||||
});
|
||||
};
|
||||
|
||||
runSpecs('GFM 0.29', './gfm/gfm.0.29.json', {gfm: true});
|
||||
runSpecs('CommonMark 0.29', './commonmark/commonmark.0.29.json', {headerIds: false});
|
||||
Loading…
Add table
Add a link
Reference in a new issue