11#! /usr/bin/bash
2+ set -e
23
3- function main() {
4- local clang_cxx=" clang++"
5- local build_dir=" build"
6- local static_lib=" ../src/back_end/target/debug/libback_end.a"
7- local config_test=" config.cxx"
4+ function check() {
5+ local required_tool=$1
6+
7+ if ! command -v > /dev/null 2>&1 ; then
8+ echo " $required_tool not found in system"
9+ exit
10+ fi
11+ }
812
13+ function build_backend() {
14+ local backend_dir=" src/back_end"
15+ local tests_ffi_dir=" tests-ffi"
16+ local cargo=" cargo"
17+
18+ check " $cargo "
919 cd ..
10- cd " src/back_end" || exit 1
11- cargo build
20+ if [ ! -d " $backend_dir " ]; then
21+ echo " $backend_dir not found"
22+ exit 1
23+ fi
24+
25+ cd " $backend_dir " || exit 1
26+ $cargo build
1227 cd ../..
13- cd " tests-ffi" || exit 1
14-
15- if [ ! -d " $build_dir " ]; then
28+ cd " $tests_ffi_dir " || exit 1
29+ }
30+
31+ function run_ffi_test() {
32+ local clang_cxx=" clang++"
33+ local static_lib_path=" ../src/back_end/target/debug/libback_end.a"
34+ local build_dir=" build"
35+ check " $clang_cxx "
36+
37+ echo -e " \e[0;32m[+] Build backend:\e[0;37m"
38+ build_backend
39+ echo -e " \e[0;32m[+] Build done\e[0;37m"
40+
41+ if [ ! -d " $build_dir " ]; then
1642 mkdir -p " $build_dir "
17- fi
43+ fi
44+
45+ for file in * .cxx; do
46+ file_name=$( basename " $file " )
1847
19- $clang_cxx " $config_test " " $static_lib " -o " $build_dir /config_test"
20- ./" $build_dir /config_test"
48+ $clang_cxx " $file " " $static_lib_path " -o " $build_dir /$file_name "
49+ echo
50+ echo -e " \e[0;32m[+] Test for $file_name :\e[0;37m"
51+ ./" $build_dir /$file_name "
52+
53+ echo -e " \e[0;32m[+] Test for $file_name success with status code: $? \e[0;37m"
54+
55+ for _ in {1..25}; do
56+ printf " _"
57+ done
58+ echo
59+ done
60+ }
61+
62+ function main() {
63+ run_ffi_test
2164}
2265
2366main
0 commit comments