diff --git a/src/bin/cargo-deadlinks.rs b/src/bin/cargo-deadlinks.rs
index 83233b5..0f0ca67 100644
--- a/src/bin/cargo-deadlinks.rs
+++ b/src/bin/cargo-deadlinks.rs
@@ -95,7 +95,7 @@ fn main() {
let args: MainArgs = match parse_args() {
Ok(args) => args,
Err(err) => {
- println!("error: {}", err);
+ eprintln!("error: {}", err);
std::process::exit(1)
}
};
diff --git a/tests/broken_links/hardcoded-target/index.html b/tests/broken_links/hardcoded-target/index.html
new file mode 100644
index 0000000..829bc21
--- /dev/null
+++ b/tests/broken_links/hardcoded-target/index.html
@@ -0,0 +1 @@
+
diff --git a/tests/cli_args/Cargo.toml b/tests/cli_args/Cargo.toml
new file mode 100644
index 0000000..0b59ab0
--- /dev/null
+++ b/tests/cli_args/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "cli_args"
+version = "0.1.0"
+authors = ["Joshua Nelson "]
+edition = "2018"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/tests/cli_args/src/lib.rs b/tests/cli_args/src/lib.rs
new file mode 100644
index 0000000..52c6521
--- /dev/null
+++ b/tests/cli_args/src/lib.rs
@@ -0,0 +1,2 @@
+//! Links to [Private]
+struct Private;
diff --git a/tests/simple_project.rs b/tests/simple_project.rs
index eedcbb8..2433340 100644
--- a/tests/simple_project.rs
+++ b/tests/simple_project.rs
@@ -2,7 +2,7 @@ extern crate assert_cmd;
extern crate predicates;
use assert_cmd::prelude::*;
-use predicate::str::contains;
+use predicate::str::{contains, starts_with};
use predicates::prelude::*;
use std::env;
use std::path::Path;
@@ -142,3 +142,69 @@ mod workspace {
assert_doc("./tests/workspace", &[]).success();
}
}
+
+mod cli_args {
+ use super::*;
+
+ #[test]
+ fn it_passes_arguments_through_to_cargo() {
+ remove_all("./tests/cli_args/target");
+ deadlinks()
+ .current_dir("./tests/cli_args")
+ .arg("--")
+ .arg("--document-private-items")
+ .assert()
+ .success();
+ assert!(Path::new("./tests/cli_args/target/doc/cli_args/struct.Private.html").exists());
+ }
+
+ #[test]
+ fn it_exits_with_success_on_info_queries() {
+ for arg in &["-h", "--help", "-V", "--version"] {
+ deadlinks().arg(arg).assert().success();
+ }
+ }
+
+ #[test]
+ fn dir_works() {
+ deadlinks()
+ .arg("--dir")
+ .arg("./tests/broken_links/hardcoded-target")
+ .assert()
+ .failure()
+ .stdout(contains("Found invalid urls"));
+ }
+
+ #[test]
+ fn missing_deadlinks_gives_helpful_error() {
+ Command::cargo_bin("cargo-deadlinks")
+ .unwrap()
+ .assert()
+ .failure()
+ .stderr(contains("should be run as `cargo deadlinks`"));
+ }
+
+ #[test]
+ fn too_many_args_is_an_error() {
+ deadlinks()
+ .arg("x")
+ .assert()
+ .failure()
+ .stderr(contains("error:").and(contains("x")));
+ }
+
+ #[test]
+ fn version_contains_binary_name() {
+ Command::cargo_bin("deadlinks")
+ .unwrap()
+ .arg("--version")
+ .assert()
+ .stdout(starts_with("deadlinks "));
+ Command::cargo_bin("cargo-deadlinks")
+ .unwrap()
+ .arg("deadlinks")
+ .arg("--version")
+ .assert()
+ .stdout(starts_with("cargo-deadlinks "));
+ }
+}
diff --git a/tests/simple_project/src/lib.rs b/tests/simple_project/src/lib.rs
index 6e5c82b..4d97fbe 100644
--- a/tests/simple_project/src/lib.rs
+++ b/tests/simple_project/src/lib.rs
@@ -8,10 +8,3 @@ pub fn bar() {}
/// [Correct link](crate::bar)
pub struct Tmp {}
-#[cfg(test)]
-mod tests {
- #[test]
- fn it_works() {
- assert_eq!(2 + 2, 4);
- }
-}