summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/fixture/state/info.toml7
-rw-r--r--tests/integration_tests.rs78
2 files changed, 85 insertions, 0 deletions
diff --git a/tests/fixture/state/info.toml b/tests/fixture/state/info.toml
index 7bfc697..547b3a4 100644
--- a/tests/fixture/state/info.toml
+++ b/tests/fixture/state/info.toml
@@ -9,3 +9,10 @@ name = "pending_test_exercise"
path = "pending_test_exercise.rs"
mode = "test"
hint = """"""
+
+[[exercises]]
+name = "finished_exercise"
+path = "finished_exercise.rs"
+mode = "compile"
+hint = """"""
+
diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs
index 2baf9b8..f5211b6 100644
--- a/tests/integration_tests.rs
+++ b/tests/integration_tests.rs
@@ -181,3 +181,81 @@ fn run_single_test_success_without_output() {
.code(0)
.stdout(predicates::str::contains("THIS TEST TOO SHALL PAS").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_conflicting_display_options() {
+ Command::cargo_bin("rustlings")
+ .unwrap()
+ .args(&["list", "--names", "--paths"])
+ .current_dir("tests/fixture/success")
+ .assert()
+ .failure();
+}
+
+#[test]
+fn run_rustlings_list_conflicting_solve_options() {
+ Command::cargo_bin("rustlings")
+ .unwrap()
+ .args(&["list", "--solved", "--unsolved"])
+ .current_dir("tests/fixture/success")
+ .assert()
+ .failure();
+}
+
+#[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());
+}
+