summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/fixture/state/finished_exercise.rs0
-rw-r--r--tests/fixture/state/pending_exercise.rs7
-rw-r--r--tests/integration_tests.rs19
3 files changed, 26 insertions, 0 deletions
diff --git a/tests/fixture/state/finished_exercise.rs b/tests/fixture/state/finished_exercise.rs
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/fixture/state/finished_exercise.rs
diff --git a/tests/fixture/state/pending_exercise.rs b/tests/fixture/state/pending_exercise.rs
new file mode 100644
index 0000000..f579d0b
--- /dev/null
+++ b/tests/fixture/state/pending_exercise.rs
@@ -0,0 +1,7 @@
+// fake_exercise
+
+// I AM NOT DONE
+
+fn main() {
+
+}
diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs
index 24268ec..32f4341 100644
--- a/tests/integration_tests.rs
+++ b/tests/integration_tests.rs
@@ -1,4 +1,7 @@
use assert_cmd::prelude::*;
+use glob::glob;
+use std::fs::File;
+use std::io::Read;
use std::process::Command;
#[test]
@@ -115,4 +118,20 @@ fn get_hint_for_single_test() {
.assert()
.code(0)
.stdout("Hello!\n");
+
+#[test]
+fn all_exercises_require_confirmation() {
+ for exercise in glob("exercises/**/*.rs").unwrap() {
+ let path = exercise.unwrap();
+ 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().expect(&format!(
+ "There should be an `I AM NOT DONE` annotation in {:?}",
+ path
+ ));
+ }
}