diff --git a/Makefile b/Makefile index c405136..f2b63a5 100644 --- a/Makefile +++ b/Makefile @@ -92,6 +92,14 @@ test_%: dyesub_backend cat regression.csv | grep $(subst test_,,$@) | ./regression.pl 2>&1 |grep FAIL ; \ if [ $$? -eq 0 ] ; then exit 1 ; fi +testgp: dyesub_backend + ./regression-gp.pl < regression-gp.csv 2>&1 |grep FAIL ; \ + if [ $$? -eq 0 ] ; then exit 1 ; fi + +testgp_%: dyesub_backend + ./regression-gp.pl < regression-gp.csv $(subst testgp_,,$@) 2>&1 |grep FAIL ; \ + if [ $$? -eq 0 ] ; then exit 1 ; fi + cppcheck: $(CPPCHECK) -q -v --std=c99 --enable=all --suppress=variableScope --suppress=selfAssignment --suppress=unusedStructMember -I. -I/usr/include -DCORRTABLE_PATH=\"$(BACKEND_DATA_DIR)\" --include=lib70x/libMitsuD70ImageReProcess.h $(CPPFLAGS) $(SOURCES) diff --git a/regression-gp.csv b/regression-gp.csv new file mode 100755 index 0000000..ae46144 --- /dev/null +++ b/regression-gp.csv @@ -0,0 +1,148 @@ +#gp_printername,backend,vid,pid,type,gp_options +# +# The goal here is to cover unique models within gutenprint itself. +# All print sizes need to be covered. +# +canon-cp10,selphycp10,0x04a9,0x304a,,PageSize=w155h244 +# +canon-cp100,selphycp100,0x04a9,0x3063,0x11,PageSize=Postcard +canon-cp100,selphycp100,0x04a9,0x3063,0x22,PageSize=w253h337 +canon-cp100,selphycp100,0x04a9,0x3063,0x33,PageSize=w155h244 +# +canon-cp220,selphycp220,0x04a9,0x30bd,0x11,PageSize=Postcard +canon-cp220,selphycp220,0x04a9,0x30bd,0x22,PageSize=w253h337 +canon-cp220,selphycp220,0x04a9,0x30bd,0x33,PageSize=w155h244 +canon-cp220,selphycp220,0x04a9,0x30bd,0x44,PageSize=w283h566 +# +canon-cp790,selphycp790,0x04a9,0x31e7,0x00,PageSize=Postcard +canon-cp790,selphycp790,0x04a9,0x31e7,0x11,PageSize=w253h337 +canon-cp790,selphycp790,0x04a9,0x31e7,0x22,PageSize=w155h244 +# +canon-cp900,selphycp900,0x04a9,0x3255,0x11,PageSize=Postcard +canon-cp900,selphycp900,0x04a9,0x3255,0x22,PageSize=w253h337 +canon-cp900,selphycp900,0x04a9,0x3255,0x33,PageSize=w155h244 +# +canon-cp820,selphycp820,0x04a9,0x327b,0x1,PageSize=Postcard +canon-cp820,selphycp820,0x04a9,0x327b,0x2,PageSize=w253h337 +canon-cp820,selphycp820,0x04a9,0x327b,0x3,PageSize=w155h244 +# +canon-es1,selphyes1,0x04a9,0x3141,0x1,PageSize=Postcard +canon-es1,selphyes1,0x04a9,0x3141,0x2,PageSize=w253h337 +canon-es1,selphyes1,0x04a9,0x3141,0x3,PageSize=w155h244 +# +canon-es2,selphyes1,0x04a9,0x3185,0x1,PageSize=Postcard +canon-es2,selphyes1,0x04a9,0x3185,0x2,PageSize=w253h337 +canon-es2,selphyes1,0x04a9,0x3185,0x3,PageSize=w155h244 +# +canon-es3,selphyes3,0x04a9,0x31af,0x0,PageSize=Postcard +canon-es3,selphyes3,0x04a9,0x31af,0x0,PageSize=w253h337 +canon-es3,selphyes3,0x04a9,0x31af,0x0,PageSize=w155h244 +# +canon-es40,selphyes40,0x04a9,0x31ee,0x11,PageSize=Postcard +canon-es40,selphyes40,0x04a9,0x31ee,0x22,PageSize=w253h337 +canon-es40,selphyes40,0x04a9,0x31ee,0x33,PageSize=w155h244 +# +kodak-1400,kodak1400,0x040a,0a4022,,PageSize=w612h864;MediaType=Glossy +kodak-1400,kodak1400,0x040a,0a4022,,PageSize=Legal;MediaType=Glossy +kodak-1400,kodak1400,0x040a,0a4022,,PageSize=A4;MediaType=Glossy +kodak-1400,kodak1400,0x040a,0a4022,,PageSize=w612h864;MediaType=Matte +kodak-1400,kodak1400,0x040a,0a4022,,PageSize=Legal;MediaType=Matte +kodak-1400,kodak1400,0x040a,0a4022,,PageSize=A4;MediaType=Matte +# +kodak-805,kodak805,0x040a,0a4034,,PageSize=w612h864 +kodak-805,kodak805,0x040a,0a4034,,PageSize=Legal +# +kodak-6800,kodak6800,0x040a,0x4021,0xb,PageSize=w288h432 +kodak-6800,kodak6800,0x040a,0x4021,0xb,PageSize=w432h576 +kodak-6850,kodak6850,0x040a,0x402b,0xb,PageSize=w288h432 +kodak-6850,kodak6850,0x040a,0x402b,0xb,PageSize=w432h576 +kodak-6850,kodak6850,0x040a,0x402b,0x3,PageSize=w360h504 +# +kodak-605,kodak605,0x040a,0x402e,0xb,PageSize=w288h432 +kodak-605,kodak605,0x040a,0x402e,0xb,PageSize=w432h576 +kodak-605,kodak605,0x040a,0x402e,0x3,PageSize=w360h504 +# +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=w288h576 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=w360h576 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=w432h576 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=w576h576 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=w576h576-div2 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=c8x10 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=c8x10-div2 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=c8x10-w576h432_w576h288 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,1,PageSize=w576h864 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,1,PageSize=w576h864-div2 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,1,PageSize=w576h864-div3 +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=c8x10;StpLamination=Glossy +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=c8x10;StpLamination=GlossyFine +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=c8x10;StpLamination=Matte +shinko-chcs1245,shinkos1245,0x10ce,0x0007,0,PageSize=c8x10;StpLamination=MatteFine +# +shinko-chcs2145,shinkos2145,0x10ce,0x000e,0,PageSize=w144h432 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,0,PageSize=w288h432 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,1,PageSize=w288h432-div2 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,6,PageSize=w432h576 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,6,PageSize=w432h576-div2 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,5,PageSize=w432h648 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,1,PageSize=B7 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,3,PageSize=w360h504 +shinko-chcs2145,shinkos2145,0x10ce,0x000e,3,PageSize=w360h504;StpLaminate=ExtraGlossy +shinko-chcs2145,shinkos2145,0x10ce,0x000e,3,PageSize=w360h504;StpLaminate=ExtraGlossyFine +shinko-chcs2145,shinkos2145,0x10ce,0x000e,3,PageSize=w360h504;StpLaminate=Glossy +shinko-chcs2145,shinkos2145,0x10ce,0x000e,3,PageSize=w360h504;StpLaminate=GlossyFine +shinko-chcs2145,shinkos2145,0x10ce,0x000e,3,PageSize=w360h504;StpLaminate=Matte +shinko-chcs2145,shinkos2145,0x10ce,0x000e,3,PageSize=w360h504;StpLaminate=MatteFine +# +shinko-chcs6145,shinkos6145,0x10ce,0x0019,1,PageSize=w144h432 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,1,PageSize=w288h432 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,4,PageSize=w288h432 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,1,PageSize=w288h432-div2 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,4,PageSize=w432h432 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,4,PageSize=w432h576 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,4,PageSize=w432h576-w432h432_w432h144 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,4,PageSize=w432h576-div2 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,5,PageSize=w432h648 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,3,PageSize=w360h360 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,3,PageSize=w360h504 +shinko-chcs6145,shinkos6145,0x10ce,0x0019,3,PageSize=w360h504;StpLamination=None +shinko-chcs6145,shinkos6145,0x10ce,0x0019,3,PageSize=w360h504;StpLamination=Glossy +shinko-chcs6145,shinkos6145,0x10ce,0x0019,3,PageSize=w360h504;StpLamination=Matte +# +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=w288h576 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=w360h576 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=w432h576 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=w576h576 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=w576h576-div2 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=c8x10 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=c8x10-div2 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x12,PageSize=w576h864 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x12,PageSize=w576h864-div2 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x12,PageSize=w576h864-div3 +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=c8x10;StpLamination=Glossy +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=c8x10;StpLamination=Matte +shinko-chcs6245,shinkos6245,0x10ce,0x001d,0x11,PageSize=c8x10;StpLamination=None +# +sony-updr150,sonyupdr150,0x054c,0x01e8,,PageSize=w288h432 +sony-updr150,sonyupdr150,0x054c,0x01e8,,PageSize=w432h576 +sony-updr150,sonyupdr150,0x054c,0x01e8,,PageSize=B7 +sony-updr150,sonyupdr150,0x054c,0x01e8,,PageSize=w360h504 +sony-upcr10l,sonyupcr10,0x054c,0x0226,,PageSize=w288h432 +sony-upcr10l,sonyupcr10,0x054c,0x0226,,PageSize=B7 +sony-upcr10l,sonyupcr10,0x054c,0x0226,,PageSize=w260h504 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=w288h432 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=w288h432-div2 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=w432h576 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=w432h576-div2 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=B7 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=w360h504 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=w360h504-div2 +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=B7,StpLaminate=Glossy +sony-updr200,sonyupdr200,0x054c,0x035f,,PageSize=B7,StpLaminate=Matte +# +# mitsup95, miusu70x, dnpds40, miusu9xxx, magicard +# +mitsubishi-p93d,miusup93d,0x06d3,0x0398,,PageSize=w213h284 +mitsubishi-p93d,miusup93d,0x06d3,0x0398,,PageSize=w227h284 +mitsubishi-p93d,miusup93d,0x06d3,0x0398,,PageSize=w284h284 +mitsubishi-p93d,miusup93d,0x06d3,0x0398,,PageSize=w284h426 +mitsubishi-p93d,miusup93d,0x06d3,0x0398,,PageSize=w284h1277 diff --git a/regression-gp.pl b/regression-gp.pl new file mode 100755 index 0000000..ae383ca --- /dev/null +++ b/regression-gp.pl @@ -0,0 +1,76 @@ +#!/usr/bin/perl +use strict; +use IPC::Run qw( run ); + +my $retval = 0; + +my $id = 123; +my $user = "tester"; +my $title = "image_test"; +my $copies = 1; +my $input_image = "testjobs/s3s-59.png"; + +$ENV{"STP_SUPPRESS_VERBOSE_MESSAGES"} = 1; +$ENV{"OMP_NUM_THREADS"} = 1; +$ENV{"TEST_MODE"} = "2"; + +while () { + chomp; + next if /^#/; + s/(.+)#.*/$1/; + + if (defined($ARGV[0])) { + next if (index($_,$ARGV[0]) == -1); + }; + + my @row = split(/,/); + + my $gp_name = $row[0]; + $ENV{"BACKEND"} = $row[1]; + $ENV{"EXTRA_VID"} = $row[2]; + $ENV{"EXTRA_PID"} = $row[3]; + + if (length($row[4])) { + $ENV{"MEDIA_CODE"} = $row[4]; + } else { + undef($ENV{"MEDIA_CODE"}); + } + + my $options = ""; + + my @gp_options = split(/;/,$row[5]); + # generate options list + foreach my $x (@gp_options) { + $options .= "$x "; + } + + print "***** $row[0] $row[1] $row[2] $row[3] $row[4] '$row[5]'\n"; + + my @args; + + # Generate PPD + my $ppd_fname = "/tmp/stp-$gp_name.5.3.ppd"; + + $ENV{"PPD"} = $ppd_fname; + $ENV{"DEVICE_URI"} = "gutenprint53+usb://$row[1]/12345678"; + + run ["/usr/sbin/cups-genppd.5.3", "-p", "/tmp", "-Z", $gp_name] or die("FAIL genppd $?: $row[0] $row[1] $row[2] $row[3] $row[4] $row[5]\n"); + + # Generate raster from $image + @args = ("/usr/lib/cups/filter/imagetoraster", $id, $user, $title, $copies, $options, $input_image); + print join(":", @args) . "\n"; + run \@args, ">", "/tmp/${gp_name}.raster" or die ("FAIL: imagetoraster $?: $row[0] $row[1] $row[2] $row[3] $row[4] $row[5]\n"); + + # Call raster2gutenprint + @args = ("valgrind", "/usr/lib/cups/filter/rastertogutenprint.5.3", $id, $user, $title, $copies, $options); + print join(":", @args) . "\n"; + run \@args, "<", "/tmp/${gp_name}.raster", ">", "/tmp/${gp_name}.raw" or die("FAIL: rastertogutenorint $?: $row[0] $row[1] $row[2] $row[3] $row[4] $row[5]\n"); + + # Call backend using CUPS methodologies, using STDIN. + @args = ("./dyesub_backend", $id, $user, $title, $copies, $options); + print join(":", @args) . "\n"; + run \@args, "<", "/tmp/${gp_name}.raw" or die("FAIL: backend $?: $row[0] $row[1] $row[2] $row[3] $row[4] $row[5]\n"); + + print "***** PASS\n"; +} +exit($retval); diff --git a/regression.csv b/regression.csv index 39f0bcc..ce8c12d 100644 --- a/regression.csv +++ b/regression.csv @@ -62,7 +62,7 @@ kodak805,0x040a,0x4034,kodak_805_letter_glossy.raw, # # 'kodak68x0' # -kodak6800,0x040a,0x402b,kodak_68x0_4x6.raw,0xb +kodak6800,0x040a,0x4021,kodak_68x0_4x6.raw,0xb kodak6850,0x040a,0x402b,kodak_68x0_4x6.raw,0xb # # 'kodak605' @@ -76,8 +76,8 @@ shinkos1245,0x10ce,0x0007,shinko_s1245_8x10.raw,0x0 # # 'shinkos2145' # -shinkos2145,0x10ce,0x000e,shinko_s2145_4x6.raw,0x1 -shinkos2145,0x10ce,0x000e,shinko_s2145_4x6.raw,0x5 +shinkos2145,0x10ce,0x000e,shinko_s2145_4x6.raw,0x0 +shinkos2145,0x10ce,0x000e,shinko_s2145_4x6.raw,0x6 # # 'shinkos6145' # @@ -96,8 +96,8 @@ hitip910,0x0d16,0x000e,shinko_s6245_8x10.raw,0x11 #sonyupcr10,0x054c,PID,file_fixme, ### NO USB PID sonyupdr150,0x054c,0x01e8,sony_updr150_4x6.raw, sonyupdr150,0x054c,0x01e8,sony_updr150_8x6.raw, -sonyupdr200,0x054c,0x01e8,sony_updr200_2x6.raw, -sonyupdr200,0x054c,0x01e8,sony_updr200_4x6.raw, +sonyupdr200,0x054c,0x035f,sony_updr200_2x6.raw, +sonyupdr200,0x054c,0x035f,sony_updr200_4x6.raw, #sonyupd895,0x054c,PID,file_fixme, ### NO USB PID #sonyupd897,0x054c,PID,file_fixme, ### NO USB PID #