about summary refs log tree commit diff
path: root/users/glittershark/achilles/tests/compile.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-03-15T20·44+0200
committerVincent Ambo <mail@tazj.in>2021-03-15T20·48+0200
commitb6895a5b309eca4f12062f394331fff1b9e3dff8 (patch)
tree3d916dad08acf1bad3022e63dbd082633a3550ff /users/glittershark/achilles/tests/compile.rs
parent4d193f239525954631ba9d789ca3aea9a2f4e14d (diff)
parentb93268085aab14c80a400c299da5d04d2781098e (diff)
merge(glittershark/achilles): Subtree import at 'b93268085a' r/2279
Imported from https://github.com/glittershark/achilles/

git-subtree-dir: users/glittershark/achilles
git-subtree-mainline: 4d193f239525954631ba9d789ca3aea9a2f4e14d
git-subtree-split: b93268085aab14c80a400c299da5d04d2781098e
Change-Id: I64a583b454bbe03e20358ad7808939a4cbc212ba
Diffstat (limited to 'users/glittershark/achilles/tests/compile.rs')
-rw-r--r--users/glittershark/achilles/tests/compile.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/users/glittershark/achilles/tests/compile.rs b/users/glittershark/achilles/tests/compile.rs
new file mode 100644
index 000000000000..7fa15ad9653e
--- /dev/null
+++ b/users/glittershark/achilles/tests/compile.rs
@@ -0,0 +1,54 @@
+use std::process::Command;
+
+use crate_root::root;
+
+const FIXTURES: &[(&str, i32)] = &[("simple", 5), ("functions", 9)];
+
+#[test]
+fn compile_and_run_files() {
+    let ach = root().unwrap().join("ach");
+
+    println!("Running: `make clean`");
+    assert!(
+        Command::new("make")
+            .arg("clean")
+            .current_dir(&ach)
+            .spawn()
+            .unwrap()
+            .wait()
+            .unwrap()
+            .success(),
+        "make clean failed"
+    );
+
+    for (fixture, exit_code) in FIXTURES {
+        println!(">>> Testing: {}", fixture);
+
+        println!("    Running: `make {}`", fixture);
+        assert!(
+            Command::new("make")
+                .arg(fixture)
+                .current_dir(&ach)
+                .spawn()
+                .unwrap()
+                .wait()
+                .unwrap()
+                .success(),
+            "make failed"
+        );
+
+        let out_path = ach.join(fixture);
+        println!("    Running: `{}`", out_path.to_str().unwrap());
+        assert_eq!(
+            Command::new(out_path)
+                .spawn()
+                .unwrap()
+                .wait()
+                .unwrap()
+                .code()
+                .unwrap(),
+            *exit_code,
+        );
+        println!("    OK");
+    }
+}