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