about summary refs log tree commit diff
path: root/src/librustdoc
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume.gomez@huawei.com>2023-04-25 15:04:46 +0200
committerGuillaume Gomez <guillaume.gomez@huawei.com>2023-09-15 21:32:28 +0200
commitf5561842e3dfc9adc8da4ba12b95514da4d99f00 (patch)
treec4fdfbd2d3ceeec51431bef931829c380c97946c /src/librustdoc
parent5515fc88dc45c274f0574d381a17d4f72dfd5047 (diff)
downloadrust-f5561842e3dfc9adc8da4ba12b95514da4d99f00.tar.gz
rust-f5561842e3dfc9adc8da4ba12b95514da4d99f00.zip
Add tests for `custom_code_classes_in_docs` feature
Diffstat (limited to 'src/librustdoc')
-rw-r--r--src/librustdoc/html/markdown/tests.rs131
1 files changed, 104 insertions, 27 deletions
diff --git a/src/librustdoc/html/markdown/tests.rs b/src/librustdoc/html/markdown/tests.rs
index 2c9c95590ac..dd3d0ebac0c 100644
--- a/src/librustdoc/html/markdown/tests.rs
+++ b/src/librustdoc/html/markdown/tests.rs
@@ -1,5 +1,8 @@
 use super::{find_testable_code, plain_text_summary, short_markdown_summary};
-use super::{ErrorCodes, HeadingOffset, IdMap, Ignore, LangString, Markdown, MarkdownItemInfo};
+use super::{
+    ErrorCodes, HeadingOffset, IdMap, Ignore, LangString, Markdown, MarkdownItemInfo, TagIterator,
+    TokenKind,
+};
 use rustc_span::edition::{Edition, DEFAULT_EDITION};
 
 #[test]
