[fine] Ignore tests sometimes
This commit is contained in:
parent
6d2fd446ee
commit
f2b9eae339
3 changed files with 12 additions and 1 deletions
|
|
@ -10,6 +10,7 @@ fn generate_test_for_file(path: PathBuf) -> String {
|
||||||
let display_path = path.display().to_string();
|
let display_path = path.display().to_string();
|
||||||
|
|
||||||
// Start iterating over lines and processing directives....
|
// Start iterating over lines and processing directives....
|
||||||
|
let mut disabled = quote! {};
|
||||||
let mut assertions = Vec::new();
|
let mut assertions = Vec::new();
|
||||||
let mut lines = contents.lines();
|
let mut lines = contents.lines();
|
||||||
while let Some(line) = lines.next() {
|
while let Some(line) = lines.next() {
|
||||||
|
|
@ -19,7 +20,9 @@ fn generate_test_for_file(path: PathBuf) -> String {
|
||||||
};
|
};
|
||||||
|
|
||||||
let line = line.trim();
|
let line = line.trim();
|
||||||
if line == "@concrete:" {
|
if line == "@disabled" {
|
||||||
|
disabled = quote! { #[ignore] };
|
||||||
|
} else if line == "@concrete:" {
|
||||||
let mut concrete = String::new();
|
let mut concrete = String::new();
|
||||||
while let Some(line) = lines.next() {
|
while let Some(line) = lines.next() {
|
||||||
let line = match line.strip_prefix("// | ") {
|
let line = match line.strip_prefix("// | ") {
|
||||||
|
|
@ -65,6 +68,7 @@ fn generate_test_for_file(path: PathBuf) -> String {
|
||||||
|
|
||||||
let name = format_ident!("{}", path.file_stem().unwrap().to_string_lossy());
|
let name = format_ident!("{}", path.file_stem().unwrap().to_string_lossy());
|
||||||
let test_method = quote! {
|
let test_method = quote! {
|
||||||
|
#disabled
|
||||||
fn #name() {
|
fn #name() {
|
||||||
let (_tree, _lines) = fine::parser::parse(#contents);
|
let (_tree, _lines) = fine::parser::parse(#contents);
|
||||||
#(#assertions)*
|
#(#assertions)*
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ e.g., a test might look like this:
|
||||||
|
|
||||||
The various assertions are as follows:
|
The various assertions are as follows:
|
||||||
|
|
||||||
|
- The `// @disabled` directive marks the test as ignored.
|
||||||
|
|
||||||
- The `// @concrete:` assertion says that the following lines
|
- The `// @concrete:` assertion says that the following lines
|
||||||
(prefixed with `// | `, as above) describe the concrete syntax tree
|
(prefixed with `// | `, as above) describe the concrete syntax tree
|
||||||
of the file after parsing.
|
of the file after parsing.
|
||||||
|
|
|
||||||
5
fine/tests/expression/empty_statement.fine
Normal file
5
fine/tests/expression/empty_statement.fine
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
// @disabled
|
||||||
|
// @concrete:
|
||||||
|
// |
|
||||||
|
|
||||||
|
;
|
||||||
Loading…
Add table
Add a link
Reference in a new issue