# Regression-test suite for the giflib library and tools # All utilities have tests except gifbg, gifcolor, and gifhisto. .SUFFIXES: .gif .rgb # This is what to do by default test: @$(MAKE) --quiet tap | ./tapview tap: @$(MAKE) --quiet tapstream | tee taplog$$$$; echo "1..$$(grep ok taplog$$$$ | wc -l)"; rm taplog$$$$ tapstream: render-regress \ gif2rgb-regress \ gifbuild-regress \ gifclrmp-regress \ gifecho-regress \ giffilter-regress \ giffix-regress \ gifinto-regress \ gifsponge-regress \ giftext-regress \ giftool-regress \ gifwedge-regress rebuild: render-rebuild \ gif2rgb-rebuild \ gifclrmp-rebuild \ gifecho-rebuild \ giffix-rebuild \ gifinto-rebuild \ giftext-rebuild \ gifwedge-rebuild UTILS = .. PICS = ../pic GIF2RGB = ../gif2rgb $(GIF2RGB): @$(MAKE) -C .. gif2rgb GIFS := $(shell ls ../pic/*.gif) # Test decompression and rendering by unpacking images, # converting them to RGB, and comparing that result to a check file. render-regress: $(GIF2RGB) @for test in $(GIFS); \ do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ $(UTILS)/gif2rgb -1 <$${test} | ./cmpdiffer "gif2rgb: test of $${test}" $${stem}.rgb; \ done render-rebuild: $(GIF2RGB) @for test in $(GIFS); do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ echo "Remaking $${stem}.rgb"; \ $(UTILS)/gif2rgb -1 -o $${stem}.rgb $${test}; \ done gif2rgb-regress: $(GIF2RGB) @$(UTILS)/gif2rgb -c 3 -s 100 100 gifgrid.ico gifbuild-regress: @$(UTILS)/gifbuild -d <$(PICS)/treescap.gif | ./tapdiffer "gifbuild: basic sanity check" treescap.ico @$(UTILS)/gifbuild <$(PICS)/sample.ico | $(UTILS)/gifbuild -d > $@.sample-1.ico; $(UTILS)/gifbuild < $@.sample-1.ico | $(UTILS)/gifbuild -d > $@.sample-2.ico; @./tapdiffer <$@.sample-1.ico "gifbuild: Checking idempotency on an icon file." $@.sample-2.ico; rm $@.sample-?.ico @$(UTILS)/gifbuild -d <$(PICS)/fire.gif > $@.fire1.ico @$(UTILS)/gifbuild < $@.fire1.ico > $@.fire2.gif @$(UTILS)/gifbuild -d < $@.fire2.gif > $@.fire2.ico @./tapdiffer <$@.fire1.ico "gifbuild: Checking idempotency on an animation." $@.fire2.ico @rm -f $@.fire1.ico $@.fire2.ico $@.fire2.gif gifclrmp-regress: @for test in $(GIFS); \ do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ if ! $(UTILS)/gifclrmp <$${test} > $@.$${stem}.regress 2>&1; \ then \ echo "not ok - gifclrmap: crashed on $${test}"; \ else \ ./tapdiffer <$@.$${stem}.regress "gifclrmap: Checking colormap of $${test}" $${stem}.map; \ fi \ done @rm -f $@.*.regress gifclrmp-rebuild: @for test in $(GIFS); do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ echo "Remaking $${stem}.map"; \ $(UTILS)/gifclrmp <$${test} >$${stem}.map; \ done gifecho-rebuild: @echo "Rebuilding gifecho test." @$(UTILS)/gifecho -t "foobar" | $(UTILS)/gifbuild -d >foobar.ico gifecho-regress: @$(UTILS)/gifecho -t "foobar" | $(UTILS)/gifbuild -d | ./tapdiffer "gifecho: Testing gifecho behavior" foobar.ico giffilter-regress: $(GIF2RGB) @for test in $(GIFS); \ do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ $(UTILS)/giffilter <$${test} | $(UTILS)/gif2rgb | ./cmpdiffer "giffiltr: copy of $${test}" "$${stem}.rgb"; \ done giffix-rebuild: @echo "Rebuilding giffix test." @head --bytes=-20 <$(PICS)/treescap.gif | $(UTILS)/giffix 2>/dev/null | $(UTILS)/gifbuild -d >giffixed.ico giffix-regress: @head --bytes=-20 <$(PICS)/treescap.gif | $(UTILS)/giffix 2>/dev/null | $(UTILS)/gifbuild -d | ./tapdiffer "giffix: Testing giffix behavior" giffixed.ico gifinto-regress: @rm -f $@.giflib.tmp @$(UTILS)/gifinto <$(PICS)/porsche.gif $@.giflib.tmp @if test ! -f $@.giflib.tmp; then echo "not ok - gifinto failed to create a file when it should have."; fi @rm -f $@.giflib.tmp @echo "0123456789" | $(UTILS)/gifinto $@.giflib.tmp 2>/dev/null @if test -f $@.giflib.tmp; \ then \ echo "not ok - gifinto created a file when it shouldn't have."; \ else \ echo "ok - gifinto correctly refrained from file creation."; \ fi @rm -f $@.giflib.tmp gifsponge-regress: $(GIF2RGB) @for test in $(GIFS); \ do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ $(UTILS)/gifsponge <$${test} | $(UTILS)/gif2rgb | ./cmpdiffer "gifsponge: sink of $${test}" $${stem}.rgb; \ done giftext-regress: @for test in $(GIFS); \ do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ $(UTILS)/giftext <$${test} | ./cmpdiffer "text dump of $${test}" $${stem}.dmp; \ done giftext-rebuild: @for test in $(GIFS); do \ stem=`basename $${test} | sed -e "s/.gif$$//"`; \ echo "Remaking $${stem}.dmp"; \ $(UTILS)/giftext <$${test} >$${stem}.dmp; \ done giftool-regress: $(GIF2RGB) @$(UTILS)/giftool <$(PICS)/gifgrid.gif | $(UTILS)/gif2rgb | ./cmpdiffer "giftool: expensive copy via giftool" gifgrid.rgb @$(UTILS)/giftool -i on <$(PICS)/treescap-interlaced.gif | $(UTILS)/gif2rgb | ./cmpdiffer "giftool: deinterlace" treescap.rgb @$(UTILS)/giftool -i off <$(PICS)/treescap.gif | $(UTILS)/gif2rgb | ./cmpdiffer "giftool: interlace" treescap-interlaced.rgb gifwedge-rebuild: @echo "Remaking the gifwedge test." @$(UTILS)/gifwedge >wedge.gif gifwedge-regress: @$(UTILS)/gifwedge | ./cmpdiffer "gifwedge: wedge generation." wedge.gif