diff --git a/src/formatting/newline_style.rs b/src/formatting/newline_style.rs index f5eb2e43d88a..1813ccad35a3 100644 --- a/src/formatting/newline_style.rs +++ b/src/formatting/newline_style.rs @@ -67,7 +67,6 @@ fn convert_to_windows_newlines(formatted_text: &String) -> String { const WINDOWS_NEWLINE: &str = "\r\n"; match c { LINE_FEED => transformed.push_str(WINDOWS_NEWLINE), - CARRIAGE_RETURN => continue, c => transformed.push(c), } } @@ -155,4 +154,26 @@ mod tests { ); } } + + #[test] + fn preserves_standalone_carriage_returns_when_applying_windows_newlines() { + let formatted_text = "One\nTwo\nThree\rDrei"; + let raw_input_text = "One\nTwo\nThree\rDrei"; + + let mut out = String::from(formatted_text); + apply_newline_style(NewlineStyle::Windows, &mut out, raw_input_text); + + assert_eq!("One\r\nTwo\r\nThree\rDrei", &out); + } + + #[test] + fn preserves_standalone_carriage_returns_when_applying_unix_newlines() { + let formatted_text = "One\nTwo\nThree\rDrei"; + let raw_input_text = "One\nTwo\nThree\rDrei"; + + let mut out = String::from(formatted_text); + apply_newline_style(NewlineStyle::Unix, &mut out, raw_input_text); + + assert_eq!("One\nTwo\nThree\rDrei", &out); + } } diff --git a/tests/source/preserves_carriage_return_for_unix.rs b/tests/source/preserves_carriage_return_for_unix.rs new file mode 100644 index 000000000000..e5e0b2865989 --- /dev/null +++ b/tests/source/preserves_carriage_return_for_unix.rs @@ -0,0 +1,2 @@ +// rustfmt-newline_style: Unix +// Foo Bar diff --git a/tests/source/preserves_carriage_return_for_windows.rs b/tests/source/preserves_carriage_return_for_windows.rs new file mode 100644 index 000000000000..1085360ee59e --- /dev/null +++ b/tests/source/preserves_carriage_return_for_windows.rs @@ -0,0 +1,2 @@ +// rustfmt-newline_style: Windows +// Foo Bar diff --git a/tests/target/preserves_carriage_return_for_unix.rs b/tests/target/preserves_carriage_return_for_unix.rs new file mode 100644 index 000000000000..e5e0b2865989 --- /dev/null +++ b/tests/target/preserves_carriage_return_for_unix.rs @@ -0,0 +1,2 @@ +// rustfmt-newline_style: Unix +// Foo Bar diff --git a/tests/target/preserves_carriage_return_for_windows.rs b/tests/target/preserves_carriage_return_for_windows.rs new file mode 100644 index 000000000000..1085360ee59e --- /dev/null +++ b/tests/target/preserves_carriage_return_for_windows.rs @@ -0,0 +1,2 @@ +// rustfmt-newline_style: Windows +// Foo Bar