def test_write_svg_to_png(filename): # If you want to regenerate these, e.g. the svg template has significantly # changed, easiest way is to patch write_svg_to_png to not delete the # temporary file (delete:False in temp_args) and copy the svg out of /tmp. # Output png files are in user-media/version-previews/full and /thumbs. out = tempfile.mktemp() svg_xml = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.svg' % filename) svg_png = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.png' % filename) with storage.open(svg_xml, 'rb') as svgfile: svg = svgfile.read() write_svg_to_png(svg, out) assert storage.exists(out) # compare the image content. rms should be 0 but travis renders it # different... 3 is the magic difference. svg_png_img = Image.open(svg_png) svg_out_img = Image.open(out) image_diff = ImageChops.difference(svg_png_img, svg_out_img) sum_of_squares = sum( value * ((idx % 256) ** 2) for idx, value in enumerate(image_diff.histogram())) rms = math.sqrt( sum_of_squares / float(svg_png_img.size[0] * svg_png_img.size[1])) assert rms < 3
def test_write_svg_to_png(filename): # If you want to regenerate these, e.g. the svg template has significantly # changed, you can grab the svg file from shared_storage/tmp - when # settings.DEBUG==True it's not deleted afterwards. # Output png files are in shared_storage/uploads/version-previews/full # and /thumbs. svg_xml = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.svg' % filename) svg_png = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.png' % filename) with storage.open(svg_xml, 'rb') as svgfile: svg = svgfile.read() try: out_dir = tempfile.mkdtemp() out = os.path.join(out_dir, 'a', 'b.png') write_svg_to_png(svg, out) assert storage.exists(out) # compare the image content. rms should be 0 but travis renders it # different... 3 is the magic difference. svg_png_img = Image.open(svg_png) svg_out_img = Image.open(out) image_diff = ImageChops.difference(svg_png_img, svg_out_img) except Exception as e: raise e finally: shutil.rmtree(out_dir) sum_of_squares = sum(value * ((idx % 256)**2) for idx, value in enumerate(image_diff.histogram())) rms = math.sqrt(sum_of_squares / float(svg_png_img.size[0] * svg_png_img.size[1])) assert rms < 3
def test_write_svg_to_png(filename): # If you want to regenerate these, e.g. the svg template has significantly # changed, easiest way is to patch write_svg_to_png to not delete the # temporary file (delete:False in temp_args) and copy the svg out of /tmp. # Output png files are in user-media/version-previews/full and /thumbs. out = tempfile.mktemp() svg_xml = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.svg' % filename) svg_png = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.png' % filename) with storage.open(svg_xml, 'rb') as svgfile: svg = svgfile.read() write_svg_to_png(svg, out) assert storage.exists(out) # compare the image content. rms should be 0 but travis renders it # different... 3 is the magic difference. svg_png_img = Image.open(svg_png) svg_out_img = Image.open(out) image_diff = ImageChops.difference(svg_png_img, svg_out_img) sum_of_squares = sum(value * ((idx % 256)**2) for idx, value in enumerate(image_diff.histogram())) rms = math.sqrt(sum_of_squares / float(svg_png_img.size[0] * svg_png_img.size[1])) assert rms < 3
def test_write_svg_to_png(filename): # If you want to regenerate these, e.g. the svg template has significantly # changed, you can grab the svg file from shared_storage/tmp - when # settings.DEBUG==True it's not deleted afterwards. # Output png files are in shared_storage/uploads/version-previews/full # and /thumbs. svg_xml = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.svg' % filename) svg_png = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/%s.png' % filename) with storage.open(svg_xml, 'rb') as svgfile: svg = svgfile.read() try: out_dir = tempfile.mkdtemp() out = os.path.join(out_dir, 'a', 'b.png') write_svg_to_png(svg, out) assert storage.exists(out) # compare the image content. rms should be 0 but travis renders it # different... 3 is the magic difference. svg_png_img = Image.open(svg_png) svg_out_img = Image.open(out) image_diff = ImageChops.difference(svg_png_img, svg_out_img) except Exception as e: raise e finally: shutil.rmtree(out_dir) sum_of_squares = sum( value * ((idx % 256) ** 2) for idx, value in enumerate(image_diff.histogram())) rms = math.sqrt( sum_of_squares / float(svg_png_img.size[0] * svg_png_img.size[1])) assert rms < 3
def test_write_svg_to_png(): out = tempfile.mktemp() svg_xml = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/weta_theme.svg') svg_png = os.path.join( settings.ROOT, 'src/olympia/versions/tests/static_themes/weta_theme.png') with storage.open(svg_xml, 'rb') as svgfile: svg = svgfile.read() write_svg_to_png(svg, out) assert storage.exists(out) # compare the image content. rms should be 0 but travis renders it # different... 19 is the magic difference. svg_png_img = Image.open(svg_png) svg_out_img = Image.open(out) image_diff = ImageChops.difference(svg_png_img, svg_out_img) sum_of_squares = sum( value * ((idx % 256) ** 2) for idx, value in enumerate(image_diff.histogram())) rms = math.sqrt( sum_of_squares / float(svg_png_img.size[0] * svg_png_img.size[1])) assert rms < 19