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 | parser() { |
57 | warn "Compiling parser" |
58 | echo |
59 |
|
60 | warn_lite "Running compiler" |
61 | mkdir -p bin |
62 | FILES=$(find src/parser/*.c) |
63 | handle "gcc -pedantic -Wall -Wextra -Werror -o bin/parser -I src/c $FILES -lncurses" |
64 | echo |
65 |
|
66 | success "Finished" |
67 | } |
68 |
|
69 | lint() { |
70 | warn "Running lint test" |
71 | echo |
72 |
|
73 | find . -name "*.c" -print0 | while read -d $'\0' file |
74 | do |
75 | warn_lite "Executing gcc --syntax-only $file" |
76 | handle "gcc --syntax-only -pedantic -Wall -Wextra -Werror -I src/c $file" |
77 | echo |
78 | done |
79 |
|
80 | success "Finished" |
81 | } |
82 |
|
83 | performance() { |
84 | warn "Running performance test" |
85 | echo |
86 |
|
87 | warn_lite "Compiling and getting file sizes" |
88 | handle tests/performance.py |
89 | echo |
90 |
|
91 | success "Finished" |
92 | } |
93 |
|
94 | for test in "$@" |
95 | do |
96 | $test |
97 | done |
98 |
|
99 | echo -e "finished: ${SECONDS} seconds" |
100 |
|