forked from shellspec/shellspec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path07.before_after_hook_spec.sh
77 lines (61 loc) · 1.64 KB
/
07.before_after_hook_spec.sh
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#shellcheck shell=sh
# shellspec has Before and After hook.
# Those hooks are execute for each example (It/Example/Specify).
# There is no hooks execute for each example group (Describe/Context).
# In other words, There is no BeforeAll / AfterAll hooks. It is design policy.
Describe 'before / after hook example'
Describe '1: before hook'
setup() { value=10; }
Before 'setup'
add_value() {
value=$((value + $1))
echo "$value"
}
It 'is called before execute example'
When call add_value 10
The output should eq 20
End
It 'is called for each example'
When call add_value 100
The output should eq 110
End
End
Describe '2: before hook'
setup1() { value1=10; }
setup2() { value2=20; }
Before 'setup1' 'setup2'
add_values() {
echo "$((value1 + value2))"
}
It 'can register multiple'
When call add_values
The output should eq 30
End
End
Describe '3: before hook'
Before 'value=10'
echo_value() { echo "$value"; }
It 'can also specify code instead of function'
When call echo_value
The output should eq 10
End
End
Describe '4: before hook'
setup() { false; } # setup fails
Before 'setup'
echo_ok() { echo ok; }
It 'is fails because before hook fails'
When call echo_ok
The output should eq 'ok'
End
# This behavior can be used to verify initialization of before hook.
End
Describe '5: after hook'
cleanup() { :; } # clean up something
Before 'cleanup'
It 'is called after execute example'
When call echo ok
The output should eq 'ok'
End
End
End