runtest.sh 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. #!/usr/bin/env bash
  2. function check_is_run {
  3. kill -0 ${PID}
  4. if [ "$?" != 0 ]; then
  5. echo "Error: process look like crashed"
  6. cat logs/run.log
  7. echo "Run with gdb"
  8. cp ./src/manaplus ./logs/
  9. cp -r core* ./logs/
  10. sleep 10
  11. COREFILE=$(find . -maxdepth 1 -name "core*" | head -n 1)
  12. if [[ -f "$COREFILE" ]]; then
  13. gdb -c "$COREFILE" ./src/manaplus -ex "thread apply all bt" -ex "set pagination 0" -batch
  14. fi
  15. exit 1
  16. fi
  17. }
  18. function check_assert {
  19. grep "Assert:" "${HOME}/.local/share/mana/manaplus.log"
  20. if [ "$?" == 0 ]; then
  21. echo "Assert found in log"
  22. exit 1
  23. fi
  24. }
  25. function wait_for_servers_list {
  26. n=0
  27. while true; do
  28. echo "wait for servers list ${n}"
  29. check_is_run
  30. # check here
  31. grep "Skipping servers list update" "${HOME}/.local/share/mana/manaplus.log" && return
  32. grep "Servers list updated" "${HOME}/.local/share/mana/manaplus.log" && return
  33. grep "Error: servers list updating error" "${HOME}/.local/share/mana/manaplus.log"
  34. if [ "$?" == 0 ]; then
  35. echo "Servers list downloading error"
  36. exit 1
  37. fi
  38. if [[ $n -ge 150 ]]; then
  39. break
  40. fi
  41. sleep 5
  42. n=$((n+1))
  43. done
  44. echo "Waiting time for servers list update is up"
  45. exit 1
  46. }
  47. function run {
  48. ./src/manaplus --hide-cursor --enable-ipc --renderer=0 >logs/run.log 2>&1 &
  49. export PID=$!
  50. echo "manaplus PID: ${PID}"
  51. sleep 20
  52. echo "pause after run"
  53. wait_for_servers_list
  54. check_assert
  55. }
  56. function kill_app {
  57. kill -s SIGTERM ${PID}
  58. export RET=$?
  59. sleep 10
  60. if [ "${RET}" != 0 ]; then
  61. echo "Error: process not responsing to termination signal"
  62. kill -s SIGKILL ${PID}
  63. cat logs/run.log
  64. exit 1
  65. fi
  66. }
  67. function final_log {
  68. export DATA=$(cat logs/run.log)
  69. if [[ -z "${DATA}" ]]; then
  70. echo "Error: no output"
  71. exit 1
  72. fi
  73. cat logs/run.log
  74. export DATA=$(grep "[.]cpp" logs/run.log)
  75. if [[ -n "${DATA}" ]]; then
  76. echo "Error: possible leak detected"
  77. echo "${DATA}"
  78. exit 1
  79. fi
  80. }
  81. function send_command {
  82. echo -n "$1" | nc 127.0.0.1 44007
  83. sleep 7
  84. check_is_run
  85. check_assert
  86. }
  87. function check_exists {
  88. if [ ! -f "logs/home/Desktop/ManaPlus/$1" ]; then
  89. sleep 10
  90. if [ ! -f "logs/home/Desktop/ManaPlus/$1" ]; then
  91. echo "Error: image $1 not exists"
  92. exit 1
  93. fi
  94. fi
  95. if [ ! -f "logs/home/Desktop/ManaPlus/$2" ]; then
  96. sleep 10
  97. if [ ! -f "logs/home/Desktop/ManaPlus/$2" ]; then
  98. echo "Error: image $2 not exists"
  99. exit 1
  100. fi
  101. fi
  102. }
  103. function imagesdiff {
  104. check_exists "$1" "$2"
  105. diff "logs/home/Desktop/ManaPlus/$1" "logs/home/Desktop/ManaPlus/$2"
  106. if [ "$?" == 0 ]; then
  107. echo "Error: images '$1' and '$2' is same."
  108. exit 1
  109. fi
  110. }
  111. function imagessame {
  112. check_exists "$1" "$2"
  113. diff "logs/home/Desktop/ManaPlus/$1" "logs/home/Desktop/ManaPlus/$2"
  114. if [ "$?" != 0 ]; then
  115. echo "Error: images '$1' and '$2' is different."
  116. exit 1
  117. fi
  118. }
  119. if [[ -z "${ABOUTYOFFSET}" ]]; then
  120. export ABOUTYOFFSET="395"
  121. fi
  122. run
  123. check_is_run
  124. send_command "/screenshot run.png"
  125. # send down key
  126. send_command "/guikey -960 keyGUIDown"
  127. send_command "/screenshot downkey.png"
  128. imagesdiff run.png downkey.png
  129. # send up key
  130. send_command "/guikey -961 keyGUIUp"
  131. send_command "/screenshot run2.png"
  132. imagessame run.png run2.png
  133. # open help
  134. send_command "/help"
  135. send_command "/screenshot help.png"
  136. imagesdiff run2.png help.png
  137. send_command "/help"
  138. send_command "/screenshot run3.png"
  139. imagessame run2.png run3.png
  140. # open settings
  141. send_command "/setup"
  142. send_command "/screenshot setup.png"
  143. imagesdiff run3.png setup.png
  144. send_command "/setup"
  145. send_command "/screenshot run4.png"
  146. imagessame run3.png run4.png
  147. # set focus to servers window
  148. send_command "/sendmousekey 400 300 1"
  149. send_command "/screenshot center_click.png"
  150. imagesdiff run4.png center_click.png
  151. send_command "/guikey -989 keyGUIHome"
  152. send_command "/screenshot run5.png"
  153. imagessame run4.png run5.png
  154. # open add server dialog
  155. send_command "/guikey -990 keyGUIInsert"
  156. send_command "/screenshot add_server_empty.png"
  157. imagesdiff run5.png add_server_empty.png
  158. send_command "/sendchars local"
  159. send_command "/screenshot add_server_name.png"
  160. imagesdiff add_server_empty.png add_server_name.png
  161. send_command "/guikey 9 keyGUITab"
  162. send_command "/screenshot add_server_adress1.png"
  163. imagesdiff add_server_name.png add_server_adress1.png
  164. send_command "/sendchars 127.0.0.1"
  165. send_command "/screenshot add_server_adress2.png"
  166. imagesdiff add_server_adress1.png add_server_adress2.png
  167. send_command "/guikey 9 keyGUITab"
  168. send_command "/screenshot add_server_port.png"
  169. imagesdiff add_server_adress2.png add_server_port.png
  170. send_command "/guikey 9 keyGUITab"
  171. send_command "/screenshot add_server_type.png"
  172. imagesdiff add_server_port.png add_server_type.png
  173. send_command "/guikey 9 keyGUITab"
  174. send_command "/screenshot add_server_description1.png"
  175. imagesdiff add_server_type.png add_server_description1.png
  176. send_command "/sendchars local server"
  177. send_command "/screenshot add_server_description2.png"
  178. imagesdiff add_server_description1.png add_server_description2.png
  179. send_command "/guikey 9 keyGUITab"
  180. send_command "/screenshot add_server_url1.png"
  181. imagesdiff add_server_description2.png add_server_url1.png
  182. send_command "/sendchars http://localhost/"
  183. send_command "/screenshot add_server_url2.png"
  184. imagesdiff add_server_url1.png add_server_url2.png
  185. send_command "/guikey 9 keyGUITab"
  186. send_command "/guikey 9 keyGUITab"
  187. send_command "/guikey 9 keyGUITab"
  188. send_command "/guikey 9 keyGUITab"
  189. # add new server
  190. send_command "/guikey 13 keyGUISelect2"
  191. send_command "/screenshot new_server.png"
  192. imagesdiff add_server_url2.png new_server.png
  193. # press about button
  194. send_command "/sendmousekey 500 20 1"
  195. send_command "/screenshot about.png"
  196. imagesdiff new_server.png about.png
  197. # open about page
  198. send_command "/sendmousekey 500 20 1"
  199. send_command "/screenshot about.png"
  200. # open about manaplus page
  201. send_command "/sendmousekey 300 ${ABOUTYOFFSET} 1"
  202. send_command "/screenshot about2.png"
  203. imagesdiff about.png about2.png
  204. # open help window again
  205. send_command "/sendmousekey 220 200 1"
  206. send_command "/screenshot help2.png"
  207. imagesdiff about2.png help2.png
  208. # other comparisions
  209. imagesdiff downkey.png help.png
  210. imagesdiff help.png setup.png
  211. imagesdiff run5.png add_server_name.png
  212. imagesdiff run5.png add_server_adress1.png
  213. imagesdiff run5.png add_server_adress2.png
  214. imagesdiff run5.png add_server_port.png
  215. imagesdiff run5.png add_server_type.png
  216. imagesdiff run5.png add_server_description1.png
  217. imagesdiff run5.png add_server_description2.png
  218. imagesdiff run5.png add_server_url1.png
  219. imagesdiff run5.png add_server_url2.png
  220. imagesdiff run5.png new_server.png
  221. imagesdiff run5.png about.png
  222. imagesdiff run5.png about2.png
  223. imagesdiff run5.png help2.png
  224. imagesdiff run4.png add_server_name.png
  225. imagesdiff run4.png add_server_adress1.png
  226. imagesdiff run4.png add_server_adress2.png
  227. imagesdiff run4.png add_server_port.png
  228. imagesdiff run4.png add_server_type.png
  229. imagesdiff run4.png add_server_description1.png
  230. imagesdiff run4.png add_server_description2.png
  231. imagesdiff run4.png add_server_url1.png
  232. imagesdiff run4.png add_server_url2.png
  233. imagesdiff run4.png new_server.png
  234. imagesdiff run4.png about.png
  235. imagesdiff run4.png about2.png
  236. imagesdiff run4.png help2.png
  237. imagesdiff help.png about.png
  238. imagesdiff help.png help2.png
  239. # final delay
  240. sleep 5
  241. kill_app
  242. final_log
  243. check_assert
  244. exit 0