use predicates::prelude::*;
use crate::harness::{self, commit_target, setup_repo};
#[test]
fn log_prints_directly_when_stdout_is_not_a_tty() {
let (dir, sha) = setup_repo();
let target = commit_target(&sha);
harness::git_meta(dir.path())
.args(["set", &target, "agent:model", "claude-4.6"])
.assert()
.success();
harness::git_meta(dir.path())
.args(["log", "-n", "1"])
.assert()
.success()
.stdout(predicate::str::contains("commit"))
.stdout(predicate::str::contains("--- metadata ---"))
.stdout(predicate::str::contains("agent:model"))
.stdout(predicate::str::contains("claude-4.6"));
}
#[test]
fn log_treats_pager_cat_as_disabled() {
let (dir, sha) = setup_repo();
let target = commit_target(&sha);
harness::git_meta(dir.path())
.args(["set", &target, "k", "v"])
.assert()
.success();
harness::git_meta(dir.path())
.env("PAGER", "cat")
.args(["log", "-n", "1"])
.assert()
.success()
.stdout(predicate::str::contains("commit"));
}
#[test]
fn log_skips_pager_when_already_in_use() {
let (dir, sha) = setup_repo();
let target = commit_target(&sha);
harness::git_meta(dir.path())
.args(["set", &target, "k", "v"])
.assert()
.success();
harness::git_meta(dir.path())
.env("GIT_META_PAGER_IN_USE", "1")
.args(["log", "-n", "1"])
.assert()
.success()
.stdout(predicate::str::contains("commit"));
}