1# Copyright 2014 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 7import tempfile 8 9from devil.utils import cmd_helper 10from pylib import constants 11from pylib.results import json_results 12 13class JavaTestRunner(object): 14 """Runs java tests on the host.""" 15 16 def __init__(self, args): 17 self._package_filter = args.package_filter 18 self._runner_filter = args.runner_filter 19 self._sdk_version = args.sdk_version 20 self._test_filter = args.test_filter 21 self._test_suite = args.test_suite 22 23 def SetUp(self): 24 pass 25 26 def RunTest(self, _test): 27 """Runs junit tests from |self._test_suite|.""" 28 with tempfile.NamedTemporaryFile() as json_file: 29 java_script = os.path.join( 30 constants.GetOutDirectory(), 'bin', 'helper', self._test_suite) 31 command = [java_script, 32 '-test-jars', self._test_suite + '.jar', 33 '-json-results-file', json_file.name] 34 if self._test_filter: 35 command.extend(['-gtest-filter', self._test_filter]) 36 if self._package_filter: 37 command.extend(['-package-filter', self._package_filter]) 38 if self._runner_filter: 39 command.extend(['-runner-filter', self._runner_filter]) 40 if self._sdk_version: 41 command.extend(['-sdk-version', self._sdk_version]) 42 return_code = cmd_helper.RunCmd(command) 43 results_list = json_results.ParseResultsFromJson( 44 json.loads(json_file.read())) 45 return (results_list, return_code) 46 47 def TearDown(self): 48 pass 49 50