1pub(crate) mod app;
2pub mod archive;
3pub mod capture;
4pub(crate) mod cli;
5pub(crate) mod db;
6pub(crate) mod model;
7pub(crate) mod ocr;
8pub(crate) mod platform;
9pub(crate) mod sensitive;
10
11pub use crate::cli::{run, run_cli, run_from, CliError, CliExitCode};
12
13#[cfg(test)]
14mod tests {
15 use super::{archive, capture, run_from};
16
17 #[test]
18 fn run_from_returns_parse_errors_without_exiting_process() {
19 let error = run_from(["clipmem", "recent", "--limit", "0"])
20 .expect_err("invalid arguments should return an error");
21
22 assert!(error.to_string().contains("between 1 and 250"));
23 }
24
25 #[test]
26 fn public_facades_expose_archive_and_capture_boundaries() {
27 let snapshot = capture::build_snapshot(
28 capture::CaptureContext::new(1).with_frontmost_app_name("Terminal"),
29 vec![capture::build_item(
30 0,
31 vec![capture::build_representation(
32 "public.utf8-plain-text".to_string(),
33 None,
34 b"git status".to_vec(),
35 )],
36 )],
37 );
38
39 assert_eq!(archive::SearchMode::Literal.as_str(), "literal");
40 assert_eq!(snapshot.preview_text(), "git status");
41 }
42}