blob: 6a8725ac014c42d61be46d9962c679cfacaf0fbc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/usr/bin/env bats
# .claude/statusline-command.sh — Claude Code status line mirroring the zsh
# prompt: [yy-mm-dd HH:MM:SS] user host:~/path on <branch>
setup() {
REPO_ROOT="$(cd "$(dirname "$BATS_TEST_FILENAME")/../.." && pwd)"
SCRIPT="$REPO_ROOT/.claude/statusline-command.sh"
TMPDIR_T="$(mktemp -d)"
}
teardown() {
rm -rf "$TMPDIR_T"
}
run_statusline() {
printf '{"cwd":"%s"}' "$1" | sh "$SCRIPT"
}
@test "statusline renders date, user, host, and tilde-abbreviated cwd" {
dir="$HOME/.cache"
run run_statusline "$dir"
[ "$status" -eq 0 ]
host="$(uname -n)"
user="$(whoami)"
[[ "$output" =~ ^\[[0-9]{2}-[0-9]{2}-[0-9]{2}\ [0-9]{2}:[0-9]{2}:[0-9]{2}\]\ $user\ $host:~/\.cache$ ]]
}
@test "statusline appends the git branch inside a repo" {
git -C "$TMPDIR_T" init -q -b trunk
run run_statusline "$TMPDIR_T"
[ "$status" -eq 0 ]
[[ "$output" == *" on trunk" ]]
}
@test "statusline omits the branch part outside a git repo" {
mkdir -p "$TMPDIR_T/plain"
run run_statusline "$TMPDIR_T/plain"
[ "$status" -eq 0 ]
[[ "$output" != *" on "* ]]
}
@test "statusline leaves a cwd outside HOME unabbreviated" {
run run_statusline "/tmp"
[ "$status" -eq 0 ]
[[ "$output" == *":/tmp" ]]
}
@test "statusline emits no stderr noise" {
err="$(printf '{"cwd":"%s"}' "$HOME" | sh "$SCRIPT" 2>&1 >/dev/null)"
[ -z "$err" ]
}
|