aboutsummaryrefslogtreecommitdiff
path: root/examples/junit/src/test/java/com/example/BUILD.bazel
blob: 8bbdcecd242ba151576776f0de02c0c6ea97ef67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
load("//bazel:fuzz_target.bzl", "java_fuzz_target_test")

java_binary(
    name = "ExampleFuzzTests",
    testonly = True,
    srcs = glob(["*.java"]),
    create_executable = False,
    visibility = [
        "//src/test/java/com/code_intelligence/jazzer/junit:__pkg__",
    ],
    deps = [
        "//deploy:jazzer",
        "//deploy:jazzer-api",
        "//deploy:jazzer-junit",
        "//examples/junit/src/main/java/com/example:parser",
        "//examples/junit/src/test/resources:example_seed_corpora",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
        "@maven//:org_junit_jupiter_junit_jupiter_params",
        "@maven//:org_mockito_mockito_core",
    ],
)

java_fuzz_target_test(
    name = "DataFuzzTest",
    srcs = ["ValidFuzzTests.java"],
    allowed_findings = ["com.code_intelligence.jazzer.api.FuzzerSecurityIssueMedium"],
    fuzzer_args = [
        "-runs=0",
    ],
    target_class = "com.example.ValidFuzzTests",
    target_method = "dataFuzz",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//examples/junit/src/main/java/com/example:parser",
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
    ],
)

java_fuzz_target_test(
    name = "ByteFuzzTest",
    srcs = ["ByteFuzzTest.java"],
    allowed_findings = ["org.opentest4j.AssertionFailedError"],
    fuzzer_args = [
        "-runs=0",
    ],
    target_class = "com.example.ByteFuzzTest",
    target_method = "byteFuzz",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//examples/junit/src/main/java/com/example:parser",
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
    ],
)

java_fuzz_target_test(
    name = "LifecycleFuzzTest",
    srcs = ["LifecycleFuzzTest.java"],
    allowed_findings = ["java.io.IOException"],
    fuzzer_args = [
        "-runs=0",
    ],
    target_class = "com.example.LifecycleFuzzTest",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//examples/junit/src/main/java/com/example:parser",
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
    ],
)

java_fuzz_target_test(
    name = "KeepGoingFuzzTest",
    srcs = ["KeepGoingFuzzTest.java"],
    allowed_findings = ["java.lang.IllegalArgumentException"],
    expect_crash = False,
    fuzzer_args = [
        "--keep_going=3",
        "-runs=10",
    ],
    target_class = "com.example.KeepGoingFuzzTest",
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
    ],
)

# Verifies that fuzzer command-line arguments are honored for @FuzzTests.
java_fuzz_target_test(
    name = "CommandLineFuzzTest",
    srcs = ["CommandLineFuzzTest.java"],
    allowed_findings = ["java.lang.Error"],
    fuzzer_args = [
        # Ignore the first two findings.
        "--ignore=d5e250a5298b81e6,d86371e6d41739ec",
    ],
    target_class = "com.example.CommandLineFuzzTest",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//examples/junit/src/main/java/com/example:parser",
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
    ],
)

# Verify that Mockito is properly ignored.
# Using version 5+ could otherwise introduce cyclic instrumentation.
java_fuzz_target_test(
    name = "MockitoFuzzTest",
    srcs = ["MockitoFuzzTest.java"],
    fuzzer_args = [
        "-runs=1",
    ],
    tags = ["no-jdk8"],
    target_class = "com.example.MockitoFuzzTest",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//examples/junit/src/main/java/com/example:parser",
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
        "@maven//:org_mockito_mockito_core",
    ],
)

java_fuzz_target_test(
    name = "AutofuzzLifecycleFuzzTest",
    srcs = ["AutofuzzLifecycleFuzzTest.java"],
    fuzzer_args = [
        "-runs=0",
    ],
    target_class = "com.example.AutofuzzLifecycleFuzzTest",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
    ],
)

java_fuzz_target_test(
    name = "MutatorFuzzTest",
    srcs = ["MutatorFuzzTest.java"],
    allowed_findings = ["java.lang.AssertionError"],
    data = [
        "//examples/junit/src/test/resources:MutatorFuzzTestInputs",
    ],
    env = {
        "JAZZER_FUZZ": "1",
    },
    fuzzer_args = [
        "--experimental_mutator",
        "$(rlocationpaths //examples/junit/src/test/resources:MutatorFuzzTestInputs)",
    ],
    target_class = "com.example.MutatorFuzzTest",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//src/main/java/com/code_intelligence/jazzer/driver:fuzz_target_runner",
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "//src/main/java/com/code_intelligence/jazzer/mutation/annotation",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
    ],
)

java_fuzz_target_test(
    name = "JavaSeedFuzzTest",
    srcs = ["JavaSeedFuzzTest.java"],
    allowed_findings = ["java.lang.Error"],
    env = {"JAZZER_FUZZ": "1"},
    fuzzer_args = [
        "--experimental_mutator",
    ],
    target_class = "com.example.JavaSeedFuzzTest",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "//src/main/java/com/code_intelligence/jazzer/mutation/annotation",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
        "@maven//:org_junit_jupiter_junit_jupiter_params",
    ],
)

java_fuzz_target_test(
    name = "JavaBinarySeedFuzzTest",
    srcs = ["JavaBinarySeedFuzzTest.java"],
    allowed_findings = ["java.lang.Error"],
    env = {"JAZZER_FUZZ": "1"},
    target_class = "com.example.JavaBinarySeedFuzzTest",
    verify_crash_reproducer = False,
    runtime_deps = [
        ":junit_runtime",
    ],
    deps = [
        "//src/main/java/com/code_intelligence/jazzer/junit:fuzz_test",
        "@maven//:org_junit_jupiter_junit_jupiter_api",
        "@maven//:org_junit_jupiter_junit_jupiter_params",
    ],
)

java_library(
    name = "junit_runtime",
    runtime_deps = [
        "@maven//:org_junit_jupiter_junit_jupiter_engine",
        "@maven//:org_junit_platform_junit_platform_launcher",
    ],
)