summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/fixture/compNoExercise.rs2
-rw-r--r--tests/fixture/compSuccess.rs2
-rw-r--r--tests/fixture/info.toml7
-rw-r--r--tests/fixture/testSuccess.rs4
-rw-r--r--tests/integration_tests.rs61
5 files changed, 76 insertions, 0 deletions
diff --git a/tests/fixture/compNoExercise.rs b/tests/fixture/compNoExercise.rs
new file mode 100644
index 0000000..f79c691
--- /dev/null
+++ b/tests/fixture/compNoExercise.rs
@@ -0,0 +1,2 @@
+fn main() {
+}
diff --git a/tests/fixture/compSuccess.rs b/tests/fixture/compSuccess.rs
new file mode 100644
index 0000000..f79c691
--- /dev/null
+++ b/tests/fixture/compSuccess.rs
@@ -0,0 +1,2 @@
+fn main() {
+}
diff --git a/tests/fixture/info.toml b/tests/fixture/info.toml
new file mode 100644
index 0000000..e255db9
--- /dev/null
+++ b/tests/fixture/info.toml
@@ -0,0 +1,7 @@
+[[exercises]]
+path = "compSuccess.rs"
+mode = "compile"
+
+[[exercises]]
+path = "testSuccess.rs"
+mode = "test" \ No newline at end of file
diff --git a/tests/fixture/testSuccess.rs b/tests/fixture/testSuccess.rs
new file mode 100644
index 0000000..589057c
--- /dev/null
+++ b/tests/fixture/testSuccess.rs
@@ -0,0 +1,4 @@
+#[test]
+fn passing() {
+ assert!(true);
+}
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();
+}