]> git.lyx.org Git - lyx.git/blob - development/keystest/report_html.sh
Next contribution to key tests from John McCabe-Dansted.
[lyx.git] / development / keystest / report_html.sh
1 #!/bin/bash
2 LT=development/keystest
3
4 GEOM=320x200
5 convert -normalize -scale $GEOM -quality $QUALITY $f $GEOM/$f
6
7 UNIQUE_LINE=1
8 SRC=
9
10
11 if [ -e out/log ]
12 then    
13    LT=.
14 fi
15
16 while [ ! -e $LT/out/log ]
17 do
18   cd ..
19   if [ `pwd` = '/' ]
20   then
21      exit
22   fi
23 done
24
25 OUT=$LT/out/html
26 mkdir -p $OUT
27 rm $OUT/index*.html
28 ls $OUT/*.html
29
30 CPP_HTML_DIR_REL=cpp_html
31 CPP_HTML_DIR=$out/cpp_html
32
33 strings $LT/out/GDB.* > $LT/out/GDBs 
34 grep "#$UNIQUE_LINE " $LT/out/GDBs > $LT/out/list
35 cat $LT/out/list | sed 's/0x[^ )]*[ )]/.*/g'  | sort | uniq | tee $LT/out/listuniq
36
37 echo '<html>' >> $OUT/indexreport.html
38
39 tidy_keycode () {
40 while   read -r k
41 do
42         if [ "$k" = Raiselyx ] 
43         then
44                 echo -n '\[!Raiselyx]'
45         elif  [ "$k" = Loop ] 
46         then
47                 echo -n '\[!Loop]'
48         else
49                 echo -n "$k" | sed s/^KK:\ //
50         fi
51 done
52 }
53
54 html_keycode() {
55           cat "$f_base.KEYCODEpure" | tidy_keycode 
56           echo -n '<font color=gray>'
57           cat "$f_base.KEYCODEpure+" | tidy_keycode 
58           echo -n '</font><br/>'
59 }
60
61 gdb2html() {
62 cat $g | sed 's/&/&amp/g' | sed 's/</&lt/g'  | while read -r l
63 do
64         c=`echo $l | grep -i -o "at [[:alnum:].]*:[0-9]*"`
65         if [ -z "$c" ]
66         then
67                 echo -- "$l" | sed s/--//
68         else
69                 cpp=`echo "$c" | sed s/at\ // | sed s/:.*//g`
70                 lineno=`echo "$c" | sed s/.*://g`
71                 echo $cpp,$lineno 1>&2
72                 #if [ -e "$CPP_HTML_DIR/$cpp.html" ]
73                 if true
74                 then
75                         echo "$l" | sed "s/$c/<a href=$CPP_HTML_DIR_REL\/$cpp.html\#line$lineno>$c<\/a>/"
76                 else
77                         echo "$l"
78                 fi
79         fi
80 done | sed 's/^/<br\/>/'
81 }
82
83 for file in `find $LT/out/ | grep replay/last_crash_sec`
84 do
85  echo last_crash_sec file: $file
86  SEC=`cat $file`
87  echo SEC $SEC
88  f_base=`echo $file | sed s/last_crash_sec/$SEC/g`
89  NUM_KEYCODES=`wc -l < "$f_base.KEYCODEpure"`
90  echo NUM_KEYCODES=$NUM_KEYCODES...
91  if [ "$NUM_KEYCODES" -lt 80 ]  
92  then
93   echo f_base $f_base
94   f=$f_base.GDB
95   echo $f
96   g=$f.short
97   #if egrep '([Ii][Nn] .*[:[:alnum:]][:][0-9]*[^0-9]|#0 | signal SIG[^T])' -A9999  <$f >$g
98   egrep '([Ii][Nn] .*[:[:alnum:]][:][0-9]*[^0-9]|#0 | signal SIG[^T])' -A9999  <$f >$g
99   if true
100   then
101         IN_AT=`egrep -o '([Ii][Nn]|at) ([:lower:]* )?[:_[:alnum:]]*(::[:_[:alnum:]]*|:[0-9]*)' <$f | grep -v lyx_exit | grep -v [Aa]ssert | head -n 1  `
102         SIGNAL=`grep -o ' signal SIG[[:alnum:]_]*[, ]' <$g | sed s/[^[:upper:]]//g | head -n 1`
103         TITLE="$SIGNAL $IN_AT"
104         TITLE_=`echo $TITLE|sed s/[^[:alnum:]]/_/g`
105         INDEX="index.html"
106         echo TITLE $TITLE
107         echo INDEX $INDEX
108         echo NEW $INDEX
109         echo '<html>' >> $LT/out/$INDEX
110         echo -n "<a href=\"$SEC.html\">$TITLE</a> " >> $OUT/indexreport.html
111         html_keycode >> $OUT/indexreport.html
112         echo >> $OUT/indexreport.html
113         ( echo '<html>'
114           echo "<h1>$TITLE</h1>"
115           html_keycode
116           echo "<a href=$SEC.KEYCODE>KEYCODES</a> "
117           echo "<a href=$SEC.GDB>GDB</a><br/>"
118           echo "<a href=$SEC.GDB.png><img src=$SEC.small.png/></a><br/><br/>"
119           gdb2html
120         ) > $OUT/$SEC.html
121         echo '<a href="'"$SEC.html"'">'$SEC'</a><br/>' >> $OUT/$INDEX
122         echo '<a href="'"$SEC.html"'">'$SEC'</a><br/>'
123         if [ ! -e $OUT/$SEC.small.png ]
124         then  
125                 convert -normalize -scale $GEOM $f.png $OUT/$SEC.small.png -quality 85
126         fi
127         chmod a+r $f $f.png $f_base.KEYCODE $f_base.html $OUT/indexreport.html
128         ln $f $f.png $f_base.KEYCODE $f_base.html $OUT/
129   fi
130  fi
131 done
132 mv $OUT/indexreport.html $OUT/indexreport.html.bak
133 echo "<html>" >> $OUT/indexreport.html
134 echo "<h1>List of bugs found</h1>" >> $OUT/indexreport.html
135 sort -k 2 -t '>' < $OUT/indexreport.html.bak >> $OUT/indexreport.html
136
137 $OUT/
138 exit