diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..94f480d --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file diff --git a/src/test.rs b/src/test.rs index 0b4d356..3b29e45 100644 --- a/src/test.rs +++ b/src/test.rs @@ -8,14 +8,17 @@ use std::path::Path; fn evaluate_example(fname: &Path) -> String { let mut compiler = Compiler::new(); - let contents = std::fs::read(fname).expect("We only run tests found by glob"); + let contents = std::fs::read_to_string(fname).expect("We only run tests found by glob"); + // normalize newlines + let replaced = contents.replace("\r\n", "\n"); + let contents = replaced.as_bytes(); let span_offset = compiler.span_offset(); - compiler.add_file(&fname.to_string_lossy(), &contents); + compiler.add_file(&fname.to_string_lossy(), contents); - let (tokens, err) = lex(&contents, span_offset); + let (tokens, err) = lex(contents, span_offset); if let Err(e) = err { - tokens.eprint(&contents); + tokens.eprint(contents); eprintln!("Lexing error. Error: {:?}", e); std::process::exit(1); } @@ -53,14 +56,13 @@ fn evaluate_example(fname: &Path) -> String { } fn evaluate_lexer(fname: &Path) -> String { - let contents = std::fs::read(fname); + let contents = std::fs::read_to_string(fname).expect("We only run tests found by glob"); + // normalize newlines + let replaced = contents.replace("\r\n", "\n"); + let contents = replaced.as_bytes(); - let Ok(contents) = contents else { - panic!("Lexer: can't find file {}", fname.to_string_lossy()); - }; - - let (tokens, err) = lex(&contents, 0); - let mut res = tokens.display(&contents); + let (tokens, err) = lex(contents, 0); + let mut res = tokens.display(contents); if let Err(e) = err { res.push_str(&format!("Lexing error. Error: {:?}", e));