• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("//bazel:fuzz_target.bzl", "java_fuzz_target_test")
2
3java_binary(
4    name = "ExampleFuzzTests",
5    testonly = True,
6    srcs = glob(["*.java"]),
7    create_executable = False,
8    visibility = [
9        "//src/test/java/com/code_intelligence/jazzer/junit:__pkg__",
10    ],
11    deps = [
12        "//deploy:jazzer",
13        "//deploy:jazzer-api",
14        "//deploy:jazzer-junit",
15        "//examples/junit/src/main/java/com/example:parser",
16        "//examples/junit/src/test/resources:example_seed_corpora",
17        "@maven//:org_junit_jupiter_junit_jupiter_api",
18        "@maven//:org_junit_jupiter_junit_jupiter_params",
19        "@maven//:org_mockito_mockito_core",
20    ],
21)
22
23java_fuzz_target_test(
24    name = "DataFuzzTest",
25    srcs = ["ValidFuzzTests.java"],
26    allowed_findings = ["com.code_intelligence.jazzer.api.FuzzerSecurityIssueMedium"],
27    fuzzer_args = [
28        "-runs=0",
29    ],
30    target_class = "com.example.ValidFuzzTests",
31    target_method = "dataFuzz",
32    verify_crash_reproducer = False,
33    runtime_deps = [
34        ":junit_runtime",
35    ],
36    deps = [
37        "//examples/junit/src/main/java/com/example:parser",
38        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
39        "@maven//:org_junit_jupiter_junit_jupiter_api",
40    ],
41)
42
43java_fuzz_target_test(
44    name = "ByteFuzzTest",
45    srcs = ["ByteFuzzTest.java"],
46    allowed_findings = ["org.opentest4j.AssertionFailedError"],
47    fuzzer_args = [
48        "-runs=0",
49    ],
50    target_class = "com.example.ByteFuzzTest",
51    target_method = "byteFuzz",
52    verify_crash_reproducer = False,
53    runtime_deps = [
54        ":junit_runtime",
55    ],
56    deps = [
57        "//examples/junit/src/main/java/com/example:parser",
58        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
59        "@maven//:org_junit_jupiter_junit_jupiter_api",
60    ],
61)
62
63java_fuzz_target_test(
64    name = "LifecycleFuzzTest",
65    srcs = ["LifecycleFuzzTest.java"],
66    allowed_findings = ["java.io.IOException"],
67    fuzzer_args = [
68        "-runs=0",
69    ],
70    target_class = "com.example.LifecycleFuzzTest",
71    verify_crash_reproducer = False,
72    runtime_deps = [
73        ":junit_runtime",
74    ],
75    deps = [
76        "//examples/junit/src/main/java/com/example:parser",
77        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
78        "@maven//:org_junit_jupiter_junit_jupiter_api",
79    ],
80)
81
82java_fuzz_target_test(
83    name = "KeepGoingFuzzTest",
84    srcs = ["KeepGoingFuzzTest.java"],
85    allowed_findings = ["java.lang.IllegalArgumentException"],
86    expect_crash = False,
87    fuzzer_args = [
88        "--keep_going=3",
89        "-runs=10",
90    ],
91    target_class = "com.example.KeepGoingFuzzTest",
92    runtime_deps = [
93        ":junit_runtime",
94    ],
95    deps = [
96        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
97        "@maven//:org_junit_jupiter_junit_jupiter_api",
98    ],
99)
100
101# Verifies that fuzzer command-line arguments are honored for @FuzzTests.
102java_fuzz_target_test(
103    name = "CommandLineFuzzTest",
104    srcs = ["CommandLineFuzzTest.java"],
105    allowed_findings = ["java.lang.Error"],
106    fuzzer_args = [
107        # Ignore the first two findings.
108        "--ignore=d5e250a5298b81e6,d86371e6d41739ec",
109    ],
110    target_class = "com.example.CommandLineFuzzTest",
111    verify_crash_reproducer = False,
112    runtime_deps = [
113        ":junit_runtime",
114    ],
115    deps = [
116        "//examples/junit/src/main/java/com/example:parser",
117        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
118        "@maven//:org_junit_jupiter_junit_jupiter_api",
119    ],
120)
121
122# Verify that Mockito is properly ignored.
123# Using version 5+ could otherwise introduce cyclic instrumentation.
124java_fuzz_target_test(
125    name = "MockitoFuzzTest",
126    srcs = ["MockitoFuzzTest.java"],
127    fuzzer_args = [
128        "-runs=1",
129    ],
130    tags = ["no-jdk8"],
131    target_class = "com.example.MockitoFuzzTest",
132    verify_crash_reproducer = False,
133    runtime_deps = [
134        ":junit_runtime",
135    ],
136    deps = [
137        "//examples/junit/src/main/java/com/example:parser",
138        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
139        "@maven//:org_junit_jupiter_junit_jupiter_api",
140        "@maven//:org_mockito_mockito_core",
141    ],
142)
143
144java_fuzz_target_test(
145    name = "AutofuzzLifecycleFuzzTest",
146    srcs = ["AutofuzzLifecycleFuzzTest.java"],
147    fuzzer_args = [
148        "-runs=0",
149    ],
150    target_class = "com.example.AutofuzzLifecycleFuzzTest",
151    verify_crash_reproducer = False,
152    runtime_deps = [
153        ":junit_runtime",
154    ],
155    deps = [
156        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
157        "@maven//:org_junit_jupiter_junit_jupiter_api",
158    ],
159)
160
161java_fuzz_target_test(
162    name = "MutatorFuzzTest",
163    srcs = ["MutatorFuzzTest.java"],
164    allowed_findings = ["java.lang.AssertionError"],
165    data = [
166        "//examples/junit/src/test/resources:MutatorFuzzTestInputs",
167    ],
168    env = {
169        "JAZZER_FUZZ": "1",
170    },
171    fuzzer_args = [
172        "--experimental_mutator",
173        "$(rlocationpaths //examples/junit/src/test/resources:MutatorFuzzTestInputs)",
174    ],
175    target_class = "com.example.MutatorFuzzTest",
176    verify_crash_reproducer = False,
177    runtime_deps = [
178        ":junit_runtime",
179    ],
180    deps = [
181        "//src/main/java/com/code_intelligence/jazzer/driver:fuzz_target_runner",
182        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
183        "//src/main/java/com/code_intelligence/jazzer/mutation/annotation",
184        "@maven//:org_junit_jupiter_junit_jupiter_api",
185    ],
186)
187
188java_fuzz_target_test(
189    name = "JavaSeedFuzzTest",
190    srcs = ["JavaSeedFuzzTest.java"],
191    allowed_findings = ["java.lang.Error"],
192    env = {"JAZZER_FUZZ": "1"},
193    fuzzer_args = [
194        "--experimental_mutator",
195    ],
196    target_class = "com.example.JavaSeedFuzzTest",
197    verify_crash_reproducer = False,
198    runtime_deps = [
199        ":junit_runtime",
200    ],
201    deps = [
202        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
203        "//src/main/java/com/code_intelligence/jazzer/mutation/annotation",
204        "@maven//:org_junit_jupiter_junit_jupiter_api",
205        "@maven//:org_junit_jupiter_junit_jupiter_params",
206    ],
207)
208
209java_fuzz_target_test(
210    name = "JavaBinarySeedFuzzTest",
211    srcs = ["JavaBinarySeedFuzzTest.java"],
212    allowed_findings = ["java.lang.Error"],
213    env = {"JAZZER_FUZZ": "1"},
214    target_class = "com.example.JavaBinarySeedFuzzTest",
215    verify_crash_reproducer = False,
216    runtime_deps = [
217        ":junit_runtime",
218    ],
219    deps = [
220        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
221        "@maven//:org_junit_jupiter_junit_jupiter_api",
222        "@maven//:org_junit_jupiter_junit_jupiter_params",
223    ],
224)
225
226java_library(
227    name = "junit_runtime",
228    runtime_deps = [
229        "@maven//:org_junit_jupiter_junit_jupiter_engine",
230        "@maven//:org_junit_platform_junit_platform_launcher",
231    ],
232)
233