1*6777b538SAndroid Build Coastguard Worker# Copyright 2015 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker# 5*6777b538SAndroid Build Coastguard Worker# Fuzzing Infrastructure Tests 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Workerimport("//build/config/sanitizers/sanitizers.gni") 8*6777b538SAndroid Build Coastguard Workerimport("//testing/libfuzzer/fuzzer_test.gni") 9*6777b538SAndroid Build Coastguard Workerimport("//testing/test.gni") 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker# Basic smoke tests for fuzzing 12*6777b538SAndroid Build Coastguard Workergroup("tests") { 13*6777b538SAndroid Build Coastguard Worker testonly = true 14*6777b538SAndroid Build Coastguard Worker deps = [ ":fuzztest_tests" ] 15*6777b538SAndroid Build Coastguard Worker if (use_fuzzing_engine && !is_win) { 16*6777b538SAndroid Build Coastguard Worker deps += [ ":libfuzzer_tests" ] 17*6777b538SAndroid Build Coastguard Worker } 18*6777b538SAndroid Build Coastguard Worker} 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker# TODO(crbug.com/906751): Get the tests working on Windows. Disable them for now 21*6777b538SAndroid Build Coastguard Worker# because they cause the Windows clang ToT builder to fail. 22*6777b538SAndroid Build Coastguard Workerif (!is_win) { 23*6777b538SAndroid Build Coastguard Worker test("libfuzzer_tests") { 24*6777b538SAndroid Build Coastguard Worker sources = [ "fuzzer_launcher_test.cc" ] 25*6777b538SAndroid Build Coastguard Worker deps = [ 26*6777b538SAndroid Build Coastguard Worker ":test_config_and_dict", 27*6777b538SAndroid Build Coastguard Worker ":test_config_and_seed_corpus", 28*6777b538SAndroid Build Coastguard Worker ":test_config_and_seed_corpuses", 29*6777b538SAndroid Build Coastguard Worker ":test_config_only", 30*6777b538SAndroid Build Coastguard Worker ":test_dict_from_subdir", 31*6777b538SAndroid Build Coastguard Worker ":test_dict_only", 32*6777b538SAndroid Build Coastguard Worker "//base", 33*6777b538SAndroid Build Coastguard Worker "//testing/gmock", 34*6777b538SAndroid Build Coastguard Worker "//testing/gtest", 35*6777b538SAndroid Build Coastguard Worker "//testing/gtest:gtest_main", 36*6777b538SAndroid Build Coastguard Worker ] 37*6777b538SAndroid Build Coastguard Worker data_deps = [ 38*6777b538SAndroid Build Coastguard Worker ":check_fuzzer_config", 39*6777b538SAndroid Build Coastguard Worker ":check_seed_corpus_archive", 40*6777b538SAndroid Build Coastguard Worker ] 41*6777b538SAndroid Build Coastguard Worker } 42*6777b538SAndroid Build Coastguard Worker} 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Workerfuzzer_test("test_dict_only") { 45*6777b538SAndroid Build Coastguard Worker sources = [ "../fuzzers/empty_fuzzer.cc" ] 46*6777b538SAndroid Build Coastguard Worker dict = "test.dict" 47*6777b538SAndroid Build Coastguard Worker additional_configs = [ "//testing/libfuzzer:no_clusterfuzz" ] 48*6777b538SAndroid Build Coastguard Worker} 49*6777b538SAndroid Build Coastguard Worker 50*6777b538SAndroid Build Coastguard Workerfuzzer_test("test_config_only") { 51*6777b538SAndroid Build Coastguard Worker sources = [ "../fuzzers/empty_fuzzer.cc" ] 52*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ 53*6777b538SAndroid Build Coastguard Worker "some_test_option=test_value", 54*6777b538SAndroid Build Coastguard Worker "max_len=1024", 55*6777b538SAndroid Build Coastguard Worker ] 56*6777b538SAndroid Build Coastguard Worker additional_configs = [ "//testing/libfuzzer:no_clusterfuzz" ] 57*6777b538SAndroid Build Coastguard Worker} 58*6777b538SAndroid Build Coastguard Worker 59*6777b538SAndroid Build Coastguard Workerfuzzer_test("test_config_and_dict") { 60*6777b538SAndroid Build Coastguard Worker sources = [ "../fuzzers/empty_fuzzer.cc" ] 61*6777b538SAndroid Build Coastguard Worker dict = "test.dict" 62*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ 63*6777b538SAndroid Build Coastguard Worker "max_len=random(1337, 31337)", 64*6777b538SAndroid Build Coastguard Worker "timeout = 666", 65*6777b538SAndroid Build Coastguard Worker "use_traces=1", 66*6777b538SAndroid Build Coastguard Worker ] 67*6777b538SAndroid Build Coastguard Worker additional_configs = [ "//testing/libfuzzer:no_clusterfuzz" ] 68*6777b538SAndroid Build Coastguard Worker} 69*6777b538SAndroid Build Coastguard Worker 70*6777b538SAndroid Build Coastguard Workerfuzzer_test("test_config_and_seed_corpus") { 71*6777b538SAndroid Build Coastguard Worker sources = [ "../fuzzers/empty_fuzzer.cc" ] 72*6777b538SAndroid Build Coastguard Worker seed_corpus = "test_corpus" 73*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ 74*6777b538SAndroid Build Coastguard Worker "some_test_option=test_value", 75*6777b538SAndroid Build Coastguard Worker "max_len=1024", 76*6777b538SAndroid Build Coastguard Worker ] 77*6777b538SAndroid Build Coastguard Worker additional_configs = [ "//testing/libfuzzer:no_clusterfuzz" ] 78*6777b538SAndroid Build Coastguard Worker} 79*6777b538SAndroid Build Coastguard Worker 80*6777b538SAndroid Build Coastguard Workerfuzzer_test("test_config_and_seed_corpuses") { 81*6777b538SAndroid Build Coastguard Worker sources = [ "../fuzzers/empty_fuzzer.cc" ] 82*6777b538SAndroid Build Coastguard Worker seed_corpuses = [ 83*6777b538SAndroid Build Coastguard Worker "test_corpus", 84*6777b538SAndroid Build Coastguard Worker "test_corpus_2", 85*6777b538SAndroid Build Coastguard Worker ] 86*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ 87*6777b538SAndroid Build Coastguard Worker "some_test_option=another_test_value", 88*6777b538SAndroid Build Coastguard Worker "max_len=1337", 89*6777b538SAndroid Build Coastguard Worker ] 90*6777b538SAndroid Build Coastguard Worker additional_configs = [ "//testing/libfuzzer:no_clusterfuzz" ] 91*6777b538SAndroid Build Coastguard Worker} 92*6777b538SAndroid Build Coastguard Worker 93*6777b538SAndroid Build Coastguard Workerfuzzer_test("test_dict_from_subdir") { 94*6777b538SAndroid Build Coastguard Worker sources = [ "../fuzzers/empty_fuzzer.cc" ] 95*6777b538SAndroid Build Coastguard Worker dict = "dicts_subdir/test_subdir.dict" 96*6777b538SAndroid Build Coastguard Worker additional_configs = [ "//testing/libfuzzer:no_clusterfuzz" ] 97*6777b538SAndroid Build Coastguard Worker} 98*6777b538SAndroid Build Coastguard Worker 99*6777b538SAndroid Build Coastguard Workercopy("check_fuzzer_config") { 100*6777b538SAndroid Build Coastguard Worker sources = [ "check_fuzzer_config.py" ] 101*6777b538SAndroid Build Coastguard Worker outputs = [ "$root_build_dir/check_fuzzer_config.py" ] 102*6777b538SAndroid Build Coastguard Worker} 103*6777b538SAndroid Build Coastguard Worker 104*6777b538SAndroid Build Coastguard Workercopy("check_seed_corpus_archive") { 105*6777b538SAndroid Build Coastguard Worker sources = [ "check_seed_corpus_archive.py" ] 106*6777b538SAndroid Build Coastguard Worker outputs = [ "$root_build_dir/check_seed_corpus_archive.py" ] 107*6777b538SAndroid Build Coastguard Worker} 108*6777b538SAndroid Build Coastguard Worker 109*6777b538SAndroid Build Coastguard Worker# The most basic smoketest for FUZZ_TEST macros. 110*6777b538SAndroid Build Coastguard Worker# The main purpose is to ensure that this builds in all configurations: 111*6777b538SAndroid Build Coastguard Worker# * on regular builders, this will produce a unit test executable 112*6777b538SAndroid Build Coastguard Worker# * on ASAN builders, this will produce a unit test executable which 113*6777b538SAndroid Build Coastguard Worker# additionally has sancov instrumentation to support --fuzz= 114*6777b538SAndroid Build Coastguard Worker# arguments 115*6777b538SAndroid Build Coastguard Worker# * on libfuzzer and centipede builders this will enable different 116*6777b538SAndroid Build Coastguard Worker# options again. 117*6777b538SAndroid Build Coastguard Workertest("fuzztest_tests") { 118*6777b538SAndroid Build Coastguard Worker fuzztests = [ "FuzzTestSmokeTest.StringsAlwaysOccupyPositiveSpace" ] 119*6777b538SAndroid Build Coastguard Worker deps = [ "//third_party/fuzztest:fuzztest_gtest_main" ] 120*6777b538SAndroid Build Coastguard Worker sources = [ "fuzztest_smoketest.cc" ] 121*6777b538SAndroid Build Coastguard Worker} 122