• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("@contrib_rules_jvm//java:defs.bzl", "JUNIT5_DEPS", "java_junit5_test")
2
3java_library(
4    name = "test-method",
5    srcs = ["TestMethod.java"],
6    visibility = ["//src/test/java/com/code_intelligence/jazzer/junit:__pkg__"],
7    deps = [
8        "@maven//:org_junit_platform_junit_platform_engine",
9    ],
10)
11
12java_junit5_test(
13    name = "UtilsTest",
14    size = "small",
15    srcs = ["UtilsTest.java"],
16    deps = JUNIT5_DEPS + [
17        "//src/main/java/com/code_intelligence/jazzer/junit:utils",
18        "@maven//:com_google_truth_extensions_truth_java8_extension",
19        "@maven//:com_google_truth_truth",
20        "@maven//:org_junit_jupiter_junit_jupiter_api",
21        "@maven//:org_junit_jupiter_junit_jupiter_params",
22    ],
23)
24
25java_test(
26    name = "RegressionTestTest",
27    srcs = ["RegressionTestTest.java"],
28    test_class = "com.code_intelligence.jazzer.junit.RegressionTestTest",
29    runtime_deps = [
30        "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
31        "@maven//:org_junit_jupiter_junit_jupiter_engine",
32    ],
33    deps = [
34        "//src/main/java/com/code_intelligence/jazzer/api:hooks",
35        "@maven//:com_google_truth_extensions_truth_java8_extension",
36        "@maven//:com_google_truth_truth",
37        "@maven//:junit_junit",
38        "@maven//:org_junit_jupiter_junit_jupiter_api",
39        "@maven//:org_junit_platform_junit_platform_engine",
40        "@maven//:org_junit_platform_junit_platform_testkit",
41        "@maven//:org_opentest4j_opentest4j",
42    ],
43)
44
45[
46    java_test(
47        name = "FuzzingWithCrashTest" + JAZZER_FUZZ,
48        srcs = ["FuzzingWithCrashTest.java"],
49        env = {
50            "JAZZER_FUZZ": JAZZER_FUZZ,
51        },
52        test_class = "com.code_intelligence.jazzer.junit.FuzzingWithCrashTest",
53        runtime_deps = [
54            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
55            "@maven//:org_junit_jupiter_junit_jupiter_engine",
56        ],
57        deps = [
58            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
59            "//src/test/java/com/code_intelligence/jazzer/junit:test-method",
60            "@maven//:com_google_truth_extensions_truth_java8_extension",
61            "@maven//:com_google_truth_truth",
62            "@maven//:junit_junit",
63            "@maven//:org_assertj_assertj_core",
64            "@maven//:org_junit_platform_junit_platform_engine",
65            "@maven//:org_junit_platform_junit_platform_launcher",
66            "@maven//:org_junit_platform_junit_platform_testkit",
67            "@maven//:org_opentest4j_opentest4j",
68        ],
69    )
70    for JAZZER_FUZZ in [
71        "",
72        "_fuzzing",
73    ]
74]
75
76[
77    java_test(
78        name = "FuzzingWithoutCrashTest" + JAZZER_FUZZ,
79        srcs = ["FuzzingWithoutCrashTest.java"],
80        env = {
81            "JAZZER_FUZZ": JAZZER_FUZZ,
82        },
83        test_class = "com.code_intelligence.jazzer.junit.FuzzingWithoutCrashTest",
84        runtime_deps = [
85            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
86            "@maven//:org_junit_jupiter_junit_jupiter_engine",
87        ],
88        deps = [
89            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
90            "@maven//:com_google_truth_extensions_truth_java8_extension",
91            "@maven//:com_google_truth_truth",
92            "@maven//:junit_junit",
93            "@maven//:org_assertj_assertj_core",
94            "@maven//:org_junit_platform_junit_platform_engine",
95            "@maven//:org_junit_platform_junit_platform_testkit",
96            "@maven//:org_opentest4j_opentest4j",
97        ],
98    )
99    for JAZZER_FUZZ in [
100        "",
101        "_fuzzing",
102    ]
103]
104
105[
106    java_test(
107        name = "ValueProfileTest_" + str(JAZZER_VALUE_PROFILE),
108        srcs = ["ValueProfileTest.java"],
109        env = {
110            "JAZZER_FUZZ": "true",
111            "JAZZER_VALUE_PROFILE": str(JAZZER_VALUE_PROFILE),
112        },
113        # The test is both CPU-intensive and sensitive to timing, which causes it to be flaky on
114        # slow runners (particularly macOS on GitHub Actions). Since we need to distinguish the two
115        # test variants by whether they find a finding, we can't just increase the timeout without
116        # the risk to make the other variant flaky.
117        tags = ["exclusive"] if JAZZER_VALUE_PROFILE else [],
118        test_class = "com.code_intelligence.jazzer.junit.ValueProfileTest",
119        runtime_deps = [
120            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
121            "@maven//:org_junit_jupiter_junit_jupiter_engine",
122        ],
123        deps = [
124            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
125            "@maven//:com_google_truth_extensions_truth_java8_extension",
126            "@maven//:com_google_truth_truth",
127            "@maven//:junit_junit",
128            "@maven//:org_junit_platform_junit_platform_engine",
129            "@maven//:org_junit_platform_junit_platform_testkit",
130        ],
131    )
132    for JAZZER_VALUE_PROFILE in [
133        True,
134        False,
135    ]
136]
137
138[
139    java_test(
140        name = "DirectoryInputsTest" + JAZZER_FUZZ,
141        srcs = ["DirectoryInputsTest.java"],
142        args = [
143            # Add a test resource root containing the seed corpus directory in a Maven layout to
144            # the classpath rather than seeds in a resource directory packaged in a JAR, as
145            # would happen if we added the directory to java_test's resources.
146            "--main_advice_classpath=$(rootpath test_resources_root)",
147        ],
148        data = ["test_resources_root"],
149        env = {
150            "JAZZER_FUZZ": JAZZER_FUZZ,
151        },
152        test_class = "com.code_intelligence.jazzer.junit.DirectoryInputsTest",
153        runtime_deps = [
154            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
155            "@maven//:org_junit_jupiter_junit_jupiter_engine",
156        ],
157        deps = [
158            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
159            "@maven//:com_google_truth_extensions_truth_java8_extension",
160            "@maven//:com_google_truth_truth",
161            "@maven//:junit_junit",
162            "@maven//:org_junit_platform_junit_platform_engine",
163            "@maven//:org_junit_platform_junit_platform_testkit",
164        ],
165    )
166    for JAZZER_FUZZ in [
167        "",
168        "_fuzzing",
169    ]
170]
171
172[
173    java_test(
174        name = "CorpusDirectoryTest" + JAZZER_FUZZ,
175        srcs = ["CorpusDirectoryTest.java"],
176        args = [
177            # Add a test resource root containing the seed corpus directory in a Maven layout to
178            # the classpath rather than seeds in a resource directory packaged in a JAR, as
179            # would happen if we added the directory to java_test's resources.
180            "--main_advice_classpath=$(rootpath test_resources_root)",
181        ],
182        data = ["test_resources_root"],
183        env = {
184            "JAZZER_FUZZ": JAZZER_FUZZ,
185        },
186        test_class = "com.code_intelligence.jazzer.junit.CorpusDirectoryTest",
187        runtime_deps = [
188            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
189            "@maven//:org_junit_jupiter_junit_jupiter_engine",
190        ],
191        deps = [
192            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
193            "@maven//:com_google_truth_extensions_truth_java8_extension",
194            "@maven//:com_google_truth_truth",
195            "@maven//:junit_junit",
196            "@maven//:org_junit_platform_junit_platform_engine",
197            "@maven//:org_junit_platform_junit_platform_testkit",
198        ],
199    )
200    for JAZZER_FUZZ in [
201        "",
202        "_fuzzing",
203    ]
204]
205
206[
207    java_test(
208        name = "AutofuzzTest" + JAZZER_FUZZ,
209        srcs = ["AutofuzzTest.java"],
210        env = {
211            "JAZZER_FUZZ": JAZZER_FUZZ,
212        },
213        test_class = "com.code_intelligence.jazzer.junit.AutofuzzTest",
214        runtime_deps = [
215            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
216            "@maven//:org_junit_jupiter_junit_jupiter_engine",
217        ],
218        deps = [
219            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
220            "@maven//:com_google_truth_extensions_truth_java8_extension",
221            "@maven//:com_google_truth_truth",
222            "@maven//:junit_junit",
223            "@maven//:org_junit_platform_junit_platform_engine",
224            "@maven//:org_junit_platform_junit_platform_testkit",
225            "@maven//:org_opentest4j_opentest4j",
226        ],
227    )
228    for JAZZER_FUZZ in [
229        "",
230        "_fuzzing",
231    ]
232]
233
234[
235    java_test(
236        name = "LifecycleTest" + JAZZER_FUZZ,
237        srcs = ["LifecycleTest.java"],
238        env = {
239            "JAZZER_FUZZ": JAZZER_FUZZ,
240        },
241        test_class = "com.code_intelligence.jazzer.junit.LifecycleTest",
242        runtime_deps = [
243            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
244            "@maven//:org_junit_jupiter_junit_jupiter_engine",
245        ],
246        deps = [
247            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
248            "@maven//:junit_junit",
249            "@maven//:org_junit_platform_junit_platform_engine",
250            "@maven//:org_junit_platform_junit_platform_testkit",
251        ],
252    )
253    for JAZZER_FUZZ in [
254        "",
255        "_fuzzing",
256    ]
257]
258
259java_test(
260    name = "HermeticInstrumentationTest",
261    srcs = ["HermeticInstrumentationTest.java"],
262    test_class = "com.code_intelligence.jazzer.junit.HermeticInstrumentationTest",
263    runtime_deps = [
264        "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
265        "@maven//:org_junit_jupiter_junit_jupiter_engine",
266    ],
267    deps = [
268        "//src/main/java/com/code_intelligence/jazzer/api:hooks",
269        "@maven//:com_google_truth_truth",
270        "@maven//:junit_junit",
271        "@maven//:org_junit_platform_junit_platform_engine",
272        "@maven//:org_junit_platform_junit_platform_testkit",
273    ],
274)
275
276java_test(
277    name = "FindingsBaseDirTest",
278    srcs = ["FindingsBaseDirTest.java"],
279    env = {
280        "JAZZER_FUZZ": "1",
281    },
282    test_class = "com.code_intelligence.jazzer.junit.FindingsBaseDirTest",
283    runtime_deps = [
284        "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
285        "@maven//:org_junit_jupiter_junit_jupiter_engine",
286    ],
287    deps = [
288        "//src/main/java/com/code_intelligence/jazzer/api:hooks",
289        "@maven//:com_google_truth_extensions_truth_java8_extension",
290        "@maven//:com_google_truth_truth",
291        "@maven//:junit_junit",
292        "@maven//:org_junit_platform_junit_platform_engine",
293        "@maven//:org_junit_platform_junit_platform_testkit",
294    ],
295)
296
297[
298    java_test(
299        name = "MutatorTest" + JAZZER_FUZZ,
300        srcs = ["MutatorTest.java"],
301        env = {
302            "JAZZER_FUZZ": JAZZER_FUZZ,
303        },
304        test_class = "com.code_intelligence.jazzer.junit.MutatorTest",
305        runtime_deps = [
306            "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar",
307            "@maven//:org_junit_jupiter_junit_jupiter_engine",
308        ],
309        deps = [
310            "//src/main/java/com/code_intelligence/jazzer/api:hooks",
311            "@maven//:junit_junit",
312            "@maven//:org_assertj_assertj_core",
313            "@maven//:org_junit_platform_junit_platform_engine",
314            "@maven//:org_junit_platform_junit_platform_testkit",
315        ],
316    )
317    for JAZZER_FUZZ in [
318        "",
319        "_fuzzing",
320    ]
321]
322