1# Copyright (c) 2015 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
5import json
6import os
7
8import tracing_project
9
10
11import webapp2
12from webapp2 import Route
13
14
15def _RelPathToUnixPath(p):
16  return p.replace(os.sep, '/')
17
18
19class TestListHandler(webapp2.RequestHandler):
20
21  def get(self, *args, **kwargs):  # pylint: disable=unused-argument
22    project = tracing_project.TracingProject()
23    test_relpaths = ['/' + _RelPathToUnixPath(x)
24                     for x in project.FindAllTestModuleRelPaths()]
25
26    tests = {'test_relpaths': test_relpaths}
27    tests_as_json = json.dumps(tests)
28    self.response.content_type = 'application/json'
29    return self.response.write(tests_as_json)
30
31
32class TracingDevServerConfig(object):
33
34  def __init__(self):
35    self.project = tracing_project.TracingProject()
36
37  def GetName(self):
38    return 'tracing'
39
40  def GetRunUnitTestsUrl(self):
41    return '/tracing/tests.html'
42
43  def AddOptionstToArgParseGroup(self, g):
44    g.add_argument('-d', '--data-dir', default=self.project.test_data_path)
45    g.add_argument('-s', '--skp-data-dir', default=self.project.skp_data_path)
46
47  def GetRoutes(self, args):  # pylint: disable=unused-argument
48    return [Route('/tracing/tests', TestListHandler)]
49
50  def GetSourcePaths(self, args):  # pylint: disable=unused-argument
51    return list(self.project.source_paths)
52
53  def GetTestDataPaths(self, args):  # pylint: disable=unused-argument
54    return [
55        ('/tracing/test_data/', os.path.expanduser(args.data_dir)),
56        ('/tracing/skp_data/', os.path.expanduser(args.skp_data_dir)),
57    ]
58