95 lines
2.1 KiB
Bash
95 lines
2.1 KiB
Bash
|
#!/usr/bin/env sh
|
||
|
|
||
|
# This very basic script simulate user inputs for the CI
|
||
|
# Feel free to update, improve or remove it if proper
|
||
|
# intergration tests and/or unit tests are added.
|
||
|
|
||
|
set -e
|
||
|
|
||
|
BOLD="\033[1m"
|
||
|
RESET="\033[0m"
|
||
|
LIGHT_RED="\033[91m"
|
||
|
LIGHT_GREEN="\033[92m"
|
||
|
LIGHT_CYAN="\033[96m"
|
||
|
|
||
|
logging(){
|
||
|
local type=$1; shift
|
||
|
printf "${LIGHT_CYAN}${BOLD}run_tests${RESET} [%b] : %b\n" "$type" "$*"
|
||
|
}
|
||
|
log_info(){
|
||
|
logging "${LIGHT_GREEN}info${RESET}" "$@"
|
||
|
}
|
||
|
log_error(){
|
||
|
logging "${LIGHT_RED}error${RESET}" "$@" >&2
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
|
||
|
PID=""
|
||
|
|
||
|
# to properly kill child process executed in background on exit
|
||
|
at_exit() {
|
||
|
status=$?
|
||
|
[ $status -eq 0 ] && log_info "Seem all went well" && exit 0
|
||
|
# Code for non-zero exit:
|
||
|
if ! kill -s TERM "$PID" 2>/dev/null || ! wait "$PID" ; then
|
||
|
log_error "Pid [$PID] died with status $status "
|
||
|
fi
|
||
|
log_error "Something went wrong. Pid [$PID] has been killed. Status code $status"
|
||
|
}
|
||
|
# to properly quit from ctrl+c (SIGINT Signal)
|
||
|
sigint_handler(){
|
||
|
kill -s TERM "$PID"
|
||
|
wait
|
||
|
log_info "Tests abort"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
# look at test/main.c and run ./mlx-test to understand what this function does
|
||
|
test_default_main(){
|
||
|
${MAKE} -f Makefile.gen all
|
||
|
./mlx-test &
|
||
|
PID="$!"
|
||
|
log_info "./mlx-test running in background, pid:" $PID
|
||
|
|
||
|
i=25 # waiting 25s mlx-test to be ready for inputs.
|
||
|
while [ $i -gt 0 ]; do
|
||
|
if ! ps -p $PID > /dev/null ; then
|
||
|
wait $PID
|
||
|
fi
|
||
|
log_info "countdown" $i
|
||
|
sleep 1
|
||
|
i=$((i - 1))
|
||
|
done
|
||
|
log_info "Ready to \"just play\" using xdotool"
|
||
|
wid1=$(xdotool search --name Title1)
|
||
|
wid2=$(xdotool search --name Title2)
|
||
|
wid3=$(xdotool search --name Title3)
|
||
|
|
||
|
xdotool windowfocus $wid3
|
||
|
log_info "Focus Win3: Testing move mouse 100 100"
|
||
|
xdotool mousemove 100 100
|
||
|
log_info "Focus Win3: Testing move mouse 200 200"
|
||
|
xdotool mousemove 200 200
|
||
|
log_info "Focus Win3: Pressing escape to destroy window \"Win3\""
|
||
|
xdotool key Escape
|
||
|
|
||
|
log_info "Focus Win2: Pressing escape to stop program"
|
||
|
xdotool windowfocus $wid2
|
||
|
xdotool key Escape
|
||
|
}
|
||
|
|
||
|
main(){
|
||
|
case $(uname) in
|
||
|
FreeBSD) MAKE=gmake ;;
|
||
|
*) MAKE=make ;;
|
||
|
esac
|
||
|
cd $(dirname $0)
|
||
|
trap at_exit EXIT
|
||
|
trap sigint_handler INT
|
||
|
|
||
|
test_default_main
|
||
|
}
|
||
|
|
||
|
main "$@"
|