#! /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 < /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 $?