aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/CI.yml2
-rw-r--r--tests/cli.rs49
2 files changed, 50 insertions, 1 deletions
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 3fc511f..a27a108 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -64,7 +64,7 @@ jobs:
- name: Run tests
run: |
- cargo test --verbose
+ cargo test --verbose -j1
# TODO: integrate these with `cargo test` above
- name: Run manual tests
diff --git a/tests/cli.rs b/tests/cli.rs
new file mode 100644
index 0000000..09e42e9
--- /dev/null
+++ b/tests/cli.rs
@@ -0,0 +1,49 @@
+use std::process::Command; // Run programs
+use assert_cmd::prelude::*; // Add methods on commands
+use predicates::prelude::*; // Used for writing assertions
+
+#[test]
+fn test_help() {
+ let mut cmd = Command::cargo_bin("fpm").unwrap();
+ cmd.arg("--help");
+ cmd.assert()
+ .success()
+ .stdout(
+ predicate::str::contains("--help Prints help information"));
+}
+
+#[test]
+fn test_1() {
+ let mut build = Command::cargo_bin("fpm").unwrap();
+ build.arg("build")
+ .current_dir("tests/1");
+ build.assert()
+ .success()
+ .stdout(predicate::str::contains("Built target p1")
+ .and(predicate::str::contains("TEST1 OK").not()));
+
+ let mut run = Command::cargo_bin("fpm").unwrap();
+ run.arg("run")
+ .current_dir("tests/1");
+ run.assert()
+ .success()
+ .stdout(predicate::str::contains("TEST1 OK"));
+}
+
+#[test]
+fn test_2() {
+ let mut build = Command::cargo_bin("fpm").unwrap();
+ build.arg("build")
+ .current_dir("tests/2");
+ build.assert()
+ .success()
+ .stdout(predicate::str::contains("Built target p1")
+ .and(predicate::str::contains("TEST2 OK").not()));
+
+ let mut run = Command::cargo_bin("fpm").unwrap();
+ run.arg("run")
+ .current_dir("tests/2");
+ run.assert()
+ .success()
+ .stdout(predicate::str::contains("TEST2 OK"));
+}