You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/filters/tests/global-filter-test.sh

170 lines
4.3 KiB

#!/bin/bash
# This script helps finding out problems in filter of kspread/kword/kpresenter
# by converting .ksp/.kpr/.kwd -> filter extension -> .ksp/.kpr/.kwd and comparing the initial and final .ksp/.kpr/.kwd files.
# We use the ksp/kpr/kwd format as a "dump" of the KSpread data, to check if everything is correct
# in memory, but the point is of course to ensure that the filter extension has all the information.
# To use this script, you need to pass the full path to an existing ksp file as argument.
# Don't use a relative path, dcopstart won't handle it
input="$2"
case "$1" in
kspread)
appname=kspread
oldextension=ksp
case "$3" in
gnumeric)
newextension=gnumeric
newmimetype=application/x-gnumeric
;;
opencalc)
newextension=sxc
newmimetype=application/vnd.sun.xml.calc
;;
*)
printf "Usage: %s {kspread|kword|kpresenter} <file name> {gnumeric|opencalc}\n" "$0"
exit 1;
esac
;;
kword)
appname=kword
oldextension=kwd
case "$3" in
rtf)
newextension=rtf
newmimetype=text/rtf
;;
amipro)
newextension=sam
newmimetype=application/x-amipro
;;
oowriter)
newextension=sxw
newmimetype=application/vnd.sun.xml.writer
;;
latex)
newextension=tex
newmimetype=text/x-tex
;;
paldoc)
newextension=pdb
newmimetype=application/vnd.palm
;;
abiword)
newextension=abw
newmimetype=application/x-abiword
;;
wml)
newextension=wml
newmimetype=application/text/vnd.wap.wml
;;
wordperfect)
newextension=wpd
newmimetype=application/wordperfect
;;
ascii)
newextension=txt
newmimetype=text/plain
;;
*)
printf "Usage: %s {kspread|kword|kpresenter} <file name> {rtf|amipro|oowriter|latex|paldoc|abiword|wml|wordperfect|ascii}\n" "$0"
exit 1;
esac
;;
chalk)
appname=chalk
oldextension=kra
case "$3" in
magick-png)
newextension=png
newmimetype=image/png
;;
magick-gif)
newextension=gif
newmimetype=image/gif
;;
magick-jpeg)
newextension=jpg
newmimetype=image/jpeg
;;
magick-tiff)
newextension=tiff
newmimetype=image/tiff
;;
*)
printf "Usage: %s {kspread|kword|kpresenter|chalk} <file name> {magick-png}\n" "$0"
exit1;
esac
;;
kpresenter)
appname=kpresenter
oldextension=kpr
case "$3" in
ooimpress)
newextension=sxi
newmimetype=application/vnd.sun.xml.impress
;;
*)
printf "Usage: %s {kspread|kword|kpresenter} <file name> {ooimpress}\n" "$0"
exit 1;
esac
;;
*)
printf "Usage: %s {kspread|kword|kpresenter|chalk} <file name> <type of filter>\n" "$0"
exit 1;
esac
test -f "$input" || { echo "No such file $input"; exit 1; }
# Load old native file
appid=`dcopstart $appname $input`
test -n "$appid" || { echo "Error starting $appname!"; exit 1; }
while `dcop $appid Document-0 isLoading` == "true"; do
sleep 1;
done
# Save again (in case of changes in syntax etc.)
origfile=$PWD/regtest-initial.$oldextension
dcop $appid Document-0 saveAs $origfile || exit 1
test -f $origfile || exit 1
# Save to filter extension
tmpfile=$PWD/regtest.$newextension
dcop $appid Document-0 setOutputMimeType $newmimetype || exit 1
dcop $appid Document-0 saveAs $tmpfile || exit 1
test -f $tmpfile || exit 1
dcopquit $appid
# Load resulting filter file, convert to old native format
tmpnativefile=$PWD/regtest-final.$oldextension
appid=`dcopstart $appname $tmpfile`
while `dcop $appid Document-0 isLoading` == "true"; do
sleep 1;
done
dcop $appid Document-0 setOutputMimeType "application/x-$appname" || exit 1
dcop $appid Document-0 saveAs $tmpnativefile || exit 1
test -f $tmpnativefile || exit 1
# Unpack everything
rm -rf regtest-orig
mkdir regtest-orig
rm -rf regtest-final
mkdir regtest-final
cd regtest-orig || exit 1
unzip $origfile || exit 1
cd ..
cd regtest-final || exit 1
unzip $tmpnativefile || exit 1
cd ..
# Compare initial and final "native format" files
diff -urp regtest-orig regtest-final 2>&1 | tee filterdiff | less
echo "For a better diffing mechanism, launch xemacs and paste into a terminal:"
echo "gnudoit '(ediff-files \"$PWD/regtest-orig/maindoc.xml\" \"$PWD/regtest-final/maindoc.xml\")'"