xref: /aosp_15_r20/external/cronet/testing/libfuzzer/tests/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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