X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftstmarc.sh;h=90adf1bae1e61f7da460b42c6ca1fbdf07282959;hp=97b1ab4c2cf361a5068121affd65e9886a7cd9b1;hb=d36517ad4b5054144bfcddf221c546cb61af9ea0;hpb=8233c05994729938fdfe9ac5865094a44be9fdfb diff --git a/test/tstmarc.sh b/test/tstmarc.sh index 97b1ab4..90adf1b 100755 --- a/test/tstmarc.sh +++ b/test/tstmarc.sh @@ -1,38 +1,108 @@ #!/bin/sh -# $Id: tstmarc.sh,v 1.2 2004-11-16 17:12:28 adam Exp $ +# Tests reading of ISO2709 and checks that we get identical MARCXML +# +# Reads marc?.marc files , Generates marc*.xml files +# If Libxml2 is present, also turbomarc*xml. +# as well as reverse transformation from *marc*.xml files are parsed again.. +# srcdir=${srcdir:-.} ecode=0 -for f in ${srcdir}/marc?; do - NEW=`basename ${f}`.new.xml - OLD=${f}.xml - DIFF=`basename ${f}`.diff - ../util/yaz-marcdump -f iso-8859-1 -t utf-8 -X $f > $NEW - if test $? != "0"; then - echo "Failed decode of $f" - ecode=1 - elif test -f $OLD; then - if diff $OLD $NEW >$DIFF; then - rm $DIFF - rm $NEW - else - echo "Differ in $f" - ecode=1 - fi - else - echo "Making test $f for the first time" - if test -x /usr/bin/xmllint; then - if xmllint --noout $NEW >out 2>stderr; then - echo "XML for $f is OK" - mv $NEW $OLD - else - echo "XML for $f is invalid" - ecode=1 - fi - else - echo "xmllint not found. install libxml2-utils" - ecode=1 - fi - fi -done + +../util/yaz-marcdump -i marcxml >/dev/null 2>&1 +if test $? = "3"; then + noxml=1 +fi + +binmarc_convert() { + OUTPUT_FORMAT="$1" + REVERT_FORMAT="$2" + PREFIX="$3" + for f in ${srcdir}/marc[0-9].marc; do + fb=`basename ${f} .marc` + CHR=`cat ${srcdir}/${fb}.chr` + NEW=${PREFIX}${fb}.new.xml + OLD=${srcdir}/${PREFIX}${fb}.xml + DIFF=`basename ${f}`.diff + #echo "../util/yaz-marcdump -f $CHR -t utf-8 -i marc -o ${OUTPUT_FORMAT} $f > $NEW" + ../util/yaz-marcdump -f $CHR -t utf-8 -i marc -o ${OUTPUT_FORMAT} $f > $NEW + if test $? != "0"; then + echo "$f: yaz-marcdump returned error" + ecode=1 + elif test -f $OLD; then + if diff $OLD $NEW >$DIFF; then + rm $DIFF + rm $NEW + else + echo "$f: $NEW and $OLD differ" + ecode=1 + fi + else + echo "$f: Making test result $OLD for the first time" + if test -x /usr/bin/xmllint; then + if xmllint --noout $NEW >out 2>stderr; then + echo "$f: $NEW is well-formed" + mv $NEW $OLD + else + echo "$f: $NEW not well-formed" + ecode=1 + fi + else + echo "xmllint not found. install libxml2-utils" + ecode=1 + fi + fi + + if test -z "$noxml"; then + ORIGINAL=${f} + f=$OLD + # compare with original (binary) marc record. + OLD=${f}.marc + NEW=`basename ${f}`.new.marc + DIFF=`basename ${f}`.diff + ../util/yaz-marcdump -f utf-8 -t utf-8 -i ${REVERT_FORMAT} -o marc $f > $NEW + if test $? != "0"; then + echo "Failed decode of $f" + ecode=1 + elif test -f $OLD; then +# echo "diff $OLD $NEW " + if diff $OLD $NEW >$DIFF; then + rm $DIFF + rm $NEW + else + echo "$f: $NEW and $OLD Differ" + ecode=1 + fi + else + echo "$f: Making test result $OLD for the first time" + mv $NEW $OLD + fi + # check with original + REVERT=`basename ${f}`.marc.revert + #../util/yaz-marcdump -f utf-8 -t $CHR -i ${REVERT_FORMAT} -o marc $f > $REVERT + #hexdump -cx $REVERT > $REVERT.hex + #hexdump -cx $ORIGINAL > $ORIGINAL.hex + #diff $REVERT.hex $ORIGINAL.hex > $REVERT.diff + fi + done + return $ecode +} + +binmarc_convert "marcxml" "marcxml" "" +echo "binmarc -> marcxml: $?" + +binmarc_convert "xml,marcxml" "marcxml" "xml2" +echo "binmarc -> marcxml(libxml2): $?" + +binmarc_convert "tmarcxml" "tmarcxml" "t" +echo "binmarc -> tmarcxml: $?" + +binmarc_convert "xml,tmarcxml" "tmarcxml" "xml2t" +echo "binmarc -> tmarcxml(libxml2): $?" + exit $ecode +# Local Variables: +# mode:shell-script +# sh-indentation: 2 +# sh-basic-offset: 4 +# End: