wip -- convert remaining tests to use check
This commit is contained in:
103
TEST_CONVERSION_GUIDE.md
Normal file
103
TEST_CONVERSION_GUIDE.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# Test Conversion Guide: `compile! { debug }` to `compile! { check }`
|
||||
|
||||
## Overview
|
||||
|
||||
The `compile! { check ... }` macro variant returns a `CompilationCheckResult` with both compilation errors and the compiled output. This allows tests to assert that no compilation errors occurred while also checking the output.
|
||||
|
||||
## Pattern
|
||||
|
||||
### Before (using `debug`):
|
||||
|
||||
```rust
|
||||
#[test]
|
||||
fn my_test() -> anyhow::Result<()> {
|
||||
let compiled = compile! {
|
||||
debug "
|
||||
let x = 42;
|
||||
"
|
||||
};
|
||||
|
||||
assert_eq!(
|
||||
compiled,
|
||||
indoc! {
|
||||
"
|
||||
j main
|
||||
main:
|
||||
move r8 42
|
||||
"
|
||||
}
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
|
||||
### After (using `check`):
|
||||
|
||||
```rust
|
||||
#[test]
|
||||
fn my_test() -> anyhow::Result<()> {
|
||||
let result = compile! {
|
||||
check "
|
||||
let x = 42;
|
||||
"
|
||||
};
|
||||
|
||||
assert!(result.errors.is_empty(), "Expected no errors, got: {:?}", result.errors);
|
||||
|
||||
assert_eq!(
|
||||
result.output,
|
||||
indoc! {
|
||||
"
|
||||
j main
|
||||
main:
|
||||
move r8 42
|
||||
"
|
||||
}
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
|
||||
## Key Changes
|
||||
|
||||
1. **Variable name**: Change `let compiled =` to `let result =`
|
||||
2. **Macro variant**: Change `debug` to `check`
|
||||
3. **Add error assertion**: Insert `assert!(result.errors.is_empty(), ...);` after the compile block
|
||||
4. **Update assertion target**: Change `compiled` to `result.output` in the assert_eq!
|
||||
|
||||
## Multi-line format
|
||||
|
||||
When using multi-line source code in the macro:
|
||||
|
||||
```rust
|
||||
let result = compile! {
|
||||
check
|
||||
"
|
||||
let x = 10;
|
||||
let y = 20;
|
||||
"
|
||||
};
|
||||
|
||||
assert!(result.errors.is_empty(), "Expected no errors, got: {:?}", result.errors);
|
||||
|
||||
assert_eq!(
|
||||
result.output,
|
||||
indoc! {
|
||||
"
|
||||
j main
|
||||
main:
|
||||
move r8 10
|
||||
move r9 20
|
||||
"
|
||||
}
|
||||
);
|
||||
```
|
||||
|
||||
## Status
|
||||
|
||||
- ✅ `declaration_literal.rs` - Fully converted (7 tests)
|
||||
- ⏳ Other files - Pending conversion
|
||||
|
||||
To convert a file, replace all occurrences following the pattern above.
|
||||
Reference in New Issue
Block a user