def calc_mse(image1, image2): h1 = Image.open(image1).histogram() h2 = Image.open(image2).histogram() return math.sqrt(reduce(operator.add, map(lambda a,b: (a-b)**2, h1, h2))/len(h1)) outputdir = tempfile.mkdtemp("-ggplot-test") images = os.listdir(rundir1) images.sort(key=lambda x: os.stat(os.path.join(rundir1, x)).st_mtime) test_results = "" table = [] for img in images: img1 = os.path.join(rundir1, img) img2 = os.path.join(rundir2, img) mse = calc_mse(img1, img2) f = os.path.join(outputdir, img) imgdiff.main([None, img1, img2, "-S", "-o", f]) if mse > 0: broken = "broken-test" else: broken = "" div = """ <div id="%s" class="text-center %s"> <p class="lead">%s - %f</p> <img src='%s' /> <p class="text-muted text-small">%s vs. %s</p> </div><hr>""" % (img, broken, img, mse, f, img1, img2) test_results += div table.append({ 'name': os.path.basename(f), 'mse': mse }) html += "\n" + "<div class='row' style='padding-left: 25%; width: 75%;'>" + pd.DataFrame(table)[['name', 'mse']].to_html(classes='table table-bordered') + "</div>\n" html += test_results
# generate image made from kl bindings klExtTest = os.path.join(os.getcwd(), testNumber, "test.py") if os.path.exists(klExtTest): try: execfile(klExtTest) except Exception, e: print("Exception : {0}".format(e)) failedTests.append(testNumber) continue else: print("[FabricArnold::TestSuite] {0} doesn't exist!".format(testNumber)) failedTests.append(testNumber) continue # run difference test if imgdiff.main(testNumber): print("[FabricArnold::TestSuite] {0} failed!".format(testNumber)) failedTests.append(testNumber) else: print("[FabricArnold::TestSuite] {0} passed!".format(testNumber)) else: # run all the tests for testNumber in os.listdir(os.getcwd()): if os.path.isdir(testNumber): # clean before running if args.clean: refImage = os.path.join(os.getcwd(), testNumber, "reference.jpg") if os.path.exists(refImage): os.remove(refImage)
def main(self, *args): try: imgdiff.main(['imgdiff'] + list(args)) except SystemExit: pass