summaryrefslogtreecommitdiff
path: root/tests/integration_tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration_tests.rs')
-rw-r--r--tests/integration_tests.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs
new file mode 100644
index 0000000..bd5d92e
--- /dev/null
+++ b/tests/integration_tests.rs
@@ -0,0 +1,61 @@
+use std::process::Command;
+use assert_cmd::prelude::*;
+
+#[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()
+ .current_dir("tests/")
+ .assert()
+ .failure();
+}
+
+#[test]
+fn verify_all_success() {
+ Command::cargo_bin("rustlings").unwrap()
+ .arg("v")
+ .current_dir("tests/fixture/")
+ .assert()
+ .success();
+}
+
+#[test]
+fn run_single_compile_success() {
+ Command::cargo_bin("rustlings").unwrap()
+ .args(&["r", "compSuccess.rs"])
+ .current_dir("tests/fixture/")
+ .assert()
+ .success();
+}
+
+#[test]
+fn run_single_test_success() {
+ Command::cargo_bin("rustlings").unwrap()
+ .args(&["r", "testSuccess.rs"])
+ .current_dir("tests/fixture/")
+ .assert()
+ .success();
+}
+
+#[test]
+fn run_single_test_no_filename() {
+ Command::cargo_bin("rustlings").unwrap()
+ .arg("r")
+ .current_dir("tests/fixture/")
+ .assert()
+ .failure();
+}
+
+#[test]
+fn run_single_test_no_exercise() {
+ Command::cargo_bin("rustlings").unwrap()
+ .args(&["r", "compNoExercise.rs"])
+ .current_dir("tests/fixture/")
+ .assert()
+ .failure();
+}