-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.bats
116 lines (103 loc) · 2.79 KB
/
test.bats
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env bash
load './node_modules/bats-support/load'
load './node_modules/bats-assert/load'
function execute_test_command() {
local cmd
cmd="${BATS_TEST_DESCRIPTION}"
cmd="${cmd/${BATS_TEST_NUMBER} /}"
cmd="${cmd/README /}"
cmd="${cmd/run/${BATS_TEST_DIRNAME}/runfile.sh}"
if [[ "${cmd}" =~ ^([A-Z_]+=[^ ]*) ]]; then
# handle env var declarations placed before test command
export "${BASH_REMATCH[1]}"
run ${cmd/${BASH_REMATCH[1]} /}
else
run ${cmd}
fi
}
task_list="$( cat <<EOF
s start · start app
stop · stop app
b build · build app for environment [vars: env]
t test · run all tests or specific tests [vars: name1, name2, etc.]
l lint · lint all files or specific file [vars: file]
EOF
)"
@test "${BATS_TEST_NUMBER} run" {
execute_test_command
assert_output "${task_list}"
assert_success
}
@test "${BATS_TEST_NUMBER} run -v" {
execute_test_command
assert_output --regexp "^[0-9]+\.[0-9]+\.[0-9]$"
assert_success
}
@test "${BATS_TEST_NUMBER} run --version" {
execute_test_command
assert_output --regexp "^[0-9]+\.[0-9]+\.[0-9]$"
assert_success
}
@test "${BATS_TEST_NUMBER} run -h" {
execute_test_command
assert_output -p "runfile.sh"
assert_output --regexp "[0-9]+\.[0-9]+\.[0-9]"
assert_output -p "Usage"
assert_output -p "Actions"
assert_output -p "Options"
assert_success
}
@test "${BATS_TEST_NUMBER} run --help" {
execute_test_command
assert_output -p "runfile.sh"
assert_output --regexp "[0-9]+\.[0-9]+\.[0-9]"
assert_output -p "Usage"
assert_output -p "Actions"
assert_output -p "Options"
assert_success
}
@test "${BATS_TEST_NUMBER} run --usage" {
execute_test_command
assert_output -p "runfile.sh"
assert_output --regexp "[0-9]+\.[0-9]+\.[0-9]"
assert_output -p "Usage"
assert_output -p "Actions"
assert_output -p "Options"
assert_success
}
@test "${BATS_TEST_NUMBER} run --runfile" {
execute_test_command
assert_output "$( cat ./Runfile )"
assert_success
}
@test "${BATS_TEST_NUMBER} run --runfile --runfile-compact" {
execute_test_command
assert_output "$( cat ./Runfile | sed -e '/^$/d' -e 's/^[[:space:]]//' )"
assert_success
} # shortcut for above:
@test "${BATS_TEST_NUMBER} run --runfile-compact" {
execute_test_command
assert_output "$( cat ./Runfile | sed -e '/^$/d' -e 's/^[[:space:]]//' )"
assert_success
}
@test "${BATS_TEST_NUMBER} run --makefile" {
execute_test_command
assert_output "$( cat ./Makefile )"
assert_success
} # same as above; --runfile-compact should have no effect:
@test "${BATS_TEST_NUMBER} run --makefile --runfile-compact" {
execute_test_command
assert_output "$( cat ./Makefile )"
assert_success
}
@test "${BATS_TEST_NUMBER} run --runfile-aliases" {
execute_test_command
assert_output "$( cat <<-EOF
alias rs='run start'
alias rb='run build'
alias rt='run test'
alias rl='run lint'
EOF
)"
assert_success
}