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