diff options
Diffstat (limited to 'tests')
20 files changed, 72 insertions, 170 deletions
diff --git a/tests/fixture/failure/Cargo.toml b/tests/fixture/failure/Cargo.toml new file mode 100644 index 0000000..7ee2f06 --- /dev/null +++ b/tests/fixture/failure/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "failure" +edition = "2021" +publish = false + +[[bin]] +name = "compFailure" +path = "exercises/compFailure.rs" + +[[bin]] +name = "compNoExercise" +path = "exercises/compNoExercise.rs" + +[[bin]] +name = "testFailure" +path = "exercises/testFailure.rs" + +[[bin]] +name = "testNotPassed" +path = "exercises/testNotPassed.rs" diff --git a/tests/fixture/failure/compNoExercise.rs b/tests/fixture/failure/compNoExercise.rs deleted file mode 100644 index f79c691..0000000 --- a/tests/fixture/failure/compNoExercise.rs +++ /dev/null @@ -1,2 +0,0 @@ -fn main() { -} diff --git a/tests/fixture/failure/compFailure.rs b/tests/fixture/failure/exercises/compFailure.rs index 566856a..566856a 100644 --- a/tests/fixture/failure/compFailure.rs +++ b/tests/fixture/failure/exercises/compFailure.rs diff --git a/tests/fixture/failure/exercises/compNoExercise.rs b/tests/fixture/failure/exercises/compNoExercise.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/tests/fixture/failure/exercises/compNoExercise.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/tests/fixture/failure/testFailure.rs b/tests/fixture/failure/exercises/testFailure.rs index b33a5d2..fcbcf90 100644 --- a/tests/fixture/failure/testFailure.rs +++ b/tests/fixture/failure/exercises/testFailure.rs @@ -1,3 +1,5 @@ +fn main() {} + #[test] fn passing() { asset!(true); diff --git a/tests/fixture/failure/testNotPassed.rs b/tests/fixture/failure/exercises/testNotPassed.rs index a9fe88d..de0d61c 100644 --- a/tests/fixture/failure/testNotPassed.rs +++ b/tests/fixture/failure/exercises/testNotPassed.rs @@ -1,3 +1,5 @@ +fn main() {} + #[test] fn not_passing() { assert!(false); diff --git a/tests/fixture/failure/info.toml b/tests/fixture/failure/info.toml index e5949f9..554607a 100644 --- a/tests/fixture/failure/info.toml +++ b/tests/fixture/failure/info.toml @@ -1,11 +1,10 @@ +format_version = 1 + [[exercises]] name = "compFailure" -path = "compFailure.rs" -mode = "compile" +test = false hint = "" [[exercises]] name = "testFailure" -path = "testFailure.rs" -mode = "test" hint = "Hello!" diff --git a/tests/fixture/state/Cargo.toml b/tests/fixture/state/Cargo.toml new file mode 100644 index 0000000..adbd8ab --- /dev/null +++ b/tests/fixture/state/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "state" +edition = "2021" +publish = false + +[[bin]] +name = "pending_exercise" +path = "exercises/pending_exercise.rs" + +[[bin]] +name = "pending_test_exercise" +path = "exercises/pending_test_exercise.rs" + +[[bin]] +name = "finished_exercise" +path = "exercises/finished_exercise.rs" diff --git a/tests/fixture/state/exercises/finished_exercise.rs b/tests/fixture/state/exercises/finished_exercise.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/tests/fixture/state/exercises/finished_exercise.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/tests/fixture/state/exercises/pending_exercise.rs b/tests/fixture/state/exercises/pending_exercise.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/tests/fixture/state/exercises/pending_exercise.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/tests/fixture/state/pending_test_exercise.rs b/tests/fixture/state/exercises/pending_test_exercise.rs index 8756f02..718e1db 100644 --- a/tests/fixture/state/pending_test_exercise.rs +++ b/tests/fixture/state/exercises/pending_test_exercise.rs @@ -1,4 +1,4 @@ -// I AM NOT DONE +fn main() {} #[test] fn it_works() {} diff --git a/tests/fixture/state/finished_exercise.rs b/tests/fixture/state/finished_exercise.rs deleted file mode 100644 index 016b827..0000000 --- a/tests/fixture/state/finished_exercise.rs +++ /dev/null @@ -1,5 +0,0 @@ -// fake_exercise - -fn main() { - -} diff --git a/tests/fixture/state/info.toml b/tests/fixture/state/info.toml index 547b3a4..ff0b932 100644 --- a/tests/fixture/state/info.toml +++ b/tests/fixture/state/info.toml @@ -1,18 +1,15 @@ +format_version = 1 + [[exercises]] name = "pending_exercise" -path = "pending_exercise.rs" -mode = "compile" +test = false hint = """""" [[exercises]] name = "pending_test_exercise" -path = "pending_test_exercise.rs" -mode = "test" hint = """""" [[exercises]] name = "finished_exercise" -path = "finished_exercise.rs" -mode = "compile" +test = false hint = """""" - diff --git a/tests/fixture/state/pending_exercise.rs b/tests/fixture/state/pending_exercise.rs deleted file mode 100644 index f579d0b..0000000 --- a/tests/fixture/state/pending_exercise.rs +++ /dev/null @@ -1,7 +0,0 @@ -// fake_exercise - -// I AM NOT DONE - -fn main() { - -} diff --git a/tests/fixture/success/Cargo.toml b/tests/fixture/success/Cargo.toml new file mode 100644 index 0000000..028cf35 --- /dev/null +++ b/tests/fixture/success/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "success" +edition = "2021" +publish = false + +[[bin]] +name = "compSuccess" +path = "exercises/compSuccess.rs" + +[[bin]] +name = "testSuccess" +path = "exercises/testSuccess.rs" diff --git a/tests/fixture/success/compSuccess.rs b/tests/fixture/success/compSuccess.rs deleted file mode 100644 index f79c691..0000000 --- a/tests/fixture/success/compSuccess.rs +++ /dev/null @@ -1,2 +0,0 @@ -fn main() { -} diff --git a/tests/fixture/success/exercises/compSuccess.rs b/tests/fixture/success/exercises/compSuccess.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/tests/fixture/success/exercises/compSuccess.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/tests/fixture/success/testSuccess.rs b/tests/fixture/success/exercises/testSuccess.rs index 7139b50..4296cf6 100644 --- a/tests/fixture/success/testSuccess.rs +++ b/tests/fixture/success/exercises/testSuccess.rs @@ -1,3 +1,5 @@ +fn main() {} + #[test] fn passing() { println!("THIS TEST TOO SHALL PASS"); diff --git a/tests/fixture/success/info.toml b/tests/fixture/success/info.toml index 68d3538..d66d7d4 100644 --- a/tests/fixture/success/info.toml +++ b/tests/fixture/success/info.toml @@ -1,11 +1,10 @@ +format_version = 1 + [[exercises]] name = "compSuccess" -path = "compSuccess.rs" -mode = "compile" +test = false hint = """""" [[exercises]] name = "testSuccess" -path = "testSuccess.rs" -mode = "test" hint = """""" diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index d1694a3..7d30467 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -1,17 +1,7 @@ use assert_cmd::prelude::*; -use glob::glob; -use predicates::boolean::PredicateBooleanExt; -use std::fs::File; -use std::io::Read; use std::process::Command; #[test] -fn runs_without_arguments() { - let mut cmd = Command::cargo_bin("rustlings").unwrap(); - cmd.assert().success(); -} - -#[test] fn fails_when_in_wrong_dir() { Command::cargo_bin("rustlings") .unwrap() @@ -21,26 +11,6 @@ fn fails_when_in_wrong_dir() { } #[test] -fn verify_all_success() { - Command::cargo_bin("rustlings") - .unwrap() - .arg("verify") - .current_dir("tests/fixture/success") - .assert() - .success(); -} - -#[test] -fn verify_fails_if_some_fails() { - Command::cargo_bin("rustlings") - .unwrap() - .arg("verify") - .current_dir("tests/fixture/failure") - .assert() - .code(1); -} - -#[test] fn run_single_compile_success() { Command::cargo_bin("rustlings") .unwrap() @@ -91,19 +61,6 @@ fn run_single_test_not_passed() { } #[test] -fn run_single_test_no_filename() { - Command::cargo_bin("rustlings") - .unwrap() - .arg("run") - .current_dir("tests/fixture/") - .assert() - .code(2) - .stderr(predicates::str::contains( - "required arguments were not provided", - )); -} - -#[test] fn run_single_test_no_exercise() { Command::cargo_bin("rustlings") .unwrap() @@ -146,39 +103,13 @@ fn get_hint_for_single_test() { } #[test] -fn all_exercises_require_confirmation() { - for exercise in glob("exercises/**/*.rs").unwrap() { - let path = exercise.unwrap(); - if path.file_name().unwrap() == "mod.rs" { - continue; - } - let source = { - let mut file = File::open(&path).unwrap(); - let mut s = String::new(); - file.read_to_string(&mut s).unwrap(); - s - }; - source - .matches("// I AM NOT DONE") - .next() - .unwrap_or_else(|| { - panic!( - "There should be an `I AM NOT DONE` annotation in {:?}", - path - ) - }); - } -} - -#[test] fn run_compile_exercise_does_not_prompt() { Command::cargo_bin("rustlings") .unwrap() .args(["run", "pending_exercise"]) .current_dir("tests/fixture/state") .assert() - .code(0) - .stdout(predicates::str::contains("I AM NOT DONE").not()); + .code(0); } #[test] @@ -188,82 +119,16 @@ fn run_test_exercise_does_not_prompt() { .args(["run", "pending_test_exercise"]) .current_dir("tests/fixture/state") .assert() - .code(0) - .stdout(predicates::str::contains("I AM NOT DONE").not()); + .code(0); } #[test] fn run_single_test_success_with_output() { Command::cargo_bin("rustlings") .unwrap() - .args(["--nocapture", "run", "testSuccess"]) - .current_dir("tests/fixture/success/") - .assert() - .code(0) - .stdout(predicates::str::contains("THIS TEST TOO SHALL PASS")); -} - -#[test] -fn run_single_test_success_without_output() { - Command::cargo_bin("rustlings") - .unwrap() .args(["run", "testSuccess"]) .current_dir("tests/fixture/success/") .assert() .code(0) - .stdout(predicates::str::contains("THIS TEST TOO SHALL PASS").not()); -} - -#[test] -fn run_rustlings_list() { - Command::cargo_bin("rustlings") - .unwrap() - .args(["list"]) - .current_dir("tests/fixture/success") - .assert() - .success(); -} - -#[test] -fn run_rustlings_list_no_pending() { - Command::cargo_bin("rustlings") - .unwrap() - .args(["list"]) - .current_dir("tests/fixture/success") - .assert() - .success() - .stdout(predicates::str::contains("Pending").not()); -} - -#[test] -fn run_rustlings_list_both_done_and_pending() { - Command::cargo_bin("rustlings") - .unwrap() - .args(["list"]) - .current_dir("tests/fixture/state") - .assert() - .success() - .stdout(predicates::str::contains("Done").and(predicates::str::contains("Pending"))); -} - -#[test] -fn run_rustlings_list_without_pending() { - Command::cargo_bin("rustlings") - .unwrap() - .args(["list", "--solved"]) - .current_dir("tests/fixture/state") - .assert() - .success() - .stdout(predicates::str::contains("Pending").not()); -} - -#[test] -fn run_rustlings_list_without_done() { - Command::cargo_bin("rustlings") - .unwrap() - .args(["list", "--unsolved"]) - .current_dir("tests/fixture/state") - .assert() - .success() - .stdout(predicates::str::contains("Done").not()); + .stdout(predicates::str::contains("THIS TEST TOO SHALL PASS")); } |
