1#!/usr/bin/env python
2#
3# Copyright 2016 Google Inc.
4#
5# Use of this source code is governed by a BSD-style license that can be
6# found in the LICENSE file.
7
8
9import default_flavor
10import os
11
12
13"""Utils for running under Valgrind."""
14
15
16class ValgrindFlavorUtils(default_flavor.DefaultFlavorUtils):
17  def __init__(self, *args, **kwargs):
18    super(ValgrindFlavorUtils, self).__init__(*args, **kwargs)
19    self._suppressions_file = os.path.join(self._bot_info.skia_dir,
20        'tools', 'valgrind.supp')
21
22  def step(self, name, cmd, **kwargs):
23    new_cmd = ['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 = os.path.join(self._bot_info.out_dir,
27                               self._bot_info.configuration, cmd[0])
28    new_cmd.append(path_to_app)
29    new_cmd.extend(cmd[1:])
30    return self._bot_info.run(new_cmd, **kwargs)
31
32