Skip to content

Commit fbe0779

Browse files
author
bors-servo
authored
Auto merge of #397 - servo:rcdom, r=SimonSapin
Move all rcdom-related tests to markup5ever_rcdom
2 parents 040a4dd + 7e87faf commit fbe0779

29 files changed

+324
-418
lines changed

.gitmodules

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[submodule "html5lib-tests"]
2-
path = html5ever/html5lib-tests
2+
path = rcdom/html5lib-tests
33
url = https://github.com/html5lib/html5lib-tests
44
[submodule "xml5lib-tests"]
5-
path = xml5ever/xml5lib-tests
5+
path = rcdom/xml5lib-tests
66
url = https://github.com/Ygg01/xml5lib-tests

html5ever/Cargo.toml

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,14 @@ build = "build.rs"
1111
categories = [ "parser-implementations", "web-programming" ]
1212
edition = "2018"
1313

14-
[lib]
15-
name = "html5ever"
16-
17-
doctest = true
18-
19-
[[test]]
20-
name = "tree_builder"
21-
harness = false
22-
23-
[[test]]
24-
name = "tokenizer"
25-
harness = false
26-
27-
[[test]]
28-
name = "serializer"
29-
3014
[dependencies]
3115
log = "0.4"
3216
mac = "0.1"
3317
markup5ever = { version = "0.10", path = "../markup5ever" }
3418

3519
[dev-dependencies]
36-
serde_json = "1.0"
37-
rustc-test = "0.3"
3820
typed-arena = "1.3.0"
3921
criterion = "0.3"
40-
markup5ever_rcdom = { version = "0.1", path = "../rcdom" }
4122

4223
[build-dependencies]
4324
quote = "1"

html5ever/benches/html5ever.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use criterion::{black_box, Criterion};
99

1010
use html5ever::tendril::*;
1111
use html5ever::tokenizer::{
12-
BufferQueue, Token, TokenSink, TokenSinkResult, Tokenizer, TokenizerOpts,
12+
BufferQueue, Token, TokenSink, TokenSinkResult, Tokenizer,
1313
};
1414

1515
struct Sink;

html5ever/src/driver.rs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -134,26 +134,3 @@ impl<Sink: TreeSink> Parser<Sink> {
134134
Utf8LossyDecoder::new(self)
135135
}
136136
}
137-
138-
#[cfg(test)]
139-
mod tests {
140-
extern crate markup5ever_rcdom;
141-
use super::*;
142-
use self::markup5ever_rcdom::{RcDom, SerializableHandle};
143-
use crate::serialize::serialize;
144-
use tendril::TendrilSink;
145-
146-
#[test]
147-
fn from_utf8() {
148-
let dom = parse_document(RcDom::default(), ParseOpts::default())
149-
.from_utf8()
150-
.one("<title>Test".as_bytes());
151-
let mut serialized = Vec::new();
152-
let document: SerializableHandle = dom.document.clone().into();
153-
serialize(&mut serialized, &document, Default::default()).unwrap();
154-
assert_eq!(
155-
String::from_utf8(serialized).unwrap().replace(" ", ""),
156-
"<html><head><title>Test</title></head><body></body></html>"
157-
);
158-
}
159-
}

html5ever/src/tree_builder/mod.rs

Lines changed: 0 additions & 168 deletions
Original file line numberDiff line numberDiff line change
@@ -1679,171 +1679,3 @@ where
16791679
}
16801680
}
16811681
}
1682-
1683-
#[cfg(test)]
1684-
#[allow(non_snake_case)]
1685-
mod test {
1686-
extern crate markup5ever_rcdom as rcdom;
1687-
use markup5ever::interface::{AppendNode, AppendText, NodeOrText};
1688-
use markup5ever::interface::{ElementFlags, Tracer, TreeSink};
1689-
use markup5ever::interface::{LimitedQuirks, NoQuirks, Quirks, QuirksMode};
1690-
1691-
use super::types::*;
1692-
1693-
use crate::tendril::stream::{TendrilSink, Utf8LossyDecoder};
1694-
use crate::tendril::StrTendril;
1695-
use crate::ExpandedName;
1696-
use crate::QualName;
1697-
1698-
use crate::tokenizer;
1699-
use crate::tokenizer::states as tok_state;
1700-
use crate::tokenizer::{Doctype, StartTag, Tag, TokenSink};
1701-
use crate::tokenizer::{Tokenizer, TokenizerOpts};
1702-
use crate::driver::*;
1703-
1704-
use crate::util::str::is_ascii_whitespace;
1705-
1706-
use std::borrow::Cow;
1707-
use std::borrow::Cow::Borrowed;
1708-
use std::collections::VecDeque;
1709-
use std::default::Default;
1710-
use std::mem::replace;
1711-
1712-
use super::{TreeBuilder, TreeBuilderOpts};
1713-
use markup5ever::{Attribute, local_name, namespace_url, ns};
1714-
use self::rcdom::{Handle, Node, NodeData, RcDom};
1715-
1716-
pub struct LineCountingDOM {
1717-
pub line_vec: Vec<(QualName, u64)>,
1718-
pub current_line: u64,
1719-
pub rcdom: RcDom,
1720-
}
1721-
1722-
impl TreeSink for LineCountingDOM {
1723-
type Output = Self;
1724-
1725-
fn finish(self) -> Self {
1726-
self
1727-
}
1728-
1729-
type Handle = Handle;
1730-
1731-
fn parse_error(&mut self, msg: Cow<'static, str>) {
1732-
self.rcdom.parse_error(msg);
1733-
}
1734-
1735-
fn get_document(&mut self) -> Handle {
1736-
self.rcdom.get_document()
1737-
}
1738-
1739-
fn get_template_contents(&mut self, target: &Handle) -> Handle {
1740-
self.rcdom.get_template_contents(target)
1741-
}
1742-
1743-
fn set_quirks_mode(&mut self, mode: QuirksMode) {
1744-
self.rcdom.set_quirks_mode(mode)
1745-
}
1746-
1747-
fn same_node(&self, x: &Handle, y: &Handle) -> bool {
1748-
self.rcdom.same_node(x, y)
1749-
}
1750-
1751-
fn elem_name<'a>(&'a self, target: &'a Handle) -> ExpandedName<'a> {
1752-
self.rcdom.elem_name(target)
1753-
}
1754-
1755-
fn create_element(
1756-
&mut self,
1757-
name: QualName,
1758-
attrs: Vec<Attribute>,
1759-
flags: ElementFlags,
1760-
) -> Handle {
1761-
self.line_vec.push((name.clone(), self.current_line));
1762-
self.rcdom.create_element(name, attrs, flags)
1763-
}
1764-
1765-
fn create_comment(&mut self, text: StrTendril) -> Handle {
1766-
self.rcdom.create_comment(text)
1767-
}
1768-
1769-
fn create_pi(&mut self, target: StrTendril, content: StrTendril) -> Handle {
1770-
self.rcdom.create_pi(target, content)
1771-
}
1772-
1773-
fn append(&mut self, parent: &Handle, child: NodeOrText<Handle>) {
1774-
self.rcdom.append(parent, child)
1775-
}
1776-
1777-
fn append_before_sibling(&mut self, sibling: &Handle, child: NodeOrText<Handle>) {
1778-
self.rcdom.append_before_sibling(sibling, child)
1779-
}
1780-
1781-
fn append_based_on_parent_node(
1782-
&mut self,
1783-
element: &Handle,
1784-
prev_element: &Handle,
1785-
child: NodeOrText<Handle>,
1786-
) {
1787-
self.rcdom
1788-
.append_based_on_parent_node(element, prev_element, child)
1789-
}
1790-
1791-
fn append_doctype_to_document(
1792-
&mut self,
1793-
name: StrTendril,
1794-
public_id: StrTendril,
1795-
system_id: StrTendril,
1796-
) {
1797-
self.rcdom
1798-
.append_doctype_to_document(name, public_id, system_id);
1799-
}
1800-
1801-
fn add_attrs_if_missing(&mut self, target: &Handle, attrs: Vec<Attribute>) {
1802-
self.rcdom.add_attrs_if_missing(target, attrs);
1803-
}
1804-
1805-
fn remove_from_parent(&mut self, target: &Handle) {
1806-
self.rcdom.remove_from_parent(target);
1807-
}
1808-
1809-
fn reparent_children(&mut self, node: &Handle, new_parent: &Handle) {
1810-
self.rcdom.reparent_children(node, new_parent);
1811-
}
1812-
1813-
fn mark_script_already_started(&mut self, target: &Handle) {
1814-
self.rcdom.mark_script_already_started(target);
1815-
}
1816-
1817-
fn set_current_line(&mut self, line_number: u64) {
1818-
self.current_line = line_number;
1819-
}
1820-
}
1821-
1822-
#[test]
1823-
fn check_four_lines() {
1824-
// Input
1825-
let sink = LineCountingDOM {
1826-
line_vec: vec![],
1827-
current_line: 1,
1828-
rcdom: RcDom::default(),
1829-
};
1830-
let opts = ParseOpts::default();
1831-
let mut resultTok = parse_document(sink, opts);
1832-
resultTok.process(StrTendril::from("<a>\n"));
1833-
resultTok.process(StrTendril::from("</a>\n"));
1834-
resultTok.process(StrTendril::from("<b>\n"));
1835-
resultTok.process(StrTendril::from("</b>"));
1836-
// Actual Output
1837-
let actual = resultTok.finish();
1838-
// Expected Output
1839-
let expected = vec![
1840-
(QualName::new(None, ns!(html), local_name!("html")), 1),
1841-
(QualName::new(None, ns!(html), local_name!("head")), 1),
1842-
(QualName::new(None, ns!(html), local_name!("body")), 1),
1843-
(QualName::new(None, ns!(html), local_name!("a")), 1),
1844-
(QualName::new(None, ns!(html), local_name!("b")), 3),
1845-
];
1846-
// Assertion
1847-
assert_eq!(actual.line_vec, expected);
1848-
}
1849-
}

markup5ever/Cargo.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,3 @@ phf_codegen = "0.8"
2525
serde = "1.0"
2626
serde_derive = "1.0"
2727
serde_json = "1.0"
28-
29-
[dev-dependencies]
30-
markup5ever_rcdom = { version = "0.1", path = "../rcdom" }

markup5ever/interface/tree_builder.rs

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -80,32 +80,6 @@ pub struct ElementFlags {
8080
/// # Examples
8181
///
8282
/// Create an element like `<div class="test-class-name"></div>`:
83-
///
84-
/// ```
85-
/// # #[macro_use] extern crate markup5ever;
86-
/// # extern crate markup5ever_rcdom as rcdom;
87-
///
88-
/// # fn main() {
89-
/// use markup5ever::{QualName, Attribute};
90-
/// use markup5ever::interface::create_element;
91-
///
92-
/// let mut dom = rcdom::RcDom::default();
93-
/// let el = create_element(&mut dom,
94-
/// // Namespaces and localnames use precomputed interned strings for
95-
/// // speed. Use the macros ns! and local_name! to fetch them.
96-
/// QualName::new(None, ns!(), local_name!("div")),
97-
/// vec![
98-
/// Attribute {
99-
/// name: QualName::new(None, ns!(), local_name!("class")),
100-
/// // In real scenarios, you would use a view onto an existing
101-
/// // string if possible to avoid allocation. Tendrils have utilities
102-
/// // for avoiding allocation & copying wherever possible.
103-
/// value: String::from("test-class-name").into()
104-
/// }
105-
/// ]);
106-
/// # }
107-
///
108-
/// ```
10983
pub fn create_element<Sink>(sink: &mut Sink, name: QualName, attrs: Vec<Attribute>) -> Sink::Handle
11084
where
11185
Sink: TreeSink,

rcdom/Cargo.toml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,34 @@ description = "Basic, unsupported DOM structure for use by tests in html5ever/xm
88
readme = "README.md"
99
documentation = "https://docs.rs/markup5ever_rcdom"
1010
categories = [ "parser-implementations", "web-programming" ]
11+
edition = "2018"
12+
publish = false
1113

1214
[lib]
1315
path = "lib.rs"
1416

1517
[dependencies]
1618
tendril = "0.4"
17-
markup5ever = { version = "0.10", path = "../markup5ever" }
19+
html5ever = { version = "0.25", path = "../html5ever" }
20+
markup5ever = { version = "0.10", path = "../markup5ever" }
21+
xml5ever = { version = "0.16", path = "../xml5ever" }
22+
23+
[dev-dependencies]
24+
serde_json = "1.0"
25+
rustc-test = "0.3"
26+
27+
[[test]]
28+
name = "html-tokenizer"
29+
harness = false
30+
31+
[[test]]
32+
name = "html-tree-builder"
33+
harness = false
34+
35+
[[test]]
36+
name = "xml-tree-builder"
37+
harness = false
38+
39+
[[test]]
40+
name = "xml-tokenizer"
41+
harness = false
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

rcdom/tests/html-driver.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use html5ever::driver;
2+
use html5ever::serialize;
3+
use html5ever::tendril::TendrilSink;
4+
use markup5ever_rcdom::{RcDom, SerializableHandle};
5+
6+
#[test]
7+
fn from_utf8() {
8+
let dom = driver::parse_document(RcDom::default(), Default::default())
9+
.from_utf8()
10+
.one("<title>Test".as_bytes());
11+
let mut serialized = Vec::new();
12+
let document: SerializableHandle = dom.document.clone().into();
13+
serialize::serialize(&mut serialized, &document, Default::default()).unwrap();
14+
assert_eq!(
15+
String::from_utf8(serialized).unwrap().replace(" ", ""),
16+
"<html><head><title>Test</title></head><body></body></html>"
17+
);
18+
}

html5ever/tests/serializer.rs renamed to rcdom/tests/html-serializer.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,13 @@
77
// option. This file may not be copied, modified, or distributed
88
// except according to those terms.
99

10-
#[macro_use]
11-
extern crate html5ever;
12-
extern crate markup5ever_rcdom as rcdom;
13-
14-
use std::default::Default;
15-
1610
use html5ever::driver::ParseOpts;
1711
use html5ever::serialize::{Serialize, SerializeOpts, Serializer, TraversalScope};
1812
use html5ever::tendril::{SliceExt, StrTendril, TendrilSink};
1913
use html5ever::tokenizer::{TagKind, Token, TokenSink, TokenSinkResult, Tokenizer};
2014
use html5ever::{parse_document, parse_fragment, serialize, QualName};
21-
use rcdom::{RcDom, SerializableHandle};
15+
use markup5ever::{local_name, namespace_url, ns};
16+
use markup5ever_rcdom::{RcDom, SerializableHandle};
2217

2318
use std::io;
2419

@@ -258,7 +253,6 @@ fn deep_tree() {
258253
);
259254
let src = String::from("<b>".repeat(60_000));
260255
let dom = parser.one(src);
261-
let document = &dom.document;
262256
let opts = SerializeOpts::default();
263257
let mut ret_val = Vec::new();
264258
let document: SerializableHandle = dom.document.clone().into();

0 commit comments

Comments
 (0)