diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-11-15 20:51:25 +0100 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-11-15 20:57:20 +0100 |
| commit | 0c52044528580fb5b02eb0dca7bbbe3e584d6b13 (patch) | |
| tree | 9e5745c1cc04aa78981ce299bd8102cf877f2b34 | |
| parent | 1861a38ca9040c36741fb51f9b22f65228722b13 (diff) | |
| download | rust-0c52044528580fb5b02eb0dca7bbbe3e584d6b13.tar.gz rust-0c52044528580fb5b02eb0dca7bbbe3e584d6b13.zip | |
Add test to ensure that no DOS backline (\r\n) doesn't create extra backline in source rendering
| -rw-r--r-- | src/librustdoc/html/highlight.rs | 6 | ||||
| -rw-r--r-- | src/librustdoc/html/highlight/fixtures/dos_line.html | 3 | ||||
| -rw-r--r-- | src/librustdoc/html/highlight/tests.rs | 32 |
3 files changed, 27 insertions, 14 deletions
diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs index 98633733654..b5fe593dc01 100644 --- a/src/librustdoc/html/highlight.rs +++ b/src/librustdoc/html/highlight.rs @@ -21,8 +21,6 @@ pub fn render_with_highlighting( playground_button: Option<&str>, tooltip: Option<(&str, &str)>, ) -> String { - // This replace allows to fix how the code source with DOS backline characters is displayed. - let src = src.replace("\r\n", "\n"); debug!("highlighting: ================\n{}\n==============", src); let mut out = String::with_capacity(src.len()); if let Some((tooltip, class)) = tooltip { @@ -48,7 +46,9 @@ fn write_header(out: &mut String, class: Option<&str>) { } fn write_code(out: &mut String, src: &str) { - Classifier::new(src).highlight(&mut |highlight| { + // This replace allows to fix how the code source with DOS backline characters is displayed. + let src = src.replace("\r\n", "\n"); + Classifier::new(&src).highlight(&mut |highlight| { match highlight { Highlight::Token { text, class } => string(out, Escape(text), class), Highlight::EnterSpan { class } => enter_span(out, class), diff --git a/src/librustdoc/html/highlight/fixtures/dos_line.html b/src/librustdoc/html/highlight/fixtures/dos_line.html new file mode 100644 index 00000000000..4400f85681d --- /dev/null +++ b/src/librustdoc/html/highlight/fixtures/dos_line.html @@ -0,0 +1,3 @@ +<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">foo</span>() { +<span class="macro">println</span><span class="macro">!</span>(<span class="string">"foo"</span>); +} diff --git a/src/librustdoc/html/highlight/tests.rs b/src/librustdoc/html/highlight/tests.rs index c79471b1fae..f57f52d6f08 100644 --- a/src/librustdoc/html/highlight/tests.rs +++ b/src/librustdoc/html/highlight/tests.rs @@ -1,17 +1,6 @@ use super::write_code; use expect_test::expect_file; -#[test] -fn test_html_highlighting() { - let src = include_str!("fixtures/sample.rs"); - let html = { - let mut out = String::new(); - write_code(&mut out, src); - format!("{}<pre><code>{}</code></pre>\n", STYLE, out) - }; - expect_file!["fixtures/sample.html"].assert_eq(&html); -} - const STYLE: &str = r#" <style> .kw { color: #8959A8; } @@ -23,3 +12,24 @@ const STYLE: &str = r#" .question-mark { color: #ff9011; } </style> "#; + +#[test] +fn test_html_highlighting() { + let src = include_str!("fixtures/sample.rs"); + let html = { + let mut out = String::new(); + write_code(&mut out, src); + format!("{}<pre><code>{}</code></pre>\n", STYLE, out) + }; + expect_file!["fixtures/sample.html"].assert_eq(&html); +} + +#[test] +fn test_dos_backline() { + let src = "pub fn foo() {\r\n\ + println!(\"foo\");\r\n\ +}\r\n"; + let mut html = String::new(); + write_code(&mut html, src); + expect_file!["fixtures/dos_line.html"].assert_eq(&html); +} |
