19985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org#!/usr/bin/python 29985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 39985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org""" 49985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgCopyright 2014 Google Inc. 59985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 69985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgUse of this source code is governed by a BSD-style license that can be 79985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgfound in the LICENSE file. 89985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 99985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgTest imagepair.py 109985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org""" 119985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 129985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org# System-level imports 139985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgimport shutil 149985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgimport tempfile 159985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgimport unittest 169985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 179985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org# Local imports 189985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgimport imagediffdb 199985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgimport imagepair 209985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 219985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 2254f1ad8bb5bdd2ac2ea7981427abeb193383d449epogerIMG_URL_BASE = ('http://chromium-skia-gm.commondatastorage.googleapis.com/' 2354f1ad8bb5bdd2ac2ea7981427abeb193383d449epoger 'gm/bitmap-64bitMD5/') 249985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 259985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 269985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgclass ImagePairTest(unittest.TestCase): 279985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 289985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org def setUp(self): 2966ed8dc4bfd63e4552a213cb17909f9fbbf59abdepoger self.temp_dir = tempfile.mkdtemp() 309985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org self.maxDiff = None 319985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 329985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org def tearDown(self): 3366ed8dc4bfd63e4552a213cb17909f9fbbf59abdepoger shutil.rmtree(self.temp_dir) 349985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 359985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org def shortDescription(self): 36536b15ffb05a20f3681ed72749a3bc09c5386c10commit-bot@chromium.org """Tells unittest framework to not print docstrings for test cases.""" 379985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org return None 389985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 399985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org def test_endToEnd(self): 40536b15ffb05a20f3681ed72749a3bc09c5386c10commit-bot@chromium.org """Tests ImagePair, using a real ImageDiffDB to download real images. 419985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 429985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org TODO(epoger): Either in addition to or instead of this end-to-end test, 439985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org we should perform some tests using either: 449985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 1. a mock ImageDiffDB, or 459985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 2. a real ImageDiffDB that doesn't hit Google Storage looking for input 469985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org image files (maybe a file:// IMG_URL_BASE) 479985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org """ 489985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # params for each self-test: 499985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # 509985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # inputs: 519985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # 0. imageA_relative_URL 529985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # 1. imageB_relative_URL 539985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # 2. expectations dict 549985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # 3. extra_columns dict 559985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # expected output: 569985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # 4. expected result of ImagePair.as_dict() 579985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org selftests = [ 589985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org [ 599985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # inputs: 609985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'arcofzorro/16206093933823793653.png', 619985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'arcofzorro/16206093933823793653.png', 629985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org None, 639985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org { 649985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'builder': 'MyBuilder', 659985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'test': 'MyTest', 669985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 679985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # expected output: 689985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org { 69536b15ffb05a20f3681ed72749a3bc09c5386c10commit-bot@chromium.org 'extraColumns': { 709985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'builder': 'MyBuilder', 719985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'test': 'MyTest', 729985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 739985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'imageAUrl': 'arcofzorro/16206093933823793653.png', 749985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'imageBUrl': 'arcofzorro/16206093933823793653.png', 759985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'isDifferent': False, 769985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 779985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org ], 789985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 799985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org [ 809985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # inputs: 819985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'arcofzorro/16206093933823793653.png', 829985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'arcofzorro/13786535001616823825.png', 839985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org None, 849985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org None, 859985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # expected output: 869985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org { 879985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'differenceData': { 889985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'maxDiffPerChannel': [255, 255, 247], 899985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'numDifferingPixels': 662, 909985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'percentDifferingPixels': 0.0662, 9154f1ad8bb5bdd2ac2ea7981427abeb193383d449epoger 'perceptualDifference': 0.06620300000000157, 92a1aa5c280662faf0df54865f69449d13b8b0cc65stephana 'diffUrl': 'arcofzorro_16206093933823793653_png_png-vs-' + 93a1aa5c280662faf0df54865f69449d13b8b0cc65stephana 'arcofzorro_13786535001616823825_png_png.png', 942529f2e72cddf87904c8ad4b613942cbef802cfbrmistry 'whiteDiffUrl': 'arcofzorro_16206093933823793653_png_png' + 95a1aa5c280662faf0df54865f69449d13b8b0cc65stephana '-vs-arcofzorro_13786535001616823825_png_png.png', 969985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 979985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'imageAUrl': 'arcofzorro/16206093933823793653.png', 989985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'imageBUrl': 'arcofzorro/13786535001616823825.png', 999985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'isDifferent': True, 1009985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 1019985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org ], 1029985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 1039985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org [ 1049985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # inputs: 1059985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'gradients_degenerate_2pt/10552995703607727960.png', 1069985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'gradients_degenerate_2pt/11198253335583713230.png', 1079985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org { 1089985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'ignoreFailure': True, 1099985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'bugs': [1001, 1002], 1109985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 1119985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org { 1129985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'builder': 'MyBuilder', 1139985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'test': 'MyTest', 1149985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 1159985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org # expected output: 1169985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org { 1179985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'differenceData': { 1189985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'maxDiffPerChannel': [255, 0, 255], 1199985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'numDifferingPixels': 102400, 1209985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'percentDifferingPixels': 100.00, 12116f418080ff6751e15e0193263149412de9c848acommit-bot@chromium.org 'perceptualDifference': 100.00, 122a1aa5c280662faf0df54865f69449d13b8b0cc65stephana 'diffUrl': 'gradients_degenerate_2pt_10552995703607727960' + 123a1aa5c280662faf0df54865f69449d13b8b0cc65stephana '_png_png-vs-gradients_degenerate_2pt_' + 124a1aa5c280662faf0df54865f69449d13b8b0cc65stephana '11198253335583713230_png_png.png', 125a1aa5c280662faf0df54865f69449d13b8b0cc65stephana 'whiteDiffUrl': 'gradients_degenerate_2pt_' + 126a1aa5c280662faf0df54865f69449d13b8b0cc65stephana '10552995703607727960_png_png-vs-' + 127a1aa5c280662faf0df54865f69449d13b8b0cc65stephana 'gradients_degenerate_2pt_11198253335583713230' + 128a1aa5c280662faf0df54865f69449d13b8b0cc65stephana '_png_png.png' 1299985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 130536b15ffb05a20f3681ed72749a3bc09c5386c10commit-bot@chromium.org 'expectations': { 1319985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'bugs': [1001, 1002], 1329985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'ignoreFailure': True, 1339985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 134536b15ffb05a20f3681ed72749a3bc09c5386c10commit-bot@chromium.org 'extraColumns': { 1359985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'builder': 'MyBuilder', 1369985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'test': 'MyTest', 1379985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 1389985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'imageAUrl': 1399985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'gradients_degenerate_2pt/10552995703607727960.png', 1409985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'imageBUrl': 1419985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'gradients_degenerate_2pt/11198253335583713230.png', 1429985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 'isDifferent': True, 1439985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org }, 1449985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org ], 1456844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 1466844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org # Test fix for http://skbug.com/2368 -- how do we handle an ImagePair 1476844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org # missing one of its images? 1486844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org [ 1496844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org # inputs: 1506844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'arcofzorro/16206093933823793653.png', 1516844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'nonexistentDir/111111.png', 1526844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org { 1536844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'ignoreFailure': True, 1546844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'bugs': [1001, 1002], 1556844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org }, 1566844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org { 1576844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'builder': 'MyBuilder', 1586844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'test': 'MyTest', 1596844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org }, 1606844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org # expected output: 1616844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org { 1626844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'expectations': { 1636844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'bugs': [1001, 1002], 1646844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'ignoreFailure': True, 1656844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org }, 1666844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'extraColumns': { 1676844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'builder': 'MyBuilder', 1686844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'test': 'MyTest', 1696844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org }, 1706844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'imageAUrl': 'arcofzorro/16206093933823793653.png', 1716844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'imageBUrl': 'nonexistentDir/111111.png', 1726844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org 'isDifferent': True, 1736844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org }, 1746844958fffcf9ee19370f47aba8cba909caef4f7commit-bot@chromium.org ], 1753facc7c87d9f81c352c9d37b1b46340b9e745578epoger 1763facc7c87d9f81c352c9d37b1b46340b9e745578epoger # One of the two images is missing, but download_all_images=True so we 1773facc7c87d9f81c352c9d37b1b46340b9e745578epoger # should download it anyway. 1783facc7c87d9f81c352c9d37b1b46340b9e745578epoger [ 1793facc7c87d9f81c352c9d37b1b46340b9e745578epoger # inputs: 1803facc7c87d9f81c352c9d37b1b46340b9e745578epoger None, 1813facc7c87d9f81c352c9d37b1b46340b9e745578epoger 'arcofzorro/13786535001616823825.png', 1823facc7c87d9f81c352c9d37b1b46340b9e745578epoger None, 1833facc7c87d9f81c352c9d37b1b46340b9e745578epoger None, 1843facc7c87d9f81c352c9d37b1b46340b9e745578epoger # expected output: 1853facc7c87d9f81c352c9d37b1b46340b9e745578epoger { 1863facc7c87d9f81c352c9d37b1b46340b9e745578epoger 'imageAUrl': None, 1873facc7c87d9f81c352c9d37b1b46340b9e745578epoger 'imageBUrl': 'arcofzorro/13786535001616823825.png', 1883facc7c87d9f81c352c9d37b1b46340b9e745578epoger 'isDifferent': True, 1893facc7c87d9f81c352c9d37b1b46340b9e745578epoger }, 1903facc7c87d9f81c352c9d37b1b46340b9e745578epoger ], 1913facc7c87d9f81c352c9d37b1b46340b9e745578epoger 1929985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org ] 1939985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 19466ed8dc4bfd63e4552a213cb17909f9fbbf59abdepoger db = imagediffdb.ImageDiffDB(self.temp_dir) 1959985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org for selftest in selftests: 1969985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org image_pair = imagepair.ImagePair( 1979985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org image_diff_db=db, 1982529f2e72cddf87904c8ad4b613942cbef802cfbrmistry imageA_base_url=IMG_URL_BASE, 1992529f2e72cddf87904c8ad4b613942cbef802cfbrmistry imageB_base_url=IMG_URL_BASE, 2009985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org imageA_relative_url=selftest[0], 2019985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org imageB_relative_url=selftest[1], 2029985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org expectations=selftest[2], 2033facc7c87d9f81c352c9d37b1b46340b9e745578epoger extra_columns=selftest[3], 2043facc7c87d9f81c352c9d37b1b46340b9e745578epoger download_all_images=True) 2059985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org self.assertEqual(image_pair.as_dict(), selftest[4]) 2069985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 2079985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 2089985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgdef main(): 2099985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org suite = unittest.TestLoader().loadTestsFromTestCase(ImagePairTest) 2109985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org unittest.TextTestRunner(verbosity=2).run(suite) 2119985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 2129985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org 2139985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.orgif __name__ == '__main__': 2149985ef5ed8c0b5cf3530ccf13c0774c6ef6256ddcommit-bot@chromium.org main() 215