use std::process::Command;
use std::path::PathBuf;
fn crate_root() -> PathBuf
{
PathBuf::from( env!( "CARGO_MANIFEST_DIR" ) )
}
#[ test ]
fn example_trivial_compiles_and_runs()
{
let example_dir = crate_root().join( "examples" ).join( "mod_interface_trivial" );
let output = Command::new( "cargo" )
.arg( "run" )
.current_dir( &example_dir )
.output()
.expect( "Failed to execute mod_interface_trivial example" );
assert!
(
output.status.success(),
"mod_interface_trivial example failed:\nstdout: {}\nstderr: {}",
String::from_utf8_lossy( &output.stdout ),
String::from_utf8_lossy( &output.stderr )
);
}
#[ test ]
fn example_debug_compiles_and_runs()
{
let example_dir = crate_root().join( "examples" ).join( "mod_interface_debug" );
let output = Command::new( "cargo" )
.arg( "run" )
.current_dir( &example_dir )
.output()
.expect( "Failed to execute mod_interface_debug example" );
assert!
(
output.status.success(),
"mod_interface_debug example failed:\nstdout: {}\nstderr: {}",
String::from_utf8_lossy( &output.stdout ),
String::from_utf8_lossy( &output.stderr )
);
}
#[ test ]
fn example_debug_directive_documented()
{
let example_dir = crate_root().join( "examples" ).join( "mod_interface_debug" );
let main_rs_path = example_dir.join( "src" ).join( "main.rs" );
let content = std::fs::read_to_string( &main_rs_path )
.expect( "Failed to read main.rs" );
assert!
(
content.contains( "#![ debug ]" ),
"Example should contain debug directive (commented or uncommented)"
);
assert!
(
content.contains( "Uncomment" ) || content.contains( "debug output" ) || content.contains( "Debug" ),
"Example should document how to use debug directive"
);
}