gramps/test/impex.sh
Vassilii Khachaturov 62854bb089 7016: new cmdline switches -y/--yes and -q/--quiet
Add to -h output new text about -y and -q

impex.sh switched to use --yes and --quiet

Refactor ArgHandler to reuse User object

ArgHandler now uses user.prompt
No longer custom code duplicating user.prompt functionality

This dropped support for English yes/no and prefixes in the
"OK to overwrite?", as User.prompt allows pressing "Enter"
to accept by default, and everything else except
verbatim accept choice will be treated as reject.

cli.user.User.prompt now supports treating EOF as a reject

prompt message reformatted: added newline after title

Previously, code
	'-q' in ('--qml')
returned True, which was not what ArgParser meant.
Changed the rhs of in to [] from () to avoid this for every case
in ArgParser.parse in the future as well.

Tests run: the new UT added and impex.sh

svn: r22916
2013-08-28 09:24:26 +00:00

103 lines
3.6 KiB
Bash
Executable File

#! /bin/sh
#
# Import/export test for GRAMPS:
# o Import example XML data and create internal Gramps DB
# o Open produced example Gramps DB, then
# * check data for integrity
# * output in all formats
# o Check resulting XML for well-formedness and validate it
# against DTD and RelaxNG schema.
# o Import every exported file produced if the format
# is also supported for import, and run a text summary report.
# o Diff each report with the summary of the produced example DB
# $Id$
TOP_DIR=`dirname $PWD`
TEST_DIR=$TOP_DIR/test
SRC_DIR=$TOP_DIR/gramps
PRG="python ../Gramps.py --yes --quiet"
EXAMPLE_XML=$TOP_DIR/example/gramps/example.gramps
OUT_FMT="csv ged gramps gpkg wft gw vcs vcf"
IN_FMT="csv ged gramps gpkg gw vcf"
DATA_DIR=$TEST_DIR/data
mkdir -p $DATA_DIR
GRAMPSHOME=$DATA_DIR/grampshome
export GRAMPSHOME
echo ""
echo "+--------------------------------------------------------------"
echo "| GRAMPSHOME set to: $GRAMPSHOME "
echo "+--------------------------------------------------------------"
if [ -d $GRAMPSHOME/. ]; then
rm -rf $GRAMPSHOME
fi
echo ""
echo "+--------------------------------------------------------------"
echo "| Import XML, create Gramps DB 'example'"
echo "+--------------------------------------------------------------"
OPTS="-i $EXAMPLE_XML -C example"
(cd $SRC_DIR; $PRG $OPTS)
echo ""
echo "+--------------------------------------------------------------"
echo "| Check the example DB for errors"
echo "+--------------------------------------------------------------"
OPTS="-O example -a tool -p name=check"
(cd $SRC_DIR; $PRG $OPTS)
echo ""
echo "+--------------------------------------------------------------"
echo "| Open the example DB, write all other formats"
echo "+--------------------------------------------------------------"
OPTS="-O example"
for fmt in $OUT_FMT; do
OPTS="$OPTS -e $DATA_DIR/example.$fmt -f $fmt"
done
(cd $SRC_DIR; echo "$PRG $OPTS"; $PRG $OPTS)
echo ""
echo "+--------------------------------------------------------------"
echo "| Validate produced XML"
echo "+--------------------------------------------------------------"
RESULT_GRAMPS=$DATA_DIR/example.gramps
if [ -f $RESULT_GRAMPS ]; then
RESULT_XML=$DATA_DIR/example.xml
gunzip < $RESULT_GRAMPS > $RESULT_XML
else
echo "+--------------------------------------------------------------"
echo "| ERROR: $RESULT_GRAMPS not found"
echo "+--------------------------------------------------------------"
exit 1
fi
echo "* Regular well-formedness and DTD validation"
xmllint --noout --valid $RESULT_XML
echo "* Post-parsing DTD validation"
xmllint --noout --postvalid $RESULT_XML
echo "* Validate against RelaxNG schema"
xmllint --noout --relaxng $TOP_DIR/data/grampsxml.rng $RESULT_XML
echo ""
echo "+----------------------------------------------------------------"
echo "| For each produced format supported for import, generate summary"
echo "+----------------------------------------------------------------"
for fmt in $IN_FMT; do
EXPORTED_DATA=$DATA_DIR/example.$fmt
REPORT_TXT=$EXPORTED_DATA.report.txt
OPTS="-i $EXPORTED_DATA -f $fmt -a report -p name=summary,off=txt,of=$REPORT_TXT"
(cd $SRC_DIR; $PRG $OPTS)
done
echo ""
echo "+--------------------------------------------------------------"
echo "| Compare to the summary of the original database"
echo "+--------------------------------------------------------------"
IMPORTED_REPORT_TXT=$DATA_DIR/example.report.txt
OPTS="-O example -a report -p name=summary,off=txt,of=$IMPORTED_REPORT_TXT"
(cd $SRC_DIR; $PRG $OPTS)
for exported_report_txt in $DATA_DIR/example.*.report.txt; do
diff -u $IMPORTED_REPORT_TXT $exported_report_txt
done