1 | #!/usr/bin/env bash |
2 |
|
3 | success() { |
4 | echo -e "\033[92m\033[1m\033[7m${@}\033[0m" |
5 | } |
6 |
|
7 | success_lite() { |
8 | echo -e "\033[92m${@}\033[0m" |
9 | } |
10 |
|
11 | error() { |
12 | echo -e "\033[91m\033[7m\033[1m${@}\033[0m" |
13 | } |
14 |
|
15 | warn() { |
16 | echo -e "\033[93m\033[1m\033[7m${@}\033[0m" |
17 | } |
18 |
|
19 | warn_lite() { |
20 | echo -e "\033[93m${@}\033[0m" |
21 | } |
22 |
|
23 | handle() { |
24 | echo $1 |
25 | $1 |
26 | if [ $? -ne 0 ] |
27 | then |
28 | error "Error in test. Exiting..." |
29 | exit $1 |
30 | else |
31 | success_lite "Success in test." |
32 | fi |
33 | } |
34 |
|
35 | help() { |
36 | echo "Usage: ./test [help] [c_unit] [performance] [lint]" |
37 | } |
38 |
|
39 | c_unit() { |
40 | warn "Running C unit test chain" |
41 | echo |
42 |
|
43 | # Compile C unit tests |
44 | warn_lite "Making C header unit test" |
45 | mkdir -p bin |
46 | handle "gcc -pedantic -Wall -Wextra -Werror -o bin/c -I src/c tests/header_unit.c tests/header_unit_2.c" |
47 | echo |
48 |
|
49 | warn_lite "Running C header unit test" |
50 | handle bin/c |
51 | echo |
52 |
|
53 | success "Finished" |
54 | } |
55 |
|
56 | lint() { |
57 | warn "Running lint test" |
58 | echo |
59 |
|
60 | find . -name "*.c" -print0 | while read -d $'\0' file |
61 | do |
62 | warn_lite "Executing gcc --syntax-only $file" |
63 | handle "gcc --syntax-only -pedantic -Wall -Wextra -I src/c $file" |
64 | echo |
65 | done |
66 |
|
67 | success "Finished" |
68 | } |
69 |
|
70 | performance() { |
71 | warn "Running performance test" |
72 | echo |
73 |
|
74 | warn_lite "Compiling and getting file sizes" |
75 | handle tests/performance.py |
76 | echo |
77 |
|
78 | success "Finished" |
79 | } |
80 |
|
81 | for test in "$@" |
82 | do |
83 | $test |
84 | done |
85 |
|
86 | echo -e "finished: ${SECONDS} seconds" |
87 |
|