mirror of
https://github.com/servo/servo.git
synced 2025-07-02 13:03:43 +01:00
Update web-platform-tests to revision 0d318188757a9c996e20b82db201fd04de5aa255
This commit is contained in:
parent
b2a5225831
commit
1a81b18b9f
12321 changed files with 544385 additions and 6 deletions
|
@ -0,0 +1,106 @@
|
|||
|
||||
// convert from old-style test structure to new style
|
||||
|
||||
var fs = require("fs")
|
||||
, pth = require("path")
|
||||
, jsdom = require("jsdom")
|
||||
, mkdirp = require("mkdirp").sync
|
||||
, testDir = pth.join(__dirname, "../..")
|
||||
, MAX_DEPTH = 3
|
||||
, id2path = {}
|
||||
, limitDepth = {
|
||||
parsing: true
|
||||
}
|
||||
;
|
||||
|
||||
var sections = {
|
||||
html: "http://www.w3.org/html/wg/drafts/html/master/Overview.html"
|
||||
, canvas2d: "http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas/Overview.html"
|
||||
, microdata: "http://www.w3.org/html/wg/drafts/microdata/master/Overview.html"
|
||||
};
|
||||
|
||||
function walkTree ($, $el, list) {
|
||||
$el.find("> li").each(function () {
|
||||
var $li = $(this)
|
||||
, $a = $li.find("> a").first()
|
||||
;
|
||||
// skip sections that don't have a number
|
||||
if (!/^\s*\d+/.test($a.text())) return;
|
||||
var href = $a.attr("href").replace(/^.*#/, "")
|
||||
, def = {
|
||||
id: href.toLowerCase()
|
||||
.replace(/[^a-z0-9\-]/g, "-")
|
||||
.replace(/\-{2,}/g, "-")
|
||||
.replace(/(?:^\-|\-$)/g, "")
|
||||
, original_id: href
|
||||
}
|
||||
, $ol = $li.find("> ol").first()
|
||||
;
|
||||
if ($ol.length) {
|
||||
def.children = [];
|
||||
walkTree($, $ol, def.children);
|
||||
}
|
||||
list.push(def);
|
||||
});
|
||||
}
|
||||
|
||||
function extractSections (sec, secDir, spec, cb) {
|
||||
jsdom.env(
|
||||
spec
|
||||
, function (err, window) {
|
||||
if (err) return cb(err);
|
||||
jsdom.jQueryify(window, "https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js", function (window, $) {
|
||||
if (!$) return cb("$ was not defined");
|
||||
var $root = $("body > ol.toc").first()
|
||||
, tree = []
|
||||
;
|
||||
walkTree($, $root, tree);
|
||||
cb(null, tree, sec, secDir);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
function makeID2Path (base, tree) {
|
||||
for (var i = 0, n = tree.length; i < n; i++) {
|
||||
var sec = tree[i];
|
||||
id2path[sec.original_id] = base;
|
||||
if (sec.children && sec.children.length) makeID2Path(base, sec.children);
|
||||
}
|
||||
}
|
||||
|
||||
function makeDirs (base, tree, depth) {
|
||||
console.log("Making " + base + " at depth " + depth);
|
||||
for (var i = 0, n = tree.length; i < n; i++) {
|
||||
var sec = tree[i]
|
||||
, path = pth.join(base, sec.id)
|
||||
;
|
||||
mkdirp(path);
|
||||
fs.writeFileSync(pth.join(path, ".gitkeep"), "", "utf8");
|
||||
id2path[sec.original_id] = path;
|
||||
if (sec.id !== sec.original_id) {
|
||||
fs.writeFileSync(pth.join(path, "original-id.json"), JSON.stringify({ original_id: sec.original_id}), "utf8");
|
||||
}
|
||||
if (sec.children && sec.children.length) {
|
||||
if (depth === MAX_DEPTH || limitDepth[sec.id]) {
|
||||
fs.writeFileSync(pth.join(path, "contains.json"), JSON.stringify(sec.children, null, 4), "utf8");
|
||||
makeID2Path(path, sec.children);
|
||||
}
|
||||
else {
|
||||
makeDirs(path, sec.children, depth + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var sec in sections) {
|
||||
var secDir = pth.join(testDir, sec);
|
||||
mkdirp(secDir);
|
||||
console.log("Launching extraction for " + sec);
|
||||
extractSections(sec, secDir, sections[sec], function (err, toc, sec, secDir) {
|
||||
if (err) return console.log("ERROR: " + err);
|
||||
makeDirs(secDir, toc, 1);
|
||||
for (var k in id2path) id2path[k] = id2path[k].replace(testDir + "/", "");
|
||||
fs.writeFileSync(pth.join(__dirname, "id2path.json"), JSON.stringify(id2path, null, 4), "utf8");
|
||||
});
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue