Home | History | Annotate | Download | only in flavor
      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 
      5 
      6 import gn_flavor
      7 
      8 
      9 """Utils for running under Valgrind."""
     10 
     11 
     12 class ValgrindFlavorUtils(gn_flavor.GNFlavorUtils):
     13   def __init__(self, m):
     14     super(ValgrindFlavorUtils, self).__init__(m)
     15     self._suppressions_file = self.m.vars.skia_dir.join(
     16         'tools', 'valgrind.supp')
     17     self._valgrind_cipd_dir = self.m.vars.slave_dir.join('valgrind')
     18     self._valgrind_fake_dir = self._valgrind_cipd_dir
     19     self._valgrind = self._valgrind_fake_dir.join('bin', 'valgrind')
     20     self._lib_dir = self._valgrind_fake_dir.join('lib', 'valgrind')
     21 
     22   def step(self, name, cmd, **kwargs):
     23     new_cmd = [self._valgrind, '--gen-suppressions=all', '--leak-check=full',
     24                '--track-origins=yes', '--error-exitcode=1', '--num-callers=40',
     25                '--suppressions=%s' % self._suppressions_file]
     26     path_to_app = self.out_dir.join(cmd[0])
     27     new_cmd.append(path_to_app)
     28     new_cmd.extend(cmd[1:])
     29     with self.m.env({'VALGRIND_LIB': self._lib_dir}):
     30       return self.m.run(self.m.step, name, cmd=new_cmd, **kwargs)
     31