@@ -51,10 +54,25 @@ fn test_lang_string_parse() {
 
     t(Default::default());
     t(LangString { original: "rust".into(), ..Default::default() });
-    t(LangString { original: ".rust".into(), ..Default::default() });
-    t(LangString { original: "{rust}".into(), ..Default::default() });
-    t(LangString { original: "{.rust}".into(), ..Default::default() });
-    t(LangString { original: "sh".into(), rust: false, ..Default::default() });
+    t(LangString {
+        original: ".rust".into(),
+        rust: false,
+        unknown: vec![".rust".into()],
+        ..Default::default()
+    });
+    t(LangString { original: "{rust}".into(), rust: false, ..Default::default() });
+    t(LangString {
+        original: "{.rust}".into(),
+        rust: false,
+        added_classes: vec!["rust".into()],
+        ..Default::default()
+    });
+    t(LangString {
+        original: "sh".into(),
+        rust: false,
+        unknown: vec!["sh".into()],
+        ..Default::default()
+    });
     t(LangString { original: "ignore".into(), ignore: Ignore::All, ..Default::default() });
     t(LangString {
         original: "ignore-foo".into(),
@@ -70,41 +88,56 @@ fn test_lang_string_parse() {
         compile_fail: true,
         ..Default::default()
     });
-    t(LangString { original: "no_run,example".into(), no_run: true, ..Default::default() });
+    t(LangString {
+        original: "no_run,example".into(),
+        no_run: true,
+        unknown: vec!["example".into()],
+        ..Default::default()
+    });
     t(LangString {
         original: "sh,should_panic".into(),
         should_panic: true,
         rust: false,
+        unknown: vec!["sh".into()],
+        ..Default::default()
+    });
+    t(LangString {
+        original: "example,rust".into(),
+        unknown: vec!["example".into()],
         ..Default::default()
     });
-    t(LangString { original: "example,rust".into(), ..Default::default() });
     t(LangString {
         original: "test_harness,.rust".into(),
         test_harness: true,
+        unknown: vec![".rust".into()],
         ..Default::default()
     });
     t(LangString {
         original: "text, no_run".into(),
         no_run: true,
         rust: false,
+        unknown: vec!["text".into()],
         ..Default::default()
     });
     t(LangString {
         original: "text,no_run".into(),
         no_run: true,
         rust: false,
+        unknown: vec!["text".into()],
         ..Default::default()
     });
     t(LangString {
         original: "text,no_run, ".into(),
         no_run: true,
         rust: false,
+        unknown: vec!["text".into()],
         ..Default::default()
     });
     t(LangString {
         original: "text,no_run,".into(),
         no_run: true,
         rust: false,
+        unknown: vec!["text".into()],
         ..Default::default()
     });
     t(LangString {
@@ -118,52 +151,96 @@ fn test_lang_string_parse() {
         ..Default::default()
     });
     t(LangString {
-        original: "class:test".into(),
+        original: "{class=test}".into(),
         added_classes: vec!["test".into()],
         rust: false,
         ..Default::default()
     });
     t(LangString {
-        original: "rust,class:test".into(),
+        original: "{.test}".into(),
         added_classes: vec!["test".into()],
+        rust: false,
+        ..Default::default()
+    });
+    t(LangString {
+        original: "rust,{class=test,.test2}".into(),
+        added_classes: vec!["test".into(), "test2".into()],
         rust: true,
         ..Default::default()
     });
     t(LangString {
-        original: "class:test:with:colon".into(),
-        added_classes: vec!["test:with:colon".into()],
+        original: "{class=test:with:colon .test1}".into(),
+        added_classes: vec!["test:with:colon".into(), "test1".into()],
         rust: false,
         ..Default::default()
     });
     t(LangString {
-        original: "class:first,class:second".into(),
+        original: "{class=first,class=second}".into(),
         added_classes: vec!["first".into(), "second".into()],
         rust: false,
         ..Default::default()
     });
+    t(LangString {
+        original: "{class=first,.second},unknown".into(),
+        added_classes: vec!["first".into(), "second".into()],
+        rust: false,
+        unknown: vec!["unknown".into()],
+        ..Default::default()
+    });
+    t(LangString {
+        original: "{class=first .second} unknown".into(),
+        added_classes: vec!["first".into(), "second".into()],
+        rust: false,
+        unknown: vec!["unknown".into()],
+        ..Default::default()
+    });
+    t(LangString {
+        original: "{.first.second}".into(),
+        added_classes: vec!["first.second".into()],
+        rust: false,
+        ..Default::default()
+    });
+    t(LangString {
+        original: "{class=first=second}".into(),
+        added_classes: vec!["first=second".into()],
+        rust: false,
+        ..Default::default()
+    });
+    t(LangString {
+        original: "{class=first.second}".into(),
+        added_classes: vec!["first.second".into()],
+        rust: false,
+        ..Default::default()
+    });
+    t(LangString {
+        original: "{class=.first}".into(),
+        added_classes: vec![".first".into()],
+        rust: false,
+        ..Default::default()
+    });
 }
 
 #[test]
 fn test_lang_string_tokenizer() {
-    fn case(lang_string: &str, want: &[&str]) {
-        let have = LangString::tokens(lang_string).collect::<Vec<&str>>();
+    fn case(lang_string: &str, want: &[TokenKind<'_>]) {
+        let have = TagIterator::new(lang_string, None).collect::<Vec<_>>();
         assert_eq!(have, want, "Unexpected lang string split for `{}`", lang_string);
     }
 
     case("", &[]);
-    case("foo", &["foo"]);
-    case("foo,bar", &["foo", "bar"]);
-    case(".foo,.bar", &["foo", "bar"]);
-    case("{.foo,.bar}", &["foo", "bar"]);
-    case("  {.foo,.bar}  ", &["foo", "bar"]);
-    case("foo bar", &["foo", "bar"]);
-    case("foo\tbar", &["foo", "bar"]);
-    case("foo\t, bar", &["foo", "bar"]);
-    case(" foo , bar ", &["foo", "bar"]);
-    case(",,foo,,bar,,", &["foo", "bar"]);
-    case("foo=bar", &["foo=bar"]);
-    case("a-b-c", &["a-b-c"]);
-    case("a_b_c", &["a_b_c"]);
+    case("foo", &[TokenKind::Token("foo")]);
+    case("foo,bar", &[TokenKind::Token("foo"), TokenKind::Token("bar")]);
+    case(".foo,.bar", &[TokenKind::Token(".foo"), TokenKind::Token(".bar")]);
+    case("{.foo,.bar}", &[TokenKind::Attribute(".foo"), TokenKind::Attribute(".bar")]);
+    case("  {.foo,.bar}  ", &[TokenKind::Attribute(".foo"), TokenKind::Attribute(".bar")]);
+    case("foo bar", &[TokenKind::Token("foo"), TokenKind::Token("bar")]);
+    case("foo\tbar", &[TokenKind::Token("foo"), TokenKind::Token("bar")]);
+    case("foo\t, bar", &[TokenKind::Token("foo"), TokenKind::Token("bar")]);
+    case(" foo , bar ", &[TokenKind::Token("foo"), TokenKind::Token("bar")]);
+    case(",,foo,,bar,,", &[TokenKind::Token("foo"), TokenKind::Token("bar")]);
+    case("foo=bar", &[TokenKind::Token("foo=bar")]);
+    case("a-b-c", &[TokenKind::Token("a-b-c")]);
+    case("a_b_c", &[TokenKind::Token("a_b_c")]);
 }
 
 #[test]