diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-11-14 17:24:44 -0500 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-11-15 08:45:49 -0500 |
| commit | c31a8754e3f3a9274759cb429aad4ae594d39e29 (patch) | |
| tree | 4c50d1f64384325c9f7d7635602149dddb86d7aa /src/libsyntax/json/tests.rs | |
| parent | 3f93ffc3334b77cc9025f68dfcea92098987abf3 (diff) | |
Move JSON emitter to rustc_errors
Diffstat (limited to 'src/libsyntax/json/tests.rs')
| -rw-r--r-- | src/libsyntax/json/tests.rs | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/src/libsyntax/json/tests.rs b/src/libsyntax/json/tests.rs deleted file mode 100644 index 1edefd5bc4b..00000000000 --- a/src/libsyntax/json/tests.rs +++ /dev/null @@ -1,199 +0,0 @@ -use super::*; - -use crate::json::JsonEmitter; -use crate::source_map::{FilePathMapping, SourceMap}; -use crate::with_default_globals; - -use errors::emitter::{ColorConfig, HumanReadableErrorType}; -use errors::Handler; -use rustc_serialize::json::decode; -use syntax_pos::{BytePos, Span}; - -use std::str; - -#[derive(RustcDecodable, Debug, PartialEq, Eq)] -struct TestData { - spans: Vec<SpanTestData>, -} - -#[derive(RustcDecodable, Debug, PartialEq, Eq)] -struct SpanTestData { - pub byte_start: u32, - pub byte_end: u32, - pub line_start: u32, - pub column_start: u32, - pub line_end: u32, - pub column_end: u32, -} - -struct Shared<T> { - data: Arc<Mutex<T>>, -} - -impl<T: Write> Write for Shared<T> { - fn write(&mut self, buf: &[u8]) -> io::Result<usize> { - self.data.lock().unwrap().write(buf) - } - - fn flush(&mut self) -> io::Result<()> { - self.data.lock().unwrap().flush() - } -} - -/// Test the span yields correct positions in JSON. -fn test_positions(code: &str, span: (u32, u32), expected_output: SpanTestData) { - let expected_output = TestData { spans: vec![expected_output] }; - - with_default_globals(|| { - let sm = Lrc::new(SourceMap::new(FilePathMapping::empty())); - sm.new_source_file(Path::new("test.rs").to_owned().into(), code.to_owned()); - - let output = Arc::new(Mutex::new(Vec::new())); - let je = JsonEmitter::new( - Box::new(Shared { data: output.clone() }), - None, - sm, - true, - HumanReadableErrorType::Short(ColorConfig::Never), - false, - ); - - let span = Span::with_root_ctxt(BytePos(span.0), BytePos(span.1)); - let handler = Handler::with_emitter(true, None, Box::new(je)); - handler.span_err(span, "foo"); - - let bytes = output.lock().unwrap(); - let actual_output = str::from_utf8(&bytes).unwrap(); - let actual_output: TestData = decode(actual_output).unwrap(); - - assert_eq!(expected_output, actual_output) - }) -} - -#[test] -fn empty() { - test_positions( - " ", - (0, 1), - SpanTestData { - byte_start: 0, - byte_end: 1, - line_start: 1, - column_start: 1, - line_end: 1, - column_end: 2, - }, - ) -} - -#[test] -fn bom() { - test_positions( - "\u{feff} ", - (0, 1), - SpanTestData { - byte_start: 3, - byte_end: 4, - line_start: 1, - column_start: 1, - line_end: 1, - column_end: 2, - }, - ) -} - -#[test] -fn lf_newlines() { - test_positions( - "\nmod foo;\nmod bar;\n", - (5, 12), - SpanTestData { - byte_start: 5, - byte_end: 12, - line_start: 2, - column_start: 5, - line_end: 3, - column_end: 3, - }, - ) -} - -#[test] -fn crlf_newlines() { - test_positions( - "\r\nmod foo;\r\nmod bar;\r\n", - (5, 12), - SpanTestData { - byte_start: 6, - byte_end: 14, - line_start: 2, - column_start: 5, - line_end: 3, - column_end: 3, - }, - ) -} - -#[test] -fn crlf_newlines_with_bom() { - test_positions( - "\u{feff}\r\nmod foo;\r\nmod bar;\r\n", - (5, 12), - SpanTestData { - byte_start: 9, - byte_end: 17, - line_start: 2, - column_start: 5, - line_end: 3, - column_end: 3, - }, - ) -} - -#[test] -fn span_before_crlf() { - test_positions( - "foo\r\nbar", - (2, 3), - SpanTestData { - byte_start: 2, - byte_end: 3, - line_start: 1, - column_start: 3, - line_end: 1, - column_end: 4, - }, - ) -} - -#[test] -fn span_on_crlf() { - test_positions( - "foo\r\nbar", - (3, 4), - SpanTestData { - byte_start: 3, - byte_end: 5, - line_start: 1, - column_start: 4, - line_end: 2, - column_end: 1, - }, - ) -} - -#[test] -fn span_after_crlf() { - test_positions( - "foo\r\nbar", - (4, 5), - SpanTestData { - byte_start: 5, - byte_end: 6, - line_start: 2, - column_start: 1, - line_end: 2, - column_end: 2, - }, - ) -} |
