2017-11-16 23:30:08 -08:00
|
|
|
use common::*;
|
|
|
|
|
|
|
|
pub fn parse_success(text: &str) -> Justfile {
|
2017-11-18 03:36:02 -08:00
|
|
|
match Parser::parse(text) {
|
2017-11-16 23:30:08 -08:00
|
|
|
Ok(justfile) => justfile,
|
|
|
|
Err(error) => panic!("Expected successful parse but got error:\n{}", error),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-11-18 01:44:59 -08:00
|
|
|
macro_rules! compilation_error_test {
|
|
|
|
(
|
|
|
|
name: $name:ident,
|
|
|
|
input: $input:expr,
|
|
|
|
index: $index:expr,
|
|
|
|
line: $line:expr,
|
|
|
|
column: $column:expr,
|
|
|
|
width: $width:expr,
|
|
|
|
kind: $kind:expr,
|
|
|
|
) => {
|
|
|
|
#[test]
|
|
|
|
fn $name() {
|
|
|
|
let input = $input;
|
2017-11-17 17:28:06 -08:00
|
|
|
|
2017-11-18 01:44:59 -08:00
|
|
|
let expected = ::CompilationError {
|
2018-12-08 14:29:41 -08:00
|
|
|
text: input,
|
|
|
|
index: $index,
|
|
|
|
line: $line,
|
2017-11-18 01:44:59 -08:00
|
|
|
column: $column,
|
2018-12-08 14:29:41 -08:00
|
|
|
width: $width,
|
|
|
|
kind: $kind,
|
2017-11-18 01:44:59 -08:00
|
|
|
};
|
|
|
|
|
2017-12-01 02:22:32 -08:00
|
|
|
let tokens = ::Lexer::lex(input).unwrap();
|
2017-11-18 01:44:59 -08:00
|
|
|
let parser = ::Parser::new(input, tokens);
|
|
|
|
|
|
|
|
if let Err(error) = parser.justfile() {
|
2018-12-08 14:29:41 -08:00
|
|
|
assert_eq!(error.text, expected.text);
|
|
|
|
assert_eq!(error.index, expected.index);
|
|
|
|
assert_eq!(error.line, expected.line);
|
2017-11-18 01:44:59 -08:00
|
|
|
assert_eq!(error.column, expected.column);
|
2018-12-08 14:29:41 -08:00
|
|
|
assert_eq!(error.width, expected.width);
|
|
|
|
assert_eq!(error.kind, expected.kind);
|
|
|
|
assert_eq!(error, expected);
|
2017-11-18 01:44:59 -08:00
|
|
|
} else {
|
|
|
|
panic!("parse succeeded but expected: {}\n{}", expected, input);
|
|
|
|
}
|
|
|
|
}
|
2018-12-08 14:29:41 -08:00
|
|
|
};
|
2017-11-16 23:30:08 -08:00
|
|
|
}
|