]> git.lyx.org Git - features.git/blob - development/keystest/replay.sh
f2fa27e6f4d9dbd82d2f07ac705b4fab854b8bd6
[features.git] / development / keystest / replay.sh
1 #!/bin/bash
2 # This script starts LyX, and restarts LyX if it is closed
3 # it logs all output, including backtraces to development/keystest/out/GDB
4
5 #rename other windows to avoid confusion.
6 DIRNAME0=`dirname "$0"`
7 OUTDIR="$DIRNAME0/out"
8 WAITSECS=20
9 INFILE="$1"
10 LINES_TO_INCLUDE=8
11
12 if [ ! -e "$INFILE" ]
13 then
14         echo cannot find "$INFILE"
15         exit
16 fi
17
18 killall lyx
19
20 wmctrl -N __renamed__ -r lyx
21 wmctrl -N __renamed__ -r lyx
22 wmctrl -N __renamed__ -r lyx
23 wmctrl -N __renamed__ -r lyx
24
25 while ! grep " signal SIG[^T]" "$INFILE.new_gdb"
26 do
27   SEC=`date +%s`
28   echo GDB---------------- >> "$INFILE.new_gdb.bak"
29   cat "$INFILE.new_gdb" >> "$INFILE.new_gdb.bak"
30   echo LINES_TO_INCLUDE $LINES_TO_INCLUDE
31   #cat $NUMLINES
32   tail -n $LINES_TO_INCLUDE < $INFILE > $INFILE.new_key
33   NUMLINES=`wc -l "$INFILE.new_key"`
34   echo NUMLINES $NUMLINES
35   ( i=0
36     echo Waiting $WAITSECS before starting replay
37     sleep $WAITSECS 
38     echo Starting replay
39     wmctrl -R LyX && xvkbd -xsendevent -text '\Afn'
40     cat "$INFILE.new_key" |
41     while read -r l
42     do
43       wmctrl -R LyX && xvkbd -xsendevent -text "$l"
44       #echo -- "$l"
45       i=$(($i+1))
46       echo $i/$NUMLINES
47       sleep 0.1
48     done
49     echo FINISHED REPLAY
50     sleep 4
51     killall lyx
52     sleep 2
53     killall lyx -9
54     echo FINISHED REPLAY and killed lyx
55   ) &
56   CHILD_PID="$!"
57   echo "Starting Lyx"
58   (echo "run
59   bt" ; yes q) | gdb src/lyx 2>&1 | strings|  tee "$INFILE.new_gdb"
60   kill $CHILD_PID
61   sleep 2 kill -9 $CHILD_PID
62   LINES_TO_INCLUDE=$(($LINES_TO_INCLUDE*2))
63   
64 done
65 echo END