1*9c5db199SXin Li# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 3*9c5db199SXin Li# found in the LICENSE file. 4*9c5db199SXin Li 5*9c5db199SXin Liimport logging, os 6*9c5db199SXin Li 7*9c5db199SXin Lifrom autotest_lib.client.bin import test 8*9c5db199SXin Lifrom autotest_lib.client.common_lib import utils 9*9c5db199SXin Li 10*9c5db199SXin Liclass unit_test(test.test): 11*9c5db199SXin Li """ 12*9c5db199SXin Li Unit test should simply subclass this test which handles everything. 13*9c5db199SXin Li """ 14*9c5db199SXin Li version = 1 15*9c5db199SXin Li preserve_srcdir = True 16*9c5db199SXin Li 17*9c5db199SXin Li 18*9c5db199SXin Li def setup(self): 19*9c5db199SXin Li os.chdir(self.srcdir) 20*9c5db199SXin Li utils.make('clean') 21*9c5db199SXin Li utils.make('all') 22*9c5db199SXin Li 23*9c5db199SXin Li self.job.setup_dep(['gtest']) 24*9c5db199SXin Li 25*9c5db199SXin Li def run_once(self): 26*9c5db199SXin Li dep ='gtest' 27*9c5db199SXin Li dep_dir = os.path.join(self.autodir, 'deps', dep) 28*9c5db199SXin Li self.job.install_pkg(dep, 'dep', dep_dir) 29*9c5db199SXin Li 30*9c5db199SXin Li # Run the unit test, gather the results and place the gcda files for 31*9c5db199SXin Li # code coverage in the results directory. 32*9c5db199SXin Li 33*9c5db199SXin Li os.chdir(self.srcdir) 34*9c5db199SXin Li result = utils.run('LD_LIBRARY_PATH=' + dep_dir + 35*9c5db199SXin Li ' GCOV_PREFIX=' + self.resultsdir + 36*9c5db199SXin Li ' GCOV_PREFIX_STRIP=9999 ./unit_test > ' + 37*9c5db199SXin Li self.resultsdir + '/unit_test_result.txt') 38*9c5db199SXin Li logging.debug(result.stderr) 39*9c5db199SXin Li logging.info('result: ' + self.resultsdir + '/unit_test_result.txt') 40*9c5db199SXin Li 41*9c5db199SXin Li def cleanup(self): 42*9c5db199SXin Li # This is a hack - we should only need to copy back the .gcda file but 43*9c5db199SXin Li # we don't know how to access the source on the server. So copy 44*9c5db199SXin Li # everything back. 45*9c5db199SXin Li 46*9c5db199SXin Li os.chdir(self.srcdir) 47*9c5db199SXin Li utils.run('cp * ' + self.resultsdir) 48