From 1a294569511bb81d8481528b9df8e18ac0907bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20B=C3=B6hm?= <188768+fb55@users.noreply.github.com> Date: Thu, 4 Nov 2021 11:57:11 +0000 Subject: [PATCH 01/14] Add note to README --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index c6c71d27f..990c7f72f 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,13 @@ HTML parsing/serialization toolset for Node.js. WHATWG HTML Living Standard (aka HTML5)-compliant.

+--- + +This is a fork of the original parse5 package. We want this to become the next version of the package, pending on +@inikulin's go-ahead. + +--- +

Build Status NPM Version From 8962f1e65f31cbca4d069405556355108ff189b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20B=C3=B6hm?= <188768+fb55@users.noreply.github.com> Date: Mon, 8 Nov 2021 00:16:56 +0000 Subject: [PATCH 02/14] test: Add several feedback tests --- test/data/parser-feedback/entities01.test | 20 + test/data/parser-feedback/noscript01.test | 435 +++++++++++++++++++++- test/data/parser-feedback/tests16.test | 197 +++++++++- test/data/parser-feedback/tests25.test | 147 ++++++++ test/data/parser-feedback/tests5.test | 27 ++ test/data/parser-feedback/tests6.test | 20 +- test/data/parser-feedback/tests7.test | 4 +- test/data/parser-feedback/tests8.test | 33 +- test/data/parser-feedback/webkit02.test | 43 +++ 9 files changed, 907 insertions(+), 19 deletions(-) diff --git a/test/data/parser-feedback/entities01.test b/test/data/parser-feedback/entities01.test index b77780573..4621dd416 100644 --- a/test/data/parser-feedback/entities01.test +++ b/test/data/parser-feedback/entities01.test @@ -60,6 +60,26 @@ ] ] }, + { + "description": "&ammmp;", + "input": "&ammmp;", + "output": [ + [ + "Character", + "&ammmp;" + ] + ] + }, + { + "description": "&ammmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmp;", + "input": "&ammmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmp;", + "output": [ + [ + "Character", + "&ammmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmp;" + ] + ] + }, { "description": "FOO& BAR", "input": "FOO& BAR", diff --git a/test/data/parser-feedback/noscript01.test b/test/data/parser-feedback/noscript01.test index 1701e5c13..94f353f8b 100644 --- a/test/data/parser-feedback/noscript01.test +++ b/test/data/parser-feedback/noscript01.test @@ -1,3 +1,436 @@ { - "tests": [] + "tests": [ + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + " " + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "XXX" + ], + [ + "EndTag", + "noscript" + ], + [ + "EndTag", + "noframes" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<head><noscript><style>XXX</style></noscript>", + "input": "<head><noscript><style>XXX</style></noscript>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "<style>XXX</style>" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<head><noscript></br><!--foo--></noscript>", + "input": "<head><noscript></br><!--foo--></noscript>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "</br><!--foo-->" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<head><noscript><head class=\"foo\"><!--foo--></noscript>", + "input": "<head><noscript><head class=\"foo\"><!--foo--></noscript>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "<head class=\"foo\"><!--foo-->" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<head><noscript><noscript class=\"foo\"><!--foo--></noscript>", + "input": "<head><noscript><noscript class=\"foo\"><!--foo--></noscript>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "<noscript class=\"foo\"><!--foo-->" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<head><noscript></p><!--foo--></noscript>", + "input": "<head><noscript></p><!--foo--></noscript>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "</p><!--foo-->" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<head><noscript><p><!--foo--></noscript>", + "input": "<head><noscript><p><!--foo--></noscript>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "<p><!--foo-->" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<head><noscript>XXX<!--foo--></noscript></head>", + "input": "<head><noscript>XXX<!--foo--></noscript></head>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "XXX<!--foo-->" + ], + [ + "EndTag", + "noscript" + ], + [ + "EndTag", + "head" + ] + ] + }, + { + "description": "<head><noscript>", + "input": "<head><noscript>", + "output": [ + [ + "StartTag", + "head", + {} + ], + [ + "StartTag", + "noscript", + {} + ] + ] + } + ] } \ No newline at end of file diff --git a/test/data/parser-feedback/tests16.test b/test/data/parser-feedback/tests16.test index 35fe033c6..52ace1da1 100644 --- a/test/data/parser-feedback/tests16.test +++ b/test/data/parser-feedback/tests16.test @@ -2009,6 +2009,83 @@ ] ] }, + { + "description": "<!doctype html><noscript><!--<noscript></noscript>--></noscript>", + "input": "<!doctype html><noscript><!--<noscript></noscript>--></noscript>", + "output": [ + [ + "DOCTYPE", + "html", + null, + null, + true + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "<!--<noscript>" + ], + [ + "EndTag", + "noscript" + ], + [ + "Character", + "-->" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "<!doctype html><noscript><!--</noscript>X<noscript>--></noscript>", + "input": "<!doctype html><noscript><!--</noscript>X<noscript>--></noscript>", + "output": [ + [ + "DOCTYPE", + "html", + null, + null, + true + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "<!--" + ], + [ + "EndTag", + "noscript" + ], + [ + "Character", + "X" + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "-->" + ], + [ + "EndTag", + "noscript" + ] + ] + }, { "description": "<!doctype html><noscript><!--</noscript>X<noscript>--></noscript>", "input": "<!doctype html><noscript><!--</noscript>X<noscript>--></noscript>", @@ -2082,6 +2159,36 @@ ] ] }, + { + "description": "<!doctype html><noscript><iframe></noscript>X", + "input": "<!doctype html><noscript><iframe></noscript>X", + "output": [ + [ + "DOCTYPE", + "html", + null, + null, + true + ], + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "<iframe>" + ], + [ + "EndTag", + "noscript" + ], + [ + "Character", + "X" + ] + ] + }, { "description": "<!doctype html><noframes><!--<noframes>-->", "input": "<!--<noframes>-->", @@ -3777,6 +3884,69 @@ ] ] }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, + { + "description": "", + "input": "", + "output": [ + [ + "StartTag", + "noscript", + {} + ], + [ + "Character", + "" + ], + [ + "EndTag", + "noscript" + ] + ] + }, { "description": "", "input": "", @@ -3836,6 +4006,29 @@ ] ] }, + { + "description": "