1# Copyright 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Request handler to display the debug view for a Failure."""
6
7import jinja2
8import os
9import sys
10import webapp2
11
12from common import ispy_utils
13
14import views
15
16JINJA = jinja2.Environment(
17    loader=jinja2.FileSystemLoader(os.path.dirname(views.__file__)),
18    extensions=['jinja2.ext.autoescape'])
19
20
21class DebugViewHandler(webapp2.RequestHandler):
22  """Request handler to display the debug view for a failure."""
23
24  def get(self):
25    """Handles get requests to the /debug_view page.
26
27    GET Parameters:
28      test_run: The test run.
29      expectation: The expectation name.
30    """
31    test_run = self.request.get('test_run')
32    expectation = self.request.get('expectation')
33    expected_path = ispy_utils.GetExpectationPath(expectation, 'expected.png')
34    actual_path = ispy_utils.GetFailurePath(test_run, expectation, 'actual.png')
35    data = {}
36
37    def _ImagePath(url):
38      return '/image?file_path=%s' % url
39
40    data['expected'] = _ImagePath(expected_path)
41    data['actual'] = _ImagePath(actual_path)
42    data['test_run'] = test_run
43    data['expectation'] = expectation
44    template = JINJA.get_template('debug_view.html')
45    self.response.write(template.render(data))
46