OLD | NEW |
1 import os | 1 import os |
2 import re | 2 import re |
3 import subprocess | 3 import subprocess |
4 import unittest | 4 import unittest |
5 import sys | 5 import sys |
6 | 6 |
7 import selenium_utilities | 7 import selenium_utilities |
8 import selenium_constants | 8 import selenium_constants |
9 | 9 |
10 class PDiffTest(unittest.TestCase): | 10 class PDiffTest(unittest.TestCase): |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 use_downsample = True | 56 use_downsample = True |
57 elif (opt.startswith("pdiff_edge_ignore_off")): | 57 elif (opt.startswith("pdiff_edge_ignore_off")): |
58 use_edge = False | 58 use_edge = False |
59 elif (opt.startswith("pdiff_edge_threshold")): | 59 elif (opt.startswith("pdiff_edge_threshold")): |
60 edge_threshold = selenium_utilities.GetArgument(opt) | 60 edge_threshold = selenium_utilities.GetArgument(opt) |
61 | 61 |
62 results = [] | 62 results = [] |
63 # Loop over number of screenshots. | 63 # Loop over number of screenshots. |
64 for screenshot_no in range(self.num_screenshots): | 64 for screenshot_no in range(self.num_screenshots): |
65 # Find reference image. | 65 # Find reference image. |
| 66 shotname = self.screenshot_name + str(screenshot_no + 1) |
66 J = os.path.join | 67 J = os.path.join |
67 platform_img_path = J(self.ref_dir, | 68 platform_img_path = J(self.ref_dir, |
68 selenium_constants.PLATFORM_SCREENSHOT_DIR, | 69 selenium_constants.PLATFORM_SCREENSHOT_DIR, |
69 self.screenshot_name + str(screenshot_no + 1) + | 70 shotname + '_reference.png') |
70 '_reference.png') | |
71 reg_img_path = J(self.ref_dir, | 71 reg_img_path = J(self.ref_dir, |
72 selenium_constants.DEFAULT_SCREENSHOT_DIR, | 72 selenium_constants.DEFAULT_SCREENSHOT_DIR, |
73 self.screenshot_name + str(screenshot_no + 1) + | 73 shotname + '_reference.png') |
74 '_reference.png') | |
75 | 74 |
76 if os.path.exists(platform_img_path): | 75 if os.path.exists(platform_img_path): |
77 ref_img_path = platform_img_path | 76 ref_img_path = platform_img_path |
78 elif os.path.exists(reg_img_path): | 77 elif os.path.exists(reg_img_path): |
79 ref_img_path = reg_img_path | 78 ref_img_path = reg_img_path |
80 else: | 79 else: |
81 self.fail('Reference image for ' + self.screenshot_name + ' not found.' | 80 self.fail('Reference image for ' + shotname + ' not found.') |
82 + '\nNeither file exists %s NOR %s' % | |
83 (reg_img_path, platform_img_path)) | |
84 | 81 |
85 # Find generated image. | 82 # Find generated image. |
86 gen_img_path = J(self.gen_dir, self.screenshot_name + | 83 gen_img_path = J(self.gen_dir, shotname + '.png') |
87 str(screenshot_no + 1) + '.png') | 84 diff_img_path = J(self.gen_dir, 'cmp_' + shotname + '.png') |
88 diff_img_path = J(self.gen_dir, 'cmp_' + self.screenshot_name + | |
89 str(screenshot_no + 1) + '.png') | |
90 | 85 |
91 self.assertTrue(os.path.exists(gen_img_path), | 86 self.assertTrue(os.path.exists(gen_img_path), |
92 'Generated screenshot for ' + self.screenshot_name + | 87 'Generated screenshot for ' + shotname + ' not found.\n') |
93 ' not found.\nFile does not exist: %s' % gen_img_path) | |
94 | 88 |
95 # Run perceptual diff | 89 # Run perceptual diff |
96 arguments = [self.pdiff_path, | 90 arguments = [self.pdiff_path, |
97 ref_img_path, | 91 ref_img_path, |
98 gen_img_path, | 92 gen_img_path, |
99 "-output", diff_img_path, | 93 "-output", diff_img_path, |
100 "-fov", "45", | 94 "-fov", "45", |
101 "-alphaThreshold", alpha_threshold, | 95 "-alphaThreshold", alpha_threshold, |
102 # Turn on verbose output for the percetual diff so we | 96 # Turn on verbose output for the percetual diff so we |
103 # can see how far off we are on the threshold. | 97 # can see how far off we are on the threshold. |
(...skipping 15 matching lines...) Expand all Loading... |
119 stderr=subprocess.PIPE) | 113 stderr=subprocess.PIPE) |
120 (pdiff_stdout, pdiff_stderr) = pdiff_pipe.communicate() | 114 (pdiff_stdout, pdiff_stderr) = pdiff_pipe.communicate() |
121 result = pdiff_pipe.returncode | 115 result = pdiff_pipe.returncode |
122 # Find out how many pixels were different by looking at the output. | 116 # Find out how many pixels were different by looking at the output. |
123 pixel_re = re.compile("(\d+) pixels are different", re.DOTALL) | 117 pixel_re = re.compile("(\d+) pixels are different", re.DOTALL) |
124 pixel_match = pixel_re.search(pdiff_stdout) | 118 pixel_match = pixel_re.search(pdiff_stdout) |
125 different_pixels = "0" | 119 different_pixels = "0" |
126 if pixel_match: | 120 if pixel_match: |
127 different_pixels = pixel_match.group(1) | 121 different_pixels = pixel_match.group(1) |
128 | 122 |
129 results += [(gen_img_path, int(different_pixels))] | 123 results += [(shotname, int(different_pixels))] |
130 | 124 |
131 all_tests_passed = True | 125 all_tests_passed = True |
132 msg = "Pixel Threshold is %s. Failing screenshots:\n" % pixel_threshold | 126 msg = "Pixel threshold is %s. Failing screenshots:\n" % pixel_threshold |
133 for path, pixels in results: | 127 for name, pixels in results: |
134 if pixels >= pixel_threshold: | 128 if pixels >= pixel_threshold: |
135 all_tests_passed = False | 129 all_tests_passed = False |
136 msg += " %s, differing by %s\n" % (path, str(pixels)) | 130 msg += " %s, differing by %s\n" % (name, str(pixels)) |
137 | 131 |
138 if not all_tests_passed: | 132 self.assertTrue(all_tests_passed, msg) |
139 self.assertTrue(all_tests_passed, msg) | |
OLD | NEW |