mirror of
https://github.com/imjasonh/testscript-rs
synced 2026-07-08 09:05:34 +00:00
Update documentation for advanced condition support
Co-authored-by: imjasonh <210737+imjasonh@users.noreply.github.com>
This commit is contained in:
parent
26a39e2384
commit
a716f83e1d
2 changed files with 58 additions and 0 deletions
41
README.md
41
README.md
|
|
@ -112,6 +112,47 @@ To call the custom command, in your testscript file:
|
|||
custom-cmd arg1 arg2 arg3
|
||||
```
|
||||
|
||||
### With Advanced Conditions
|
||||
|
||||
testscript-rs supports network detection, environment variable conditions, and automatic program detection:
|
||||
|
||||
```rust
|
||||
testscript::run("testdata")
|
||||
.auto_detect_network()
|
||||
.auto_detect_programs(&["docker", "git", "npm"])
|
||||
.condition("env:CI", std::env::var("CI").is_ok())
|
||||
.execute()
|
||||
.unwrap();
|
||||
```
|
||||
|
||||
#### Condition Types
|
||||
|
||||
- **Platform conditions**: `[unix]`, `[windows]`, `[linux]`, `[darwin]`
|
||||
- **Network conditions**: `[net]` - Auto-detected or manually set
|
||||
- **Program conditions**: `[exec:program]` - Check if program exists in PATH
|
||||
- **Environment variables**: `[env:VAR]` - Check if environment variable is set
|
||||
- **Build type**: `[debug]`, `[release]` - Based on compilation mode
|
||||
|
||||
#### Using Conditions in Test Scripts
|
||||
|
||||
```
|
||||
# Platform-specific tests
|
||||
[unix] exec ./unix-specific-tool
|
||||
[windows] exec .\windows-tool.exe
|
||||
|
||||
# Network-dependent tests
|
||||
[net] exec curl https://example.com
|
||||
[!net] skip "Network not available"
|
||||
|
||||
# Environment-based tests
|
||||
[env:CI] exec deploy --dry-run
|
||||
[!env:CI] exec test --verbose
|
||||
|
||||
# Program availability
|
||||
[exec:docker] exec docker run hello-world
|
||||
[!exec:git] skip "Git not available"
|
||||
```
|
||||
|
||||
## Test Script Format
|
||||
|
||||
Test scripts use the [`txtar`](https://pkg.go.dev/github.com/rogpeppe/go-internal/txtar) format. For complete format documentation, see the [original Go testscript documentation](https://pkg.go.dev/github.com/rogpeppe/go-internal/testscript).
|
||||
|
|
|
|||
|
|
@ -89,6 +89,23 @@ fn test_runparams_condition_helpers() {
|
|||
std::env::remove_var("HELPER_TEST");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_manual_condition_files() {
|
||||
// Test our new testdata files to make sure they work properly
|
||||
|
||||
// Test environment conditions file
|
||||
let result = testscript::run("testdata")
|
||||
.condition("net", true) // Force network to true for testing
|
||||
.auto_detect_programs(&["echo", "mkdir", "ls"])
|
||||
.execute();
|
||||
|
||||
// Note: This might fail if some testdata files have issues,
|
||||
// but our specific files should work
|
||||
if let Err(e) = result {
|
||||
println!("Some testdata files failed (expected): {}", e);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_combined_conditions() {
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue