Skip to content

Commit c0f2a5d

Browse files
committed
Add tests
1 parent 9e5f7ce commit c0f2a5d

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

test/lib/command_duration.bats

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# shellcheck shell=bats
2+
3+
load "${MAIN_BASH_IT_DIR?}/test/test_helper.bash"
4+
5+
function local_setup_file() {
6+
setup_libs "command_duration"
7+
}
8+
9+
@test "command_duration: _command_duration_current_time" {
10+
run _command_duration_current_time
11+
assert_success
12+
assert_output --regexp '^[0-9]+(\.[0-9]+)?$'
13+
}
14+
15+
@test "command_duration: _command_duration_pre_exec" {
16+
_command_duration_pre_exec
17+
assert [ -n "$COMMAND_DURATION_START_SECONDS" ]
18+
}
19+
20+
@test "command_duration: _command_duration_pre_cmd" {
21+
COMMAND_DURATION_START_SECONDS="1234.567"
22+
_command_duration_pre_cmd
23+
assert [ -z "$COMMAND_DURATION_START_SECONDS" ]
24+
}
25+
26+
@test "command_duration: _dynamic_clock_icon" {
27+
_dynamic_clock_icon 1
28+
assert [ -n "$COMMAND_DURATION_ICON" ]
29+
}
30+
31+
@test "command_duration: _command_duration disabled" {
32+
unset BASH_IT_COMMAND_DURATION
33+
COMMAND_DURATION_START_SECONDS="100"
34+
run _command_duration
35+
assert_output ""
36+
}
37+
38+
@test "command_duration: _command_duration no start time" {
39+
BASH_IT_COMMAND_DURATION=true
40+
unset COMMAND_DURATION_START_SECONDS
41+
run _command_duration
42+
assert_output ""
43+
}
44+
45+
@test "command_duration: _command_duration below threshold" {
46+
BASH_IT_COMMAND_DURATION=true
47+
COMMAND_DURATION_MIN_SECONDS=2
48+
# Mock _command_duration_current_time
49+
_command_duration_current_time() { echo 101; }
50+
COMMAND_DURATION_START_SECONDS=100
51+
run _command_duration
52+
assert_output ""
53+
}
54+
55+
@test "command_duration: _command_duration above threshold (seconds)" {
56+
BASH_IT_COMMAND_DURATION=true
57+
COMMAND_DURATION_MIN_SECONDS=1
58+
COMMAND_DURATION_PRECISION=0
59+
# Mock _command_duration_current_time
60+
_command_duration_current_time() { echo 105; }
61+
COMMAND_DURATION_START_SECONDS=100
62+
run _command_duration
63+
assert_output --regexp ".* 5s$"
64+
}
65+
66+
@test "command_duration: _command_duration with precision" {
67+
BASH_IT_COMMAND_DURATION=true
68+
COMMAND_DURATION_MIN_SECONDS=1
69+
COMMAND_DURATION_PRECISION=1
70+
# Mock _command_duration_current_time
71+
_command_duration_current_time() { echo 105.600000; }
72+
COMMAND_DURATION_START_SECONDS=100.200000
73+
run _command_duration
74+
assert_output --regexp ".* 5.4s$"
75+
}
76+
77+
@test "command_duration: _command_duration with minutes" {
78+
BASH_IT_COMMAND_DURATION=true
79+
COMMAND_DURATION_MIN_SECONDS=1
80+
# Mock _command_duration_current_time
81+
_command_duration_current_time() { echo 200; }
82+
COMMAND_DURATION_START_SECONDS=70
83+
run _command_duration
84+
assert_output --regexp ".* 2m 10s$"
85+
}
86+
87+
@test "command_duration: _command_duration with microsecond rollover" {
88+
BASH_IT_COMMAND_DURATION=true
89+
COMMAND_DURATION_MIN_SECONDS=0
90+
COMMAND_DURATION_PRECISION=1
91+
# Mock _command_duration_current_time
92+
# 105.1 - 100.2 = 4.9
93+
_command_duration_current_time() { echo 105.100000; }
94+
COMMAND_DURATION_START_SECONDS=100.200000
95+
run _command_duration
96+
assert_output --regexp ".* 4.9s$"
97+
}
98+
99+
@test "command_duration: _command_duration with precision and leading zeros" {
100+
BASH_IT_COMMAND_DURATION=true
101+
COMMAND_DURATION_MIN_SECONDS=0
102+
COMMAND_DURATION_PRECISION=3
103+
COMMAND_DURATION_START_SECONDS=100.001000
104+
_command_duration_current_time() { echo 105.002000; }
105+
run _command_duration
106+
assert_output --regexp ".* 5.001s$"
107+
}

0 commit comments

Comments
 (0)