compare_to_expectations_test.py revision b463d5668a498b672b80047f09901981afe513ed
13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#!/usr/bin/python
23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org"""
43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgCopyright 2013 Google Inc.
53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgUse of this source code is governed by a BSD-style license that can be
73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgfound in the LICENSE file.
83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgTest compare_to_expectations.py
103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgTODO(epoger): Create a command to update the expected results (in
123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgself._output_dir_expected) when appropriate.  For now, you should:
133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org1. examine the results in self._output_dir_actual and make sure they are ok
143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org2. rm -rf self._output_dir_expected
153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org3. mv self._output_dir_actual self._output_dir_expected
163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgAlthough, if you're using an SVN checkout, this will blow away .svn directories
173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgwithin self._output_dir_expected, which wouldn't be good...
183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org"""
203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgimport os
223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgimport sys
233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org# Imports from within Skia
253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgimport base_unittest
263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgimport compare_to_expectations
273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgimport results
283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgimport gm_json  # must import results first, so that gm_json will be in sys.path
293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgclass CompareToExpectationsTest(base_unittest.TestCase):
323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  def test_gm(self):
343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    """Process results of a GM run with the Results object."""
353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    results_obj = compare_to_expectations.Results(
363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org        actuals_root=os.path.join(self._input_dir, 'gm-actuals'),
373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org        expected_root=os.path.join(self._input_dir, 'gm-expectations'),
383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org        generated_images_root=self._temp_dir,
393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org        diff_base_url='/static/generated-images')
403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    results_obj.get_timestamp = mock_get_timestamp
413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    gm_json.WriteToFile(
423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org        results_obj.get_packaged_results_of_type(
43            results.KEY__HEADER__RESULTS_ALL),
44        os.path.join(self._output_dir_actual, 'gm.json'))
45
46
47def mock_get_timestamp():
48  """Mock version of Results.get_timestamp() for testing."""
49  return 12345678
50
51
52def main():
53  base_unittest.main(CompareToExpectationsTest)
54
55
56if __name__ == '__main__':
57  main()
58