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