Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoseph Frazer <joseph.frazer@ryansg.com>2020-03-04 15:31:20 -0500
committerJoseph Frazer <joseph.frazer@ryansg.com>2020-03-06 09:41:55 -0500
commite613bd8a8c931546fd10ef50338b5a5affa1b3c2 (patch)
tree0a81c9d7406830068fa4273762897c5c9353191a /tamer/tests/tameld.rs
parent777494a6026e6eabff9ca9f05f00aa92e2f58c3d (diff)
downloadtame-e613bd8a8c931546fd10ef50338b5a5affa1b3c2.tar.gz
tame-e613bd8a8c931546fd10ef50338b5a5affa1b3c2.tar.bz2
tame-e613bd8a8c931546fd10ef50338b5a5affa1b3c2.zip
[DEV-7081] Add options to tameld
We want to add an option to set the output file to the linker so we do not need to redirect output to awk any longer. This also adds integration tests for tameld.
Diffstat (limited to 'tamer/tests/tameld.rs')
-rw-r--r--tamer/tests/tameld.rs89
1 files changed, 89 insertions, 0 deletions
diff --git a/tamer/tests/tameld.rs b/tamer/tests/tameld.rs
new file mode 100644
index 0000000..585d25f
--- /dev/null
+++ b/tamer/tests/tameld.rs
@@ -0,0 +1,89 @@
+// Copyright (C) 2014-2019 Ryan Specialty Group, LLC.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+use assert_cmd::prelude::*;
+use predicates::prelude::*;
+use std::process::Command;
+
+#[test]
+fn link_invalid_argument() -> Result<(), Box<dyn std::error::Error>> {
+ let mut cmd = Command::cargo_bin("tameld")?;
+ cmd.arg("-q");
+ cmd.assert()
+ .failure()
+ .code(exitcode::USAGE)
+ .stderr(predicate::str::contains("Unrecognized option:"));
+
+ Ok(())
+}
+
+#[test]
+fn link_missing_input_file() -> Result<(), Box<dyn std::error::Error>> {
+ let mut cmd = Command::cargo_bin("tameld")?;
+ cmd.assert()
+ .failure()
+ .code(exitcode::USAGE)
+ .stderr(predicate::str::contains("FILE"));
+
+ Ok(())
+}
+
+#[test]
+fn link_missing_output_file() -> Result<(), Box<dyn std::error::Error>> {
+ let mut cmd = Command::cargo_bin("tameld")?;
+ cmd.arg("foobar");
+ cmd.assert()
+ .failure()
+ .code(exitcode::USAGE)
+ .stderr(predicate::str::contains("-o OUTPUT"));
+
+ Ok(())
+}
+
+#[test]
+fn link_input_file_does_not_exist() -> Result<(), Box<dyn std::error::Error>> {
+ let mut cmd = Command::cargo_bin("tameld")?;
+ cmd.arg("foobar");
+ cmd.arg("-o").arg("tests/data/test-output.xmle");
+ cmd.assert()
+ .failure()
+ .stderr(predicate::str::contains("No such file or directory"));
+
+ Ok(())
+}
+
+#[test]
+fn link_empty_input_file() -> Result<(), Box<dyn std::error::Error>> {
+ let mut cmd = Command::cargo_bin("tameld")?;
+ cmd.arg("tests/data/empty.xmlo");
+ cmd.arg("-o").arg("tests/data/test-output.xmle");
+ cmd.assert()
+ .failure()
+ .stderr(predicate::str::contains("stack overflow")); // uh oh
+
+ Ok(())
+}
+
+#[test]
+fn link_invalid_input_file() -> Result<(), Box<dyn std::error::Error>> {
+ let mut cmd = Command::cargo_bin("tameld")?;
+ cmd.arg("tests/data/invalid.xmlo");
+ cmd.arg("-o").arg("tests/data/test-output.xmle");
+ cmd.assert()
+ .failure()
+ .stderr(predicate::str::contains("stack overflow")); // uh oh
+
+ Ok(())
+}