示例#1
0
def make_compare_entry(ifile, device, dpi, band):
    ofile = "%s.%s.%d.%d" % (ifile, device, dpi, band)
    print "creating entry: " + ofile + "...",
    sys.stdout.flush()
    
    gs = gstestgs.Ghostscript()
    gs.log_stdout = gsconf.log_stdout
    gs.log_stderr = gsconf.log_stderr
    gs.command = gsconf.baselinegs
    gs.infile = gsconf.comparefiledir + ifile
    gs.outfile = ofile
    gs.device = device
    gs.dpi = dpi
    gs.band = band

    if not gssum.exists(ofile):
        if gs.process():
	    try:
       	        gssum.add_file(ofile)
                rasterdb.put_file(ofile)
    	        os.unlink(ofile)
    	        print "done."
            except OSError:
                print "no output produced."
        else:
	    print "error."
    else:
	print "exists."
def make_entry(testfile, device, dpi, band, revision, options):
    testfilepath = gsconf.comparefileall + testfile
    if not os.path.exists(testfilepath):
        print options.myself, "cannot find", "\"" + testfilepath + "\""

    outputfile = "%s.%s.%d.%d" % (testfile, device, dpi, band)
    print "update_baseline.py: " + outputfile
    sys.stdout.flush()

    gs = gstestgs.Ghostscript()

    gs.gsroot = gsconf.installtree
    gs.command = gsconf.installtree + "bin/gs"
    if not os.path.exists(gs.command):
        print options.myself, "gs executable does not exist", gs.command
        return

    if gsconf.gs_stdout and gsconf.gs_stderr:
        gs.log_stdout = gsconf.logdir + gsconf.gs_stdout
        gs.log_stderr = gsconf.logdir + gsconf.gs_stderr
    gs.infile = testfilepath
    gs.outfile = outputfile
    gs.device = device
    gs.dpi = dpi
    gs.band = band

    if gs.process():
        update_databases(outputfile,
                         device,
                         dpi,
                         band,
                         revision=revision,
                         options=options)
    else:
        print options.myself, "error from gs.process", testfilepath, device, dpi, band
    def runTest(self):
        if hasattr(self, "skip") and self.skip == 1:
            self.assert_(True)
            return

        outputfile = "%s.%s.%d.%d" % (self.file[string.rindex(self.file, '/') +
                                                1:], self.device, self.dpi,
                                      self.band)

        gs = gstestgs.Ghostscript()

        gs.gsroot = self.gsroot
        gs.device = self.device
        gs.dpi = self.dpi
        gs.band = self.band
        gs.infile = self.file
        gs.outfile = outputfile
        if self.log_stdout:
            gs.log_stdout = self.log_stdout
        if self.log_stderr:
            gs.log_stderr = self.log_stderr

        if gs.process():
            sum = gssum.make_sum(outputfile)
        else:
            sum = ''

        if os.path.exists(outputfile):
            shutil.move(outputfile, gsconf.datadir + "/raster.daily")
#           os.unlink(outputfile)

        if sum and self.track_daily:  # add test result to daily database
            if gsconf.__dict__.has_key("checksumdb") and gsconf.checksumdb:
                dbname = gsconf.dailydir + gsconf.checksumdb  # mhw +".db"
            else:
                dbname = gsconf.get_dailydb_name()
            gssum.add_file(outputfile, dbname=dbname, sum=sum)

        if not sum:
            message = myself + " output file " + outputfile + " was not created for input file: " + self.file
            self.fail(message)
        else:
            if gssum.exists(outputfile, gsconf.baselinedb):
                sum_baseline = gssum.get_sum(outputfile, gsconf.baselinedb)
                message = myself + ' checksum did not match baseline (' + outputfile + ') for input file: ' + self.file
                self.assertEqual(sum, sum_baseline, message)
            else:
                message = myself + " no baseline checksum (" + outputfile + ") for file: " + self.file
                self.fail(message)
    def runTest(self):
        file1 = '%s.%s.%d.%d' % (self.file, self.device, self.dpi, self.band)
        file2 = '%s.%s.%d.%d.pdf' % (self.file, 'pdfwrite', self.dpi,
                                     self.band)
        file3 = '%s.pdfwrite.%s.%d.%d' % (self.file, self.device, self.dpi,
                                          self.band)

        gs = gstestgs.Ghostscript()
        gs.command = self.gs
        gs.dpi = self.dpi
        gs.band = self.band
        gs.infile = self.file
        gs.device = self.device
        if self.log_stdout:
            gs.log_stdout = self.log_stdout
        if self.log_stderr:
            gs.log_stderr = self.log_stderr

# do PostScript->device (pbmraw, pgmraw, ppmraw, pkmraw)

        gs.outfile = file1
        if not gs.process():
            self.fail("non-zero exit code trying to rasterize " + self.file)

# do PostScript->pdfwrite

        gs.device = 'pdfwrite'
        gs.dpi = None
        gs.outfile = file2
        if not gs.process():
            self.fail("non-zero exit code trying to distill " + self.file)

# do PDF->device (pbmraw, pgmraw, ppmraw, pkmraw)

        gs.device = self.device
        gs.dpi = self.dpi
        gs.infile = file2
        gs.outfile = file3
        if not gs.process():
            self.fail("non-zero exit code trying to rasterize " + file2)

# fuzzy compare PostScript->device with PostScript->PDF->device

        ret = fuzzy_compare(file1, file3)
        os.unlink(file1)
        os.unlink(file2)
        os.unlink(file3)
        self.assert_(ret, "fuzzy match failed")
示例#5
0
def make_pdfcompare_entry(dbname, ifile, device, dpi, band):
    ofile = "%s.pdf.%s.%d.%d" % (ifile, device, dpi, band)
    print "creating entry: " + ofile + "...",
    sys.stdout.flush()

    if gssum.exists(ofile, dbname):
        print "exists."
        return

    gs = gstestgs.Ghostscript()

    gs.gsroot = gsconf.gsroot
    gs.log_stdout = gsconf.gs_stdout
    gs.log_stderr = gsconf.gs_stderr
    gs.command = gsconf.headinstallpath

    gs.infile = gsconf.comparefiledir + ifile
    gs.dpi = dpi
    gs.band = band

    # make file->PDF

    tfile = ofile + ".pdf"
    gs.outfile = tfile
    gs.device = 'pdfwrite'
    gs.dpi = None

    if not gs.process():
        print "error."
        return

    gs.infile = tfile
    gs.outfile = ofile
    gs.device = device
    gs.dpi = dpi

    if gs.process():
        try:
            gssum.add_file(ofile, dbname)
            rasterdb.put_file(ofile)
            os.unlink(tfile)
            os.unlink(ofile)
            print "done."
        except OSError:
            print "no output produced."
    else:
        print "error."
    def runTest(self):
        if hasattr(self, "skip") and self.skip:
	    self.assert_(True)
	    return

        file1 = '%s.%s.%d.%d.pdf' % (self.file[string.rindex(self.file, '/') + 1:], 'pdf', self.dpi, self.band)
	file2 = '%s.pdf.%s.%d.%d' % (self.file[string.rindex(self.file, '/') + 1:], self.device, self.dpi, self.band)

	gs = gstestgs.Ghostscript()

	gs.gsroot = self.gsroot
	gs.dpi = self.dpi
	gs.band = self.band
	gs.infile = self.file
	if self.log_stdout:
	    gs.log_stdout = self.log_stdout
	if self.log_stderr:
	    gs.log_stderr = self.log_stderr

	# do file->PDF conversion
	gs.device = 'pdfwrite'
        gs.dpi = None
	gs.outfile = file1
	if not gs.process():
	    self.fail("non-zero exit code trying to create pdf file from " + self.file)

	# do PDF->device (pbmraw, pgmraw, ppmraw, pkmraw)
	gs.device = self.device
        gs.dpi = self.dpi
	gs.infile = file1
	gs.outfile = file2
	if not gs.process():
	    self.fail("non-zero exit code trying to rasterize " + file1)

        if os.path.exists(file1):
            shutil.move(file1, gsconf.datadir+"/raster.daily")
#           os.unlink(file1)
        else:
	    self.fail("output file "+file1+" was not created for input file: " + file1)
            
        if os.path.exists(file2):
            sum = gssum.make_sum(file2)
            if not sum:
                self.fail("no checksum for output file "+file2+" was not created for input file: " + self.file)
            shutil.move(file2, gsconf.datadir+"/raster.daily")
#           os.unlink(file2)
        else:
	    self.fail("output file "+file2+" was not created for input file: " + file2)
	
	# add test result to daily database
	if self.track_daily:
            if gsconf.__dict__.has_key("checksumdb") and gsconf.checksumdb:
                dbname=gsconf.dailydir+gsconf.checksumdb # mhw+".db"
            else:
                dbname=gsconf.get_dailydb_name()
            gssum.add_file(file2, dbname=dbname, sum=sum)

        else:
            outputfile=file2
            if gssum.exists(outputfile,gsconf.baselinedb):
                sum_baseline=gssum.get_sum(outputfile,gsconf.baselinedb)
                message=myself+' checksum did not match baseline (' + outputfile + ') for input file: ' + self.file
                self.assertEqual(sum,sum_baseline,message)
            else:
                message = myself+" no baseline checksum (" + outputfile + ") for file: " + self.file
                self.fail(message)