use predicates::prelude::*;
use super::common::{ensure_daemon_stopped, flow, unique_pipe_name};
use super::test_desktop::{DaemonGuard, TestDesktop, start_test_daemon};
#[test]
fn start_stop_lifecycle() {
let td = TestDesktop::create().expect("create test desktop");
let pipe = unique_pipe_name();
let _daemon = start_test_daemon(&pipe, &td.name).expect("start test daemon");
let _guard = DaemonGuard::new(&pipe);
flow(&pipe)
.arg("start")
.assert()
.stderr(predicate::str::contains("daemon is already running"))
.failure();
flow(&pipe)
.arg("stop")
.assert()
.stdout(predicate::str::contains("daemon stopped"))
.success();
flow(&pipe)
.arg("stop")
.assert()
.stderr(predicate::str::contains("daemon not running"))
.failure();
}
#[test]
fn stop_when_not_running() {
let pipe = unique_pipe_name();
ensure_daemon_stopped(&pipe);
flow(&pipe)
.arg("stop")
.assert()
.stderr(predicate::str::contains("daemon not running"))
.failure();
}
#[test]
fn start_when_already_running() {
let td = TestDesktop::create().expect("create test desktop");
let pipe = unique_pipe_name();
let _daemon = start_test_daemon(&pipe, &td.name).expect("start test daemon");
let _guard = DaemonGuard::new(&pipe);
flow(&pipe)
.arg("start")
.assert()
.stderr(predicate::str::contains("daemon is already running"))
.failure();
}