sync: bring Rust crates in line with nuwiki main (v0.4.2)
CI / cargo fmt --check (push) Successful in 31s
CI / cargo clippy (push) Successful in 34s
CI / cargo test (push) Successful in 49s
Release / bump + tag (push) Successful in 52s
Release / build aarch64-unknown-linux-gnu (push) Successful in 1m45s
Release / build x86_64-unknown-linux-gnu (push) Successful in 2m3s
Release / build aarch64-unknown-linux-musl (push) Successful in 2m6s
Release / build x86_64-unknown-linux-musl (push) Successful in 2m8s
Release / gitea release (push) Successful in 30s
CI / cargo fmt --check (push) Successful in 31s
CI / cargo clippy (push) Successful in 34s
CI / cargo test (push) Successful in 49s
Release / bump + tag (push) Successful in 52s
Release / build aarch64-unknown-linux-gnu (push) Successful in 1m45s
Release / build x86_64-unknown-linux-gnu (push) Successful in 2m3s
Release / build aarch64-unknown-linux-musl (push) Successful in 2m6s
Release / build x86_64-unknown-linux-musl (push) Successful in 2m8s
Release / gitea release (push) Successful in 30s
This commit is contained in:
@@ -77,6 +77,27 @@ fn centered_heading_gets_centered_class() {
|
||||
assert!(out.contains("<h1 class=\"centered\" id=\"T\">T</h1>"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn spaceless_heading_renders_as_heading() {
|
||||
// `==Heading==` (no surrounding spaces) is a heading, like vimwiki — not a
|
||||
// literal `<p>==Heading==</p>`.
|
||||
let out = render("==Plain==\n");
|
||||
assert!(
|
||||
out.contains(
|
||||
"<div id=\"Plain\"><h2 id=\"Plain\" class=\"header\">\
|
||||
<a href=\"#Plain\">Plain</a></h2></div>"
|
||||
),
|
||||
"got: {out}"
|
||||
);
|
||||
// The spaceless + keyword combo from the report: a header, not a badge.
|
||||
let out2 = render("==TODO==\n");
|
||||
assert!(
|
||||
out2.contains("<h2 id=\"TODO\" class=\"header\">"),
|
||||
"got: {out2}"
|
||||
);
|
||||
assert!(!out2.contains("<p>"), "not a paragraph: {out2}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn heading_keyword_renders_as_plain_text_not_badge() {
|
||||
// `== TODO ==` is a section title, not an inline keyword: it must render as
|
||||
|
||||
@@ -85,6 +85,32 @@ fn centered_heading_is_marked_centered() {
|
||||
assert!(matches!(lexed[2], HeadingClose));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn spaceless_heading_is_a_heading() {
|
||||
// vimwiki accepts `==Heading==` with no spaces around the text.
|
||||
let lexed = lex("==Plain==\n");
|
||||
assert_eq!(
|
||||
lexed,
|
||||
vec![
|
||||
HeadingOpen {
|
||||
level: 2,
|
||||
centered: false
|
||||
},
|
||||
text("Plain"),
|
||||
HeadingClose,
|
||||
Newline,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn marker_only_or_unbalanced_lines_are_not_headings() {
|
||||
// No title between markers, and trailing `=` not at line end → plain text.
|
||||
assert!(!matches!(lex("======\n")[0], HeadingOpen { .. }));
|
||||
assert!(!matches!(lex("==> arrow\n")[0], HeadingOpen { .. }));
|
||||
assert!(!matches!(lex("==a==b\n")[0], HeadingOpen { .. }));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn heading_with_inline_bold() {
|
||||
let lexed = lex("== Hello *world* ==\n");
|
||||
|
||||
Reference in New Issue
Block a user