diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2016-03-30 07:17:34 +0200 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2016-03-30 07:17:34 +0200 |
commit | dbb9dd54184ff6308be0d8ec8075c5f3e55db057 (patch) | |
tree | c6b31cd7c0f5ad38df34cc23352decf2bd026cb4 /tools/buildgen | |
parent | 82a91c91d01ce9b999c8821ed13515883468e203 (diff) | |
parent | 7753119d280dac2106021e85445e5ff4fbc5b6c6 (diff) |
Merge remote-tracking branch 'ctiller/fuzzers-make-good-tests' into memleak_detector
Diffstat (limited to 'tools/buildgen')
-rw-r--r-- | tools/buildgen/plugins/make_fuzzer_tests.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/buildgen/plugins/make_fuzzer_tests.py b/tools/buildgen/plugins/make_fuzzer_tests.py new file mode 100644 index 0000000000..806489bcd2 --- /dev/null +++ b/tools/buildgen/plugins/make_fuzzer_tests.py @@ -0,0 +1,57 @@ +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Create tests for each fuzzer""" + +import copy +import glob + +def mako_plugin(dictionary): + targets = dictionary['targets'] + tests = dictionary['tests'] + for tgt in targets: + if tgt['build'] == 'fuzzer': + new_target = copy.deepcopy(tgt) + new_target['build'] = 'test' + new_target['name'] += '_one_entry' + new_target['run'] = False + new_target['deps'].insert(0, 'one_input_fuzzer') + targets.append(new_target) + for corpus in new_target['corpus_dirs']: + for fn in sorted(glob.glob('%s/*' % corpus)): + tests.append({ + 'name': new_target['name'], + 'args': [fn], + 'exclude_configs': [], + 'platforms': ['linux', 'mac', 'windows', 'posix'], + 'ci_platforms': ['linux', 'mac', 'windows', 'posix'], + 'flaky': False, + 'language': 'c', + 'cpu_cost': 0.1, + }) |