#![allow(clippy::test_attr_in_doctest)]
extern crate sealed_test_derive;
pub mod prelude;
#[cfg(test)]
mod tests {
use crate::prelude::*;
use cmd_lib::run_cmd;
use std::env;
use std::env::VarError;
use std::path::PathBuf;
use std::time::Duration;
#[sealed_test]
fn a_dummy_test_with_git() {
let current_dir = std::env::current_dir().unwrap();
run_cmd! (
info "Initializing test repo in $current_dir";
git init;
git commit -m c1 --allow-empty;
git commit -m c2 --allow-empty;
git shortlog;
)
.unwrap();
}
#[sealed_test]
fn a_dummy_test_with_var() -> Result<(), VarError> {
std::env::set_var("VAR", "bar");
let var = std::env::var("VAR")?;
assert_eq!(var, "bar");
Ok(())
}
#[sealed_test]
fn a_dummy_test_with_another_var() -> Result<(), VarError> {
std::env::set_var("VAR", "foo");
let var = std::env::var("VAR")?;
assert_eq!(var, "foo");
Ok(())
}
#[sealed_test]
fn another_dummy_test_with_git() {
let current_dir = std::env::current_dir().unwrap();
run_cmd! (
info "Initializing test repo in $current_dir";
git init;
git commit -m "a commit" --allow-empty;
git checkout -b branch1;
git shortlog;
)
.unwrap();
}
#[sealed_test]
fn a_dummy_test_with_return_type() -> Result<&'static str, &'static str> {
let current_dir = std::env::current_dir().unwrap();
run_cmd! (
info "Initializing test repo in $current_dir";
git init;
git commit -m "a commit" --allow-empty;
git checkout -b branch1;
git shortlog;
)
.unwrap();
Ok("ok")
}
#[sealed_test]
fn foo() -> Result<(), VarError> {
std::env::set_var("VAR", "foo");
let var = std::env::var("VAR")?;
assert_eq!(var, "foo");
Ok(())
}
#[sealed_test]
fn bar() -> Result<(), VarError> {
std::env::set_var("VAR", "bar");
std::thread::sleep(Duration::from_secs(1));
let var = std::env::var("VAR")?;
assert_eq!(var, "bar");
Ok(())
}
#[sealed_test]
#[should_panic]
fn question_mark_unwrapping_works() -> Result<(), &'static str> {
let err = Err("Oh no");
let _err = err?;
Ok(())
}
#[sealed_test(files = ["tests/foo", "tests/bar"])]
fn should_copy_files() {
assert!(PathBuf::from("foo").exists());
assert!(PathBuf::from("bar").exists());
}
#[sealed_test(files = ["tests/baz"])]
fn should_copy_directory() {
assert!(PathBuf::from("baz/buzz").exists());
}
#[sealed_test(env = [ ("FOO", "foo"), ("BAR", "bar") ])]
fn should_set_env() {
let foo = std::env::var("FOO").expect("Failed to get $FOO");
let bar = std::env::var("BAR").expect("Failed to get $BAR");
assert_eq!(foo, "foo");
assert_eq!(bar, "bar");
}
#[sealed_test(before = setup(), after = teardown())]
fn should_run_setup_function() {
std::env::set_var("BEFORE", "ok");
}
#[sealed_test(
env = [ ("HOME", "la maison")],
files = [ "tests/bar"],
before = setup(),
after = teardown()
)]
fn should_work_all_together() {
let home = env::var("HOME").expect("Failed to get $HOME");
let before = env::var("BEFORE").expect("Failed to get $BEFORE");
assert!(PathBuf::from("bar").exists());
assert_eq!(home, "la maison");
assert_eq!(before, "ok");
}
fn setup() {
std::env::set_var("BEFORE", "ok");
}
fn teardown() {
println!("I run after the test");
}
}