summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/fixture/failure/Cargo.toml20
-rw-r--r--tests/fixture/failure/compNoExercise.rs2
-rw-r--r--tests/fixture/failure/exercises/compFailure.rs (renamed from tests/fixture/failure/compFailure.rs)0
-rw-r--r--tests/fixture/failure/exercises/compNoExercise.rs1
-rw-r--r--tests/fixture/failure/exercises/testFailure.rs (renamed from tests/fixture/failure/testFailure.rs)2
-rw-r--r--tests/fixture/failure/exercises/testNotPassed.rs (renamed from tests/fixture/failure/testNotPassed.rs)2
-rw-r--r--tests/fixture/failure/info.toml7
-rw-r--r--tests/fixture/state/Cargo.toml16
-rw-r--r--tests/fixture/state/exercises/finished_exercise.rs1
-rw-r--r--tests/fixture/state/exercises/pending_exercise.rs1
-rw-r--r--tests/fixture/state/exercises/pending_test_exercise.rs (renamed from tests/fixture/state/pending_test_exercise.rs)2
-rw-r--r--tests/fixture/state/finished_exercise.rs5
-rw-r--r--tests/fixture/state/info.toml11
-rw-r--r--tests/fixture/state/pending_exercise.rs7
-rw-r--r--tests/fixture/success/Cargo.toml12
-rw-r--r--tests/fixture/success/compSuccess.rs2
-rw-r--r--tests/fixture/success/exercises/compSuccess.rs1
-rw-r--r--tests/fixture/success/exercises/testSuccess.rs (renamed from tests/fixture/success/testSuccess.rs)2
-rw-r--r--tests/fixture/success/info.toml7
-rw-r--r--tests/integration_tests.rs141
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"));
}