1*324bb76bSAndroid Build Coastguard Worker# Regression-test suite for the giflib library and tools 2*324bb76bSAndroid Build Coastguard Worker# All utilities have tests except gifbg, gifcolor, and gifhisto. 3*324bb76bSAndroid Build Coastguard Worker 4*324bb76bSAndroid Build Coastguard Worker.SUFFIXES: .gif .rgb 5*324bb76bSAndroid Build Coastguard Worker 6*324bb76bSAndroid Build Coastguard Worker# This is what to do by default 7*324bb76bSAndroid Build Coastguard Workertest: render-regress \ 8*324bb76bSAndroid Build Coastguard Worker gifbuild-regress \ 9*324bb76bSAndroid Build Coastguard Worker gifclrmp-regress \ 10*324bb76bSAndroid Build Coastguard Worker gifecho-regress \ 11*324bb76bSAndroid Build Coastguard Worker giffilter-regress \ 12*324bb76bSAndroid Build Coastguard Worker giffix-regress \ 13*324bb76bSAndroid Build Coastguard Worker gifsponge-regress \ 14*324bb76bSAndroid Build Coastguard Worker giftext-regress \ 15*324bb76bSAndroid Build Coastguard Worker giftool-regress \ 16*324bb76bSAndroid Build Coastguard Worker gifwedge-regress 17*324bb76bSAndroid Build Coastguard Worker @echo "No output is good news" 18*324bb76bSAndroid Build Coastguard Worker 19*324bb76bSAndroid Build Coastguard Workerrebuild: render-rebuild \ 20*324bb76bSAndroid Build Coastguard Worker gif2rgb-rebuild \ 21*324bb76bSAndroid Build Coastguard Worker gifclrmp-rebuild \ 22*324bb76bSAndroid Build Coastguard Worker gifecho-rebuild \ 23*324bb76bSAndroid Build Coastguard Worker giffix-rebuild \ 24*324bb76bSAndroid Build Coastguard Worker giftext-rebuild \ 25*324bb76bSAndroid Build Coastguard Worker gifwedge-rebuild 26*324bb76bSAndroid Build Coastguard Worker 27*324bb76bSAndroid Build Coastguard WorkerUTILS = .. 28*324bb76bSAndroid Build Coastguard WorkerPICS = ../pic 29*324bb76bSAndroid Build Coastguard Worker 30*324bb76bSAndroid Build Coastguard WorkerGIFS := $(shell ls ../pic/*.gif) 31*324bb76bSAndroid Build Coastguard Worker 32*324bb76bSAndroid Build Coastguard Worker# Test decompression and rendering by unpacking images, 33*324bb76bSAndroid Build Coastguard Worker# converting them to RGB, and comparing that result to a check file. 34*324bb76bSAndroid Build Coastguard Workerrender-regress: 35*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); \ 36*324bb76bSAndroid Build Coastguard Worker do \ 37*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 38*324bb76bSAndroid Build Coastguard Worker if echo "Testing RGB rendering of $${test}" >&2; \ 39*324bb76bSAndroid Build Coastguard Worker $(UTILS)/gif2rgb -1 -o $@.$${stem}.regress $${test} 2>&1; \ 40*324bb76bSAndroid Build Coastguard Worker then cmp $${stem}.rgb $@.$${stem}.regress; \ 41*324bb76bSAndroid Build Coastguard Worker else echo "*** Nonzero return status on $${test}!"; exit 1; fi; \ 42*324bb76bSAndroid Build Coastguard Worker done 43*324bb76bSAndroid Build Coastguard Worker @rm -f $@.*.regress 44*324bb76bSAndroid Build Coastguard Workerrender-rebuild: 45*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); do \ 46*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 47*324bb76bSAndroid Build Coastguard Worker echo "Remaking $${stem}.rgb"; \ 48*324bb76bSAndroid Build Coastguard Worker $(UTILS)/gif2rgb -1 -o $${stem}.rgb $${test}; \ 49*324bb76bSAndroid Build Coastguard Worker done 50*324bb76bSAndroid Build Coastguard Worker 51*324bb76bSAndroid Build Coastguard Workergif2rgb-rebuild: 52*324bb76bSAndroid Build Coastguard Worker @echo "Rebuilding gif2rgb checkfile." 53*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gif2rgb -c 3 -s 100 100 <gifgrid.rgb | $(UTILS)/gifbuild -d >gifgrid.ico 54*324bb76bSAndroid Build Coastguard Workergif2rgb-regress: 55*324bb76bSAndroid Build Coastguard Worker @echo "gif2rgb: Checking idempotency" 56*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gif2rgb -c 3 -s 100 100 <gifgrid.rgb | $(UTILS)/gifbuild -d | diff -u gifgrid.ico - 57*324bb76bSAndroid Build Coastguard Worker 58*324bb76bSAndroid Build Coastguard Workergifbuild-regress: 59*324bb76bSAndroid Build Coastguard Worker @echo "gifbuild: basic sanity check" 60*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifbuild -d <$(PICS)/treescap.gif | diff -u treescap.ico - 61*324bb76bSAndroid Build Coastguard Worker @echo "gifbuild: Checking idempotency on an icon file." 62*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifbuild <$(PICS)/sample.ico | $(UTILS)/gifbuild -d > $@.sample-1.ico; $(UTILS)/gifbuild < $@.sample-1.ico | $(UTILS)/gifbuild -d > $@.sample-2.ico; diff -u $@.sample-1.ico $@.sample-2.ico; rm $@.sample-?.ico 63*324bb76bSAndroid Build Coastguard Worker @echo "gifbuild: Checking idempotency on an animation." 64*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifbuild -d <$(PICS)/fire.gif > $@.fire1.ico 65*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifbuild < $@.fire1.ico > $@.fire2.gif 66*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifbuild -d < $@.fire2.gif > $@.fire2.ico 67*324bb76bSAndroid Build Coastguard Worker @diff -u $@.fire1.ico $@.fire2.ico 68*324bb76bSAndroid Build Coastguard Worker @rm -f $@.fire1.ico $@.fire2.ico $@.fire2.gif 69*324bb76bSAndroid Build Coastguard Worker 70*324bb76bSAndroid Build Coastguard Workergifclrmp-regress: 71*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); \ 72*324bb76bSAndroid Build Coastguard Worker do \ 73*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 74*324bb76bSAndroid Build Coastguard Worker if echo "gifclrmap: Checking colormap of $${test}" >&2; \ 75*324bb76bSAndroid Build Coastguard Worker $(UTILS)/gifclrmp <$${test} > $@.$${stem}.regress 2>&1; \ 76*324bb76bSAndroid Build Coastguard Worker then diff -u $${stem}.map $@.$${stem}.regress; \ 77*324bb76bSAndroid Build Coastguard Worker else echo "*** Nonzero return status on $${test}!"; exit 1; fi; \ 78*324bb76bSAndroid Build Coastguard Worker done 79*324bb76bSAndroid Build Coastguard Worker @rm -f $@.*.regress 80*324bb76bSAndroid Build Coastguard Workergifclrmp-rebuild: 81*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); do \ 82*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 83*324bb76bSAndroid Build Coastguard Worker echo "Remaking $${stem}.map"; \ 84*324bb76bSAndroid Build Coastguard Worker $(UTILS)/gifclrmp <$${test} >$${stem}.map; \ 85*324bb76bSAndroid Build Coastguard Worker done 86*324bb76bSAndroid Build Coastguard Worker 87*324bb76bSAndroid Build Coastguard Workergifecho-rebuild: 88*324bb76bSAndroid Build Coastguard Worker @echo "Rebuilding gifecho test." 89*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifecho -t "foobar" | $(UTILS)/gifbuild -d >foobar.ico 90*324bb76bSAndroid Build Coastguard Workergifecho-regress: 91*324bb76bSAndroid Build Coastguard Worker @echo "gifecho: Testing gifecho behavior" 92*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifecho -t "foobar" | $(UTILS)/gifbuild -d | diff -u foobar.ico - 93*324bb76bSAndroid Build Coastguard Worker 94*324bb76bSAndroid Build Coastguard Workergiffilter-regress: 95*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); \ 96*324bb76bSAndroid Build Coastguard Worker do \ 97*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 98*324bb76bSAndroid Build Coastguard Worker if echo "giffiltr: Testing copy of $${test}" >&2; \ 99*324bb76bSAndroid Build Coastguard Worker $(UTILS)/giffilter <$${test} | $(UTILS)/gif2rgb > $@.$${stem}.regress 2>&1; \ 100*324bb76bSAndroid Build Coastguard Worker then cmp $${stem}.rgb $@.$${stem}.regress; \ 101*324bb76bSAndroid Build Coastguard Worker else echo "*** Nonzero return status on $${test}!"; exit 1; fi; \ 102*324bb76bSAndroid Build Coastguard Worker done 103*324bb76bSAndroid Build Coastguard Worker @rm -f $@.*.regress 104*324bb76bSAndroid Build Coastguard Worker 105*324bb76bSAndroid Build Coastguard Workergiffix-rebuild: 106*324bb76bSAndroid Build Coastguard Worker @echo "Rebuilding giffix test." 107*324bb76bSAndroid Build Coastguard Worker @head --bytes=-20 <$(PICS)/treescap.gif | $(UTILS)/giffix 2>/dev/null | $(UTILS)/gifbuild -d >giffixed.ico 108*324bb76bSAndroid Build Coastguard Workergiffix-regress: 109*324bb76bSAndroid Build Coastguard Worker @echo "giffix: Testing giffix behavior" 110*324bb76bSAndroid Build Coastguard Worker @head --bytes=-20 <$(PICS)/treescap.gif | $(UTILS)/giffix 2>/dev/null | $(UTILS)/gifbuild -d | diff -u giffixed.ico - 111*324bb76bSAndroid Build Coastguard Worker 112*324bb76bSAndroid Build Coastguard Workergifinto-regress: 113*324bb76bSAndroid Build Coastguard Worker @echo "gifinto: Checking behavior on short files." 114*324bb76bSAndroid Build Coastguard Worker @rm -f $@.giflib.tmp 115*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifinto <$(PICS)/porsche.gif $@.giflib.tmp 116*324bb76bSAndroid Build Coastguard Worker @if test ! -f $@.giflib.tmp; then echo "gifinto failed to create a file when it should have."; fi 117*324bb76bSAndroid Build Coastguard Worker @rm -f $@.giflib.tmp 118*324bb76bSAndroid Build Coastguard Worker @echo "0123456789" | $(UTILS)/gifinto $@.giflib.tmp 2>/dev/null 119*324bb76bSAndroid Build Coastguard Worker @if test -f $@.giflib.tmp; then echo "gifinto created a file when it shouldn't have."; fi 120*324bb76bSAndroid Build Coastguard Worker @rm -f $@.giflib.tmp 121*324bb76bSAndroid Build Coastguard Worker 122*324bb76bSAndroid Build Coastguard Workergifsponge-regress: 123*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); \ 124*324bb76bSAndroid Build Coastguard Worker do \ 125*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 126*324bb76bSAndroid Build Coastguard Worker if echo "gifsponge: Testing copy of $${test}" >&2; \ 127*324bb76bSAndroid Build Coastguard Worker $(UTILS)/gifsponge <$${test} | $(UTILS)/gif2rgb > $@.$${stem}.regress 2>&1; \ 128*324bb76bSAndroid Build Coastguard Worker then cmp $${stem}.rgb $@.$${stem}.regress; \ 129*324bb76bSAndroid Build Coastguard Worker else echo "*** Nonzero return status on $${test}!"; exit 1; fi; \ 130*324bb76bSAndroid Build Coastguard Worker done 131*324bb76bSAndroid Build Coastguard Worker @rm -f $@.*.regress 132*324bb76bSAndroid Build Coastguard Worker 133*324bb76bSAndroid Build Coastguard Workergiftext-regress: 134*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); \ 135*324bb76bSAndroid Build Coastguard Worker do \ 136*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 137*324bb76bSAndroid Build Coastguard Worker if echo "giftext: Checking text dump of $${test}" >&2; \ 138*324bb76bSAndroid Build Coastguard Worker $(UTILS)/giftext <$${test} > $@.$${stem}.regress 2>&1; \ 139*324bb76bSAndroid Build Coastguard Worker then diff -u $${stem}.dmp $@.$${stem}.regress; \ 140*324bb76bSAndroid Build Coastguard Worker else echo "*** Nonzero return status on $${test}!"; exit 1; fi; \ 141*324bb76bSAndroid Build Coastguard Worker done 142*324bb76bSAndroid Build Coastguard Worker @rm -f $@.*.regress 143*324bb76bSAndroid Build Coastguard Workergiftext-rebuild: 144*324bb76bSAndroid Build Coastguard Worker @for test in $(GIFS); do \ 145*324bb76bSAndroid Build Coastguard Worker stem=`basename $${test} | sed -e "s/.gif$$//"`; \ 146*324bb76bSAndroid Build Coastguard Worker echo "Remaking $${stem}.dmp"; \ 147*324bb76bSAndroid Build Coastguard Worker $(UTILS)/giftext <$${test} >$${stem}.dmp; \ 148*324bb76bSAndroid Build Coastguard Worker done 149*324bb76bSAndroid Build Coastguard Worker 150*324bb76bSAndroid Build Coastguard Workergiftool-regress: 151*324bb76bSAndroid Build Coastguard Worker @echo "giftool: Checking that expensive copy via giftool is faithful." 152*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/giftool <$(PICS)/gifgrid.gif | $(UTILS)/gif2rgb | cmp - gifgrid.rgb 153*324bb76bSAndroid Build Coastguard Worker @echo "giftool: Checking that it de-interlaces correctly." 154*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/giftool -i on <$(PICS)/treescap-interlaced.gif | $(UTILS)/gif2rgb | cmp - treescap.rgb 155*324bb76bSAndroid Build Coastguard Worker @echo "giftool: Checking that it interlaces correctly." 156*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/giftool -i off <$(PICS)/treescap.gif | $(UTILS)/gif2rgb | cmp - treescap-interlaced.rgb 157*324bb76bSAndroid Build Coastguard Worker 158*324bb76bSAndroid Build Coastguard Workergifwedge-rebuild: 159*324bb76bSAndroid Build Coastguard Worker @echo "Remaking the gifwedge test." 160*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifwedge >wedge.gif 161*324bb76bSAndroid Build Coastguard Workergifwedge-regress: 162*324bb76bSAndroid Build Coastguard Worker @echo "gifwedge: Checking wedge generation." 163*324bb76bSAndroid Build Coastguard Worker @$(UTILS)/gifwedge | cmp - wedge.gif 164