summaryrefslogtreecommitdiff
path: root/Build/source/libs/potrace/potrace-src/check/postscript-check.sh
blob: 82d31f96c3771930bbab8f3fd0627754dc601b88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#! /bin/sh

# Copyright (C) 2001-2019 Peter Selinger.
# This file is part of Potrace. It is free software and it is covered
# by the GNU General Public License. See the file COPYING for details.

# If ghostscript is present, we attempt to render the postscript
# output and check it for accuracy.

if test -z "$srcdir"; then
    srcdir=.
fi

. "$srcdir/missing.sh"

GS=`my_which ghostscript`
if test -z "$GS"; then
    GS=`my_which gs`
fi
if test -z "$GS"; then
    echo "Don't have ghostscript, skipping PostScript test." >& 2
    exit 77
fi

echo "Checking PostScript output..." >& 2

NAME=`basename "$0"`

POTRACE="${CHECK_POTRACE:-../src/potrace$EXEEXT --progress}"
DATADIR="$srcdir/data"
PGMDIFF="./pgmdiff$EXEEXT"
TMPDIR="${TEMPDIR:-/tmp}"
TMP1=`mktemp "$TMPDIR/$NAME-1.XXXXXX"`
TMP2=`mktemp "$TMPDIR/$NAME-2.XXXXXX"`
DATA="$DATADIR/data1.pbm"
REFDATA="$DATADIR/data1.pbm.gs"
REFDATAROT="$DATADIR/data1.pbm.rot"

# run the command, expecting return value 0
action () {
    "$@"
    if test $? -ne 0; then
	echo "$NAME: test failed" >& 2
	echo "Failed command: $LINE: $@" >& 2
	exit 1
    fi
}

actiondiff () {
    D=`action "$PGMDIFF" "$1" "$2"`
    # check return value because subshell can't exit
    if test $? -ne 0; then 
	exit 1; 
    fi
    echo "Difference: $D" >& 2
    if test "$D" -gt "$3"; then
	echo "$NAME: test failed" >& 2
	echo "Failed command: $LINE: $PGMDIFF $1 $2" >& 2
	exit 1;
    fi
}

# keep track of line numbers
alias action="LINE=\$LINENO; action"
alias actiondiff="LINE=\$LINENO; actiondiff"

action $POTRACE -r50 -p -L 0 -B 0 -o "$TMP1" "$DATA"
"$GS" -q -dNOPAUSE -sDEVICE=pbmraw -g460x394 -r100x100 -sOutputFile="$TMP2" -- "$TMP1"
if test $? -ne 0; then
    echo "Something is wrong with $GS; skipping this test" >& 2
    exit 77
fi 
actiondiff "$TMP2" "$REFDATA" 2000

action $POTRACE -r50 -p -L 0 -B 0 --opaque -o "$TMP1" "$DATA"
action "$GS" -q -dNOPAUSE -sDEVICE=pbmraw -g460x394 -r100x100 -sOutputFile="$TMP2" -- "$TMP1"
actiondiff "$TMP2" "$REFDATA" 2000

action $POTRACE -r50 -p -L 0 -B 0 -A 160 -o "$TMP1" "$DATA"
action "$GS" -q -dNOPAUSE -sDEVICE=pbmraw -g568x528 -r100x100 -sOutputFile="$TMP2" -- "$TMP1"
actiondiff "$TMP2" "$REFDATAROT" 2000

action rm -f "$TMP1"
action rm -f "$TMP2"

echo "$NAME: test succeeded" >& 2
exit 0