| Index: gm/rebaseline_server/imagepair_test.py
|
| diff --git a/gm/rebaseline_server/imagepair_test.py b/gm/rebaseline_server/imagepair_test.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..fc1f2759e71ed53887c1578a784709976ca2a6ba
|
| --- /dev/null
|
| +++ b/gm/rebaseline_server/imagepair_test.py
|
| @@ -0,0 +1,153 @@
|
| +#!/usr/bin/python
|
| +
|
| +"""
|
| +Copyright 2014 Google Inc.
|
| +
|
| +Use of this source code is governed by a BSD-style license that can be
|
| +found in the LICENSE file.
|
| +
|
| +Test imagepair.py
|
| +"""
|
| +
|
| +# System-level imports
|
| +import shutil
|
| +import tempfile
|
| +import unittest
|
| +
|
| +# Local imports
|
| +import imagediffdb
|
| +import imagepair
|
| +
|
| +
|
| +IMG_URL_BASE = 'http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/'
|
| +
|
| +
|
| +class ImagePairTest(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + self._temp_dir = tempfile.mkdtemp()
|
| + self.maxDiff = None
|
| +
|
| + def tearDown(self):
|
| + shutil.rmtree(self._temp_dir)
|
| +
|
| + def shortDescription(self):
|
| + """Tell unittest framework to not print docstrings for test cases."""
|
| + return None
|
| +
|
| + def test_endToEnd(self):
|
| + """Test ImagePair, using a real ImageDiffDB to download real images.
|
| +
|
| + TODO(epoger): Either in addition to or instead of this end-to-end test,
|
| + we should perform some tests using either:
|
| + 1. a mock ImageDiffDB, or
|
| + 2. a real ImageDiffDB that doesn't hit Google Storage looking for input
|
| + image files (maybe a file:// IMG_URL_BASE)
|
| + """
|
| + # params for each self-test:
|
| + #
|
| + # inputs:
|
| + # 0. imageA_relative_URL
|
| + # 1. imageB_relative_URL
|
| + # 2. expectations dict
|
| + # 3. extra_columns dict
|
| + # expected output:
|
| + # 4. expected result of ImagePair.as_dict()
|
| + selftests = [
|
| + [
|
| + # inputs:
|
| + 'arcofzorro/16206093933823793653.png',
|
| + 'arcofzorro/16206093933823793653.png',
|
| + None,
|
| + {
|
| + 'builder': 'MyBuilder',
|
| + 'test': 'MyTest',
|
| + },
|
| + # expected output:
|
| + {
|
| + 'extraColumnValues': {
|
| + 'builder': 'MyBuilder',
|
| + 'test': 'MyTest',
|
| + },
|
| + 'imageAUrl': 'arcofzorro/16206093933823793653.png',
|
| + 'imageBUrl': 'arcofzorro/16206093933823793653.png',
|
| + 'isDifferent': False,
|
| + },
|
| + ],
|
| +
|
| + [
|
| + # inputs:
|
| + 'arcofzorro/16206093933823793653.png',
|
| + 'arcofzorro/13786535001616823825.png',
|
| + None,
|
| + None,
|
| + # expected output:
|
| + {
|
| + 'differenceData': {
|
| + 'maxDiffPerChannel': [255, 255, 247],
|
| + 'numDifferingPixels': 662,
|
| + 'percentDifferingPixels': 0.0662,
|
| + 'weightedDiffMeasure': 0.01127756555171088,
|
| + },
|
| + 'imageAUrl': 'arcofzorro/16206093933823793653.png',
|
| + 'imageBUrl': 'arcofzorro/13786535001616823825.png',
|
| + 'isDifferent': True,
|
| + },
|
| + ],
|
| +
|
| + [
|
| + # inputs:
|
| + 'gradients_degenerate_2pt/10552995703607727960.png',
|
| + 'gradients_degenerate_2pt/11198253335583713230.png',
|
| + {
|
| + 'ignoreFailure': True,
|
| + 'bugs': [1001, 1002],
|
| + },
|
| + {
|
| + 'builder': 'MyBuilder',
|
| + 'test': 'MyTest',
|
| + },
|
| + # expected output:
|
| + {
|
| + 'differenceData': {
|
| + 'maxDiffPerChannel': [255, 0, 255],
|
| + 'numDifferingPixels': 102400,
|
| + 'percentDifferingPixels': 100.00,
|
| + 'weightedDiffMeasure': 66.66666666666667,
|
| + },
|
| + 'expectationsData': {
|
| + 'bugs': [1001, 1002],
|
| + 'ignoreFailure': True,
|
| + },
|
| + 'extraColumnValues': {
|
| + 'builder': 'MyBuilder',
|
| + 'test': 'MyTest',
|
| + },
|
| + 'imageAUrl':
|
| + 'gradients_degenerate_2pt/10552995703607727960.png',
|
| + 'imageBUrl':
|
| + 'gradients_degenerate_2pt/11198253335583713230.png',
|
| + 'isDifferent': True,
|
| + },
|
| + ],
|
| + ]
|
| +
|
| + db = imagediffdb.ImageDiffDB(self._temp_dir)
|
| + for selftest in selftests:
|
| + image_pair = imagepair.ImagePair(
|
| + image_diff_db=db,
|
| + base_url=IMG_URL_BASE,
|
| + imageA_relative_url=selftest[0],
|
| + imageB_relative_url=selftest[1],
|
| + expectations=selftest[2],
|
| + extra_columns=selftest[3])
|
| + self.assertEqual(image_pair.as_dict(), selftest[4])
|
| +
|
| +
|
| +def main():
|
| + suite = unittest.TestLoader().loadTestsFromTestCase(ImagePairTest)
|
| + unittest.TextTestRunner(verbosity=2).run(suite)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + main()
|
|
|