about summary refs log tree commit diff
path: root/test/all-in-place.test
blob: ae67e8095b1b36e8d4532e8aaf8b7b2204892406 (plain) (blame)
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#! /bin/bash
# Tests whether the executable files listed below are in place.

# We test by actually running all the executables.

# See Netpbm Library Prerequisites
# http://netpbm.sourceforge.net/prereq.html
# if make succeeds but this test fails.

function testExitStatus () {

# This function takes 3 positional parameters:
#   $1: filename
#   $2: expected exit status   (In some cases we expect error.)
#   $3: actual exit status

    case $3 in
      $2)  echo $1": ok" ;;
      126) if [ ! -z ${PBM_TESTPREFIX} ] && [ ! -x ${PBM_TESTPREFIX}/$1 ]
             then echo $1": NOT EXECUTABLE";
             else echo $1": ERROR: "$3;    echo $1": error: "$3 1>&2 ;
           fi ;;
      127) if [ ! -z ${PBM_TESTPREFIX} ] && [ ! -f ${PBM_TESTPREFIX}/$1 ]
             then echo $1": NO SUCH FILE";
             else echo $1": ERROR: "$3;    echo $1": error: "$3 1>&2 ;
           fi ;;
      *)   echo $1": ERROR: "$3;    echo $1": error: "$3 1>&2 ;;
    esac
}


# Test programs which support the --version flag.
# See showVersion() in lib/libpm.c for the standard version announcement.

for i in \
  411toppm asciitopgm atktopbm avstopam bioradtopgm \
  bmptopnm bmptoppm brushtopbm cameratopam cistopbm \
  cmuwmtopbm ddbugtopbm escp2topbm eyuvtoppm fitstopnm \
  fstopgm g3topbm gemtopbm gemtopnm giftopnm gouldtoppm \
  hdifftopam hipstopgm icontopbm ilbmtoppm imgtoppm infotopam \
  jbigtopnm jpeg2ktopam jpegtopnm leaftoppm lispmtopgm \
  macptopbm mdatopbm mgrtopbm mrftopbm mtvtoppm neotoppm \
  palmtopnm pamaddnoise pamarith pambackground pambayer \
  pamchannel pamcomp pamcut pamdeinterlace pamdepth \
  pamdice pamditherbw pamedge pamendian pamenlarge \
  pamexec pamfile pamfixtrunc pamflip pamfunc pamgauss \
  pamgradient pamlookup pammasksharpen pammixinterlace \
  pammosaicknit pamoil pampaintspill pamperspective pampick \
  pampop9 pamrecolor pamrgbatopng pamrubber pamscale pamseq \
  pamsharpmap pamsharpness pamsistoaglyph pamslice pamsplit \
  pamstack pamstereogram pamstretch pamsumm pamsummcol \
  pamthreshold pamtilt pamtoavs pamtodjvurle pamtofits \
  pamtogif pamtohdiff pamtohtmltbl pamtojpeg2k pamtompfont \
  pamtooctaveimg pamtopam pamtopdbimg pamtopfm pamtopnm \
  pamtosrf pamtosvg pamtotga pamtotiff pamtouil pamtoxvmini \
  pamundice pamwipeout pamx pbmclean pbmlife pbmmake pbmmask \
  pbmminkowski pbmpage pbmpscale pbmreduce pbmtext pbmtextps \
  pbmto10x pbmto4425 pbmtoascii pbmtoatk pbmtobbnbg pbmtocis \
  pbmtocmuwm pbmtodjvurle pbmtoepsi pbmtoepson pbmtoescp2 \
  pbmtog3 pbmtogem pbmtogo pbmtoibm23xx pbmtoicon pbmtolj \
  pbmtoln03 pbmtolps pbmtomacp pbmtomatrixorbital pbmtomda \
  pbmtomgr pbmtomrf pbmtonokia pbmtopgm pbmtopi3 pbmtopk \
  pbmtoplot pbmtoppa pbmtopsg3 pbmtoptx pbmtosunicon \
  pbmtowbmp pbmtoxbm pbmtoybm pbmtozinc pbmupc pc1toppm \
  pcxtoppm pdbimgtopam pfmtopam pgmabel pgmbentley pgmcrater \
  pgmdeshadow pgmedge pgmenhance pgmhist pgmkernel pgmmake \
  pgmmedian pgmminkowski pgmmorphconv pgmnoise pgmnorm \
  pgmoil pgmramp pgmslice pgmtexture pgmtofs pgmtolispm \
  pgmtopbm pgmtopgm pgmtoppm pi1toppm pi3topbm picttoppm \
  pjtoppm pktopbm pngtopam pngtopnm pnmalias pnmarith pnmcat \
  pnmcolormap pnmcomp pnmconvol pnmcrop pnmcut pnmdepth \
  pnmenlarge pnmfile pnmflip pnmgamma pnmhisteq pnmhistmap \
  pnmindex pnminterp pnminvert pnmmercator pnmmontage \
  pnmnlfilt pnmnorm pnmpad pnmpaste pnmpsnr pnmremap \
  pnmrotate pnmscale pnmscalefixed pnmshear pnmsmooth \
  pnmsplit pnmstitch pnmtile pnmtoddif pnmtofiasco pnmtofits \
  pnmtojbig pnmtojpeg pnmtopalm pnmtopclxl pnmtopng pnmtopnm \
  pnmtops pnmtorast pnmtorle pnmtosgi pnmtosir pnmtotiff \
  pnmtotiffcmyk pnmtoxwd ppm3d ppmbrighten ppmchange \
  ppmcie ppmcolormask ppmcolors ppmdcfont ppmddumpfont \
  ppmdim ppmdist ppmdither ppmdmkfont ppmdraw ppmflash \
  ppmforge ppmglobe ppmhist ppmlabel ppmmake ppmmix ppmnorm \
  ppmntsc ppmpat ppmrelief ppmrough ppmshift \
  ppmspread ppmtoacad ppmtoapplevol ppmtoarbtxt ppmtoascii \
  ppmtobmp ppmtoeyuv ppmtogif ppmtoicr ppmtoilbm ppmtojpeg \
  ppmtoleaf ppmtolj ppmtomitsu ppmtompeg ppmtoneo ppmtopcx \
  ppmtopgm ppmtopi1 ppmtopict ppmtopj ppmtopjxl ppmtoppm \
  ppmtopuzz ppmtorgb3 ppmtosixel ppmtospu ppmtoterm ppmtouil \
  ppmtowinicon ppmtoxpm ppmtoyuv ppmtoyuvsplit ppmtv ppmwheel \
  psidtopgm pstopnm qrttoppm rasttopnm rawtopgm rawtoppm \
  rgb3toppm rlatopam rletopnm sbigtopgm sgitopnm sirtopnm \
  sldtoppm spctoppm spottopgm sputoppm srftopam sunicontopnm \
  svgtopam tgatoppm thinkjettopbm tifftopnm wbmptopbm \
  winicontoppm xbmtopbm ximtoppm xpmtoppm xvminitoppm \
  xwdtopnm ybmtopbm yuvsplittoppm yuvtoppm zeisstopnm
  do
    ${PBM_TESTPREFIX}$i --version  2>&1 | \
    egrep -v \
    "(Using libnetpbm|Compiled|(BSD|SYSV|MSDOS|AMIGA) defined|RGB_?ENV=)" \
      1>&2;
    testExitStatus $i 0 ${PIPESTATUS[0]}
  done



# Test fiascotopnm, which has a unique -v flag.

${PBM_TESTPREFIX}fiascotopnm -v 2> /dev/null
    testExitStatus fiascotopnm 2 $?



# Test manweb and pnmmargin, which support --help.

${PBM_TESTPREFIX}manweb --help > /dev/null
    testExitStatus manweb 0 $?

${PBM_TESTPREFIX}pnmmargin --help 2> /dev/null
    testExitStatus pnmmargin 1 $?



# Test anytopnm, pbmtox10bm, pnmnoraw, pnmquant, pnmquantall,
# pnmtoplainpnm, ppmquantall, ppmrainbow, ppmshadow, ppmtomap
# with trivial input.

cat > ${tmpdir}/test.pbm <<EOF
P1
1 1
1
EOF

for i in anytopnm pbmtox10bm pnmnoraw pnmtoplainpnm ppmtomap ppmshadow
  do
    ${PBM_TESTPREFIX}$i ${tmpdir}/test.pbm > /dev/null 2> /dev/null;
    testExitStatus $i 0 $?
  done

for i in pnmquant pnmquantall ppmquant ppmquantall
  do
    ${PBM_TESTPREFIX}$i 2 ${tmpdir}/test.pbm > /dev/null 2> /dev/null;
    testExitStatus $i 0 $?
  done

rm ${tmpdir}/test.pbm

${PBM_TESTPREFIX}ppmrainbow rgb:00/00/00 rgb:ff/ff/ff \
    -tmpdir=${tmpdir} -width=2 -height=2 > /dev/null
    testExitStatus ppmrainbow 0 $?



# Test ppmfade with corrupt input.
# Prevent the creation of output files by setting base to /dev/null.
# Exit status should be 50.

${PBM_TESTPREFIX}ppmfade -f /dev/zero -base /dev/null > /dev/null 2> /dev/null
    testExitStatus ppmfade 50 $?



# We do not test hpcdtoppm.
# This is a stand-in which announces the absence of the real hpcdtoppm.
# TODO: Provide for the case in which the real hpcdtoppm is encountered.

#${PBM_TESTPREFIX}hpcdtoppm 2> /dev/null
#    testExitStatus hpcdtoppm 1 $?