summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/dev_cargo_bins.rs39
-rw-r--r--tests/fixture/failure/info.toml4
-rw-r--r--tests/fixture/state/info.toml7
-rw-r--r--tests/fixture/success/info.toml4
4 files changed, 26 insertions, 28 deletions
diff --git a/tests/dev_cargo_bins.rs b/tests/dev_cargo_bins.rs
index c3faea9..81f48b1 100644
--- a/tests/dev_cargo_bins.rs
+++ b/tests/dev_cargo_bins.rs
@@ -5,34 +5,39 @@ use serde::Deserialize;
use std::fs;
#[derive(Deserialize)]
-struct Exercise {
+struct ExerciseInfo {
name: String,
- path: String,
+ dir: Option<String>,
}
#[derive(Deserialize)]
-struct InfoToml {
- exercises: Vec<Exercise>,
+struct InfoFile {
+ exercises: Vec<ExerciseInfo>,
}
#[test]
fn dev_cargo_bins() {
- let content = fs::read_to_string("dev/Cargo.toml").unwrap();
+ let cargo_toml = fs::read_to_string("dev/Cargo.toml").unwrap();
- let exercises = toml_edit::de::from_str::<InfoToml>(&fs::read_to_string("info.toml").unwrap())
- .unwrap()
- .exercises;
+ let exercise_infos =
+ toml_edit::de::from_str::<InfoFile>(&fs::read_to_string("info.toml").unwrap())
+ .unwrap()
+ .exercises;
let mut start_ind = 0;
- for exercise in exercises {
- let name_start = start_ind + content[start_ind..].find('"').unwrap() + 1;
- let name_end = name_start + content[name_start..].find('"').unwrap();
- assert_eq!(exercise.name, &content[name_start..name_end]);
-
- // +3 to skip `../` at the begeinning of the path.
- let path_start = name_end + content[name_end + 1..].find('"').unwrap() + 5;
- let path_end = path_start + content[path_start..].find('"').unwrap();
- assert_eq!(exercise.path, &content[path_start..path_end]);
+ for exercise_info in exercise_infos {
+ let name_start = start_ind + cargo_toml[start_ind..].find('"').unwrap() + 1;
+ let name_end = name_start + cargo_toml[name_start..].find('"').unwrap();
+ assert_eq!(exercise_info.name, &cargo_toml[name_start..name_end]);
+
+ let path_start = name_end + cargo_toml[name_end + 1..].find('"').unwrap() + 2;
+ let path_end = path_start + cargo_toml[path_start..].find('"').unwrap();
+ let expected_path = if let Some(dir) = exercise_info.dir {
+ format!("../exercises/{dir}/{}.rs", exercise_info.name)
+ } else {
+ format!("../exercises/{}.rs", exercise_info.name)
+ };
+ assert_eq!(expected_path, &cargo_toml[path_start..path_end]);
start_ind = path_end + 1;
}
diff --git a/tests/fixture/failure/info.toml b/tests/fixture/failure/info.toml
index 9474ee3..94ec6ea 100644
--- a/tests/fixture/failure/info.toml
+++ b/tests/fixture/failure/info.toml
@@ -1,11 +1,9 @@
[[exercises]]
name = "compFailure"
-path = "exercises/compFailure.rs"
-mode = "compile"
+mode = "run"
hint = ""
[[exercises]]
name = "testFailure"
-path = "exercises/testFailure.rs"
mode = "test"
hint = "Hello!"
diff --git a/tests/fixture/state/info.toml b/tests/fixture/state/info.toml
index 8de5d60..e5c4d8f 100644
--- a/tests/fixture/state/info.toml
+++ b/tests/fixture/state/info.toml
@@ -1,17 +1,14 @@
[[exercises]]
name = "pending_exercise"
-path = "exercises/pending_exercise.rs"
-mode = "compile"
+mode = "run"
hint = """"""
[[exercises]]
name = "pending_test_exercise"
-path = "exercises/pending_test_exercise.rs"
mode = "test"
hint = """"""
[[exercises]]
name = "finished_exercise"
-path = "exercises/finished_exercise.rs"
-mode = "compile"
+mode = "run"
hint = """"""
diff --git a/tests/fixture/success/info.toml b/tests/fixture/success/info.toml
index 17ed8c6..674ba26 100644
--- a/tests/fixture/success/info.toml
+++ b/tests/fixture/success/info.toml
@@ -1,11 +1,9 @@
[[exercises]]
name = "compSuccess"
-path = "exercises/compSuccess.rs"
-mode = "compile"
+mode = "run"
hint = """"""
[[exercises]]
name = "testSuccess"
-path = "exercises/testSuccess.rs"
mode = "test"
hint = """"""