Test lexer error messages.
This commit is contained in:
parent
8fa21ffed4
commit
8dd936ab90
@ -1,6 +1,6 @@
|
|||||||
(library
|
(library
|
||||||
(name cli_expect_tests)
|
(name cli_expect_tests)
|
||||||
(libraries simple-utils cli)
|
(libraries simple-utils cli)
|
||||||
(inline_tests (deps (source_tree ../../test/contracts)))
|
(inline_tests (deps (source_tree ../../test/contracts) (source_tree ../../test/lexer)))
|
||||||
(preprocess (pps ppx_let ppx_expect))
|
(preprocess (pps ppx_let ppx_expect))
|
||||||
(flags (:standard -open Simple_utils)))
|
(flags (:standard -open Simple_utils)))
|
||||||
|
153
src/bin/expect_tests/lexer_tests.ml
Normal file
153
src/bin/expect_tests/lexer_tests.ml
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
open Cli_expect
|
||||||
|
|
||||||
|
let%expect_test _ =
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/broken_string.ligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: The string starting here is interrupted by a line break.
|
||||||
|
Hint: Remove the break, close the string before or insert a backslash.
|
||||||
|
{"parser_loc":"in file \"broken_string.ligo\", line 1, characters 18-19"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/broken_string.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: The string starting here is interrupted by a line break.
|
||||||
|
Hint: Remove the break, close the string before or insert a backslash.
|
||||||
|
{"parser_loc":"in file \"broken_string.mligo\", line 1, characters 8-9"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/broken_string.religo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: The string starting here is interrupted by a line break.
|
||||||
|
Hint: Remove the break, close the string before or insert a backslash.
|
||||||
|
{"parser_loc":"in file \"broken_string.religo\", line 1, characters 8-9"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/negative_byte_sequence.ligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Negative byte sequence.
|
||||||
|
Hint: Remove the leading minus sign.
|
||||||
|
{"parser_loc":"in file \"negative_byte_sequence.ligo\", line 1, characters 18-23"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/negative_byte_sequence.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Negative byte sequence.
|
||||||
|
Hint: Remove the leading minus sign.
|
||||||
|
{"parser_loc":"in file \"negative_byte_sequence.mligo\", line 1, characters 8-13"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/negative_byte_sequence.religo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Negative byte sequence.
|
||||||
|
Hint: Remove the leading minus sign.
|
||||||
|
{"parser_loc":"in file \"negative_byte_sequence.religo\", line 1, characters 8-13"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/reserved_name.ligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Reserved name: args.
|
||||||
|
Hint: Change the name.
|
||||||
|
{"parser_loc":"in file \"reserved_name.ligo\", line 1, characters 4-8"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/reserved_name.religo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Reserved name: end.
|
||||||
|
Hint: Change the name.
|
||||||
|
{"parser_loc":"in file \"reserved_name.religo\", line 1, characters 4-7"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/reserved_name.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Reserved name: object.
|
||||||
|
Hint: Change the name.
|
||||||
|
{"parser_loc":"in file \"reserved_name.mligo\", line 1, characters 4-10"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/unexpected_character.ligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Unexpected character '\239'.
|
||||||
|
{"parser_loc":"in file \"unexpected_character.ligo\", line 1, characters 18-19"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/unexpected_character.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Unexpected character '\239'.
|
||||||
|
{"parser_loc":"in file \"unexpected_character.mligo\", line 1, characters 8-9"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/unexpected_character.religo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Unexpected character '\239'.
|
||||||
|
{"parser_loc":"in file \"unexpected_character.religo\", line 1, characters 8-9"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/unterminated_comment.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Unterminated comment.
|
||||||
|
Hint: Close with "*)".
|
||||||
|
{"parser_loc":"in file \"unterminated_comment.mligo\", line 1, characters 0-2"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/invalid_symbol.ligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Invalid symbol.
|
||||||
|
Hint: Check the LIGO syntax you use.
|
||||||
|
{"parser_loc":"in file \"invalid_symbol.ligo\", line 1, characters 17-20"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/invalid_symbol.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Invalid symbol.
|
||||||
|
Hint: Check the LIGO syntax you use.
|
||||||
|
{"parser_loc":"in file \"invalid_symbol.mligo\", line 1, characters 10-13"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/invalid_symbol.religo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Invalid symbol.
|
||||||
|
Hint: Check the LIGO syntax you use.
|
||||||
|
{"parser_loc":"in file \"invalid_symbol.religo\", line 1, characters 10-11"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/missing_break.ligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Missing break.
|
||||||
|
Hint: Insert some space.
|
||||||
|
{"parser_loc":"in file \"missing_break.ligo\", line 1, characters 18-18"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/missing_break.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Missing break.
|
||||||
|
Hint: Insert some space.
|
||||||
|
{"parser_loc":"in file \"missing_break.mligo\", line 1, characters 11-11"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/missing_break.religo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Missing break.
|
||||||
|
Hint: Insert some space.
|
||||||
|
{"parser_loc":"in file \"missing_break.religo\", line 1, characters 11-11"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/invalid_character_in_string.ligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Invalid character in string.
|
||||||
|
Hint: Remove or replace the character.
|
||||||
|
{"parser_loc":"in file \"invalid_character_in_string.ligo\", line 1, characters 19-20"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/invalid_character_in_string.mligo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Invalid character in string.
|
||||||
|
Hint: Remove or replace the character.
|
||||||
|
{"parser_loc":"in file \"invalid_character_in_string.mligo\", line 1, characters 9-10"}
|
||||||
|
|} ];
|
||||||
|
|
||||||
|
run_ligo_bad [ "compile-contract" ; "../../test/lexer/invalid_character_in_string.religo" ; "main" ] ;
|
||||||
|
[%expect {|
|
||||||
|
ligo: lexer error: Invalid character in string.
|
||||||
|
Hint: Remove or replace the character.
|
||||||
|
{"parser_loc":"in file \"invalid_character_in_string.religo\", line 1, characters 9-10"}
|
||||||
|
|} ]
|
4
src/test/lexer/broken_string.ligo
Normal file
4
src/test/lexer/broken_string.ligo
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
const a: string = "broken
|
||||||
|
over
|
||||||
|
multiple
|
||||||
|
lines";
|
4
src/test/lexer/broken_string.mligo
Normal file
4
src/test/lexer/broken_string.mligo
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
let a = "broken
|
||||||
|
over
|
||||||
|
multiple
|
||||||
|
lines";
|
4
src/test/lexer/broken_string.religo
Normal file
4
src/test/lexer/broken_string.religo
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
let a = "broken
|
||||||
|
over
|
||||||
|
multiple
|
||||||
|
lines";
|
1
src/test/lexer/invalid_character_in_string.ligo
Normal file
1
src/test/lexer/invalid_character_in_string.ligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
const z: string = " ";
|
1
src/test/lexer/invalid_character_in_string.mligo
Normal file
1
src/test/lexer/invalid_character_in_string.mligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let z = " ";
|
1
src/test/lexer/invalid_character_in_string.religo
Normal file
1
src/test/lexer/invalid_character_in_string.religo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let z = " ";
|
1
src/test/lexer/invalid_symbol.ligo
Normal file
1
src/test/lexer/invalid_symbol.ligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
const b: int = 1 ... 10;
|
1
src/test/lexer/invalid_symbol.mligo
Normal file
1
src/test/lexer/invalid_symbol.mligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let b = 1 ... 10;
|
1
src/test/lexer/invalid_symbol.religo
Normal file
1
src/test/lexer/invalid_symbol.religo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let b = 1 # 10;
|
1
src/test/lexer/missing_break.ligo
Normal file
1
src/test/lexer/missing_break.ligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
const a: int = 300zennies;
|
1
src/test/lexer/missing_break.mligo
Normal file
1
src/test/lexer/missing_break.mligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let a = 300zennies;
|
1
src/test/lexer/missing_break.religo
Normal file
1
src/test/lexer/missing_break.religo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let a = 300zennies;
|
1
src/test/lexer/negative_byte_sequence.ligo
Normal file
1
src/test/lexer/negative_byte_sequence.ligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
const a: string = -0x222;
|
1
src/test/lexer/negative_byte_sequence.mligo
Normal file
1
src/test/lexer/negative_byte_sequence.mligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let a = -0x222;
|
1
src/test/lexer/negative_byte_sequence.religo
Normal file
1
src/test/lexer/negative_byte_sequence.religo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let a = -0x222;
|
1
src/test/lexer/reserved_name.ligo
Normal file
1
src/test/lexer/reserved_name.ligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let args = 1;
|
1
src/test/lexer/reserved_name.mligo
Normal file
1
src/test/lexer/reserved_name.mligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let object = 1;
|
1
src/test/lexer/reserved_name.religo
Normal file
1
src/test/lexer/reserved_name.religo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let end = 1;
|
1
src/test/lexer/unexpected_character.ligo
Normal file
1
src/test/lexer/unexpected_character.ligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
const x: string = <20><><EFBFBD>;
|
1
src/test/lexer/unexpected_character.mligo
Normal file
1
src/test/lexer/unexpected_character.mligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let x = <20><><EFBFBD>;
|
1
src/test/lexer/unexpected_character.religo
Normal file
1
src/test/lexer/unexpected_character.religo
Normal file
@ -0,0 +1 @@
|
|||||||
|
let x = <20><><EFBFBD>;
|
1
src/test/lexer/unterminated_comment.mligo
Normal file
1
src/test/lexer/unterminated_comment.mligo
Normal file
@ -0,0 +1 @@
|
|||||||
|
(* not closed
|
Loading…
Reference in New Issue
Block a user