this repo has no description
1use assert_cmd::prelude::*;
2use predicates::prelude::*;
3use std::process::Command;
4
5mod common;
6
7/// The hidden `completions` / `manpage` subcommands are integration-tested by
8/// shape, not content: each must succeed and emit non-empty stdout so that
9/// packagers can pipe the output into a file during install.
10mod meta {
11 use super::*;
12
13 #[test]
14 fn completions_bash() -> Result<(), Box<dyn std::error::Error>> {
15 let mut cmd = Command::cargo_bin("cmprss")?;
16 cmd.args(["completions", "bash"]);
17 cmd.assert()
18 .success()
19 .stdout(predicate::str::contains("_cmprss"));
20 Ok(())
21 }
22
23 #[test]
24 fn completions_zsh() -> Result<(), Box<dyn std::error::Error>> {
25 let mut cmd = Command::cargo_bin("cmprss")?;
26 cmd.args(["completions", "zsh"]);
27 cmd.assert()
28 .success()
29 .stdout(predicate::str::contains("#compdef cmprss"));
30 Ok(())
31 }
32
33 #[test]
34 fn manpage_emits_troff() -> Result<(), Box<dyn std::error::Error>> {
35 let mut cmd = Command::cargo_bin("cmprss")?;
36 cmd.arg("manpage");
37 cmd.assert()
38 .success()
39 .stdout(predicate::str::contains(".TH cmprss 1"))
40 .stdout(predicate::str::contains(".SH NAME"));
41 Ok(())
42 }
43
44 /// `cmprss --help` must not advertise the hidden meta subcommands.
45 #[test]
46 fn meta_subcommands_hidden_from_help() -> Result<(), Box<dyn std::error::Error>> {
47 let mut cmd = Command::cargo_bin("cmprss")?;
48 cmd.arg("--help");
49 cmd.assert()
50 .success()
51 .stdout(predicate::str::contains("completions").not())
52 .stdout(predicate::str::contains("manpage").not());
53 Ok(())
54 }
55}