| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging, os |
| |
| from autotest_lib.client.bin import test |
| from autotest_lib.client.common_lib import utils |
| |
| class unit_test(test.test): |
| """ |
| Unit test should simply subclass this test which handles everything. |
| """ |
| version = 1 |
| preserve_srcdir = True |
| |
| |
| def setup(self): |
| os.chdir(self.srcdir) |
| utils.make('clean') |
| utils.make('all') |
| |
| self.job.setup_dep(['gtest']) |
| |
| def run_once(self): |
| dep ='gtest' |
| dep_dir = os.path.join(self.autodir, 'deps', dep) |
| self.job.install_pkg(dep, 'dep', dep_dir) |
| |
| # Run the unit test, gather the results and place the gcda files for |
| # code coverage in the results directory. |
| |
| os.chdir(self.srcdir) |
| result = utils.run('LD_LIBRARY_PATH=' + dep_dir + |
| ' GCOV_PREFIX=' + self.resultsdir + |
| ' GCOV_PREFIX_STRIP=9999 ./unit_test > ' + |
| self.resultsdir + '/unit_test_result.txt') |
| logging.debug(result.stderr) |
| logging.info('result: ' + self.resultsdir + '/unit_test_result.txt') |
| |
| def cleanup(self): |
| # This is a hack - we should only need to copy back the .gcda file but |
| # we don't know how to access the source on the server. So copy |
| # everything back. |
| |
| os.chdir(self.srcdir) |
| utils.run('cp * ' + self.resultsdir) |