diff options
Diffstat (limited to 'src/test/java/com/code_intelligence/jazzer/junit/BUILD.bazel')
-rw-r--r-- | src/test/java/com/code_intelligence/jazzer/junit/BUILD.bazel | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/src/test/java/com/code_intelligence/jazzer/junit/BUILD.bazel b/src/test/java/com/code_intelligence/jazzer/junit/BUILD.bazel new file mode 100644 index 00000000..a9a5e2ea --- /dev/null +++ b/src/test/java/com/code_intelligence/jazzer/junit/BUILD.bazel @@ -0,0 +1,321 @@ +load("@contrib_rules_jvm//java:defs.bzl", "JUNIT5_DEPS", "java_junit5_test") + +java_library( + name = "test-method", + srcs = ["TestMethod.java"], + visibility = ["//src/test/java/com/code_intelligence/jazzer/junit:__pkg__"], + deps = [ + "@maven//:org_junit_platform_junit_platform_engine", + ], +) + +java_junit5_test( + name = "UtilsTest", + size = "small", + srcs = ["UtilsTest.java"], + deps = JUNIT5_DEPS + [ + "//src/main/java/com/code_intelligence/jazzer/junit:utils", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:org_junit_jupiter_junit_jupiter_api", + "@maven//:org_junit_jupiter_junit_jupiter_params", + ], +) + +java_test( + name = "RegressionTestTest", + srcs = ["RegressionTestTest.java"], + test_class = "com.code_intelligence.jazzer.junit.RegressionTestTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_junit_jupiter_junit_jupiter_api", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + "@maven//:org_opentest4j_opentest4j", + ], +) + +[ + java_test( + name = "FuzzingWithCrashTest" + JAZZER_FUZZ, + srcs = ["FuzzingWithCrashTest.java"], + env = { + "JAZZER_FUZZ": JAZZER_FUZZ, + }, + test_class = "com.code_intelligence.jazzer.junit.FuzzingWithCrashTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "//src/test/java/com/code_intelligence/jazzer/junit:test-method", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_assertj_assertj_core", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_launcher", + "@maven//:org_junit_platform_junit_platform_testkit", + "@maven//:org_opentest4j_opentest4j", + ], + ) + for JAZZER_FUZZ in [ + "", + "_fuzzing", + ] +] + +[ + java_test( + name = "FuzzingWithoutCrashTest" + JAZZER_FUZZ, + srcs = ["FuzzingWithoutCrashTest.java"], + env = { + "JAZZER_FUZZ": JAZZER_FUZZ, + }, + test_class = "com.code_intelligence.jazzer.junit.FuzzingWithoutCrashTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_assertj_assertj_core", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + "@maven//:org_opentest4j_opentest4j", + ], + ) + for JAZZER_FUZZ in [ + "", + "_fuzzing", + ] +] + +[ + java_test( + name = "ValueProfileTest_" + str(JAZZER_VALUE_PROFILE), + srcs = ["ValueProfileTest.java"], + env = { + "JAZZER_FUZZ": "true", + "JAZZER_VALUE_PROFILE": str(JAZZER_VALUE_PROFILE), + }, + # The test is both CPU-intensive and sensitive to timing, which causes it to be flaky on + # slow runners (particularly macOS on GitHub Actions). Since we need to distinguish the two + # test variants by whether they find a finding, we can't just increase the timeout without + # the risk to make the other variant flaky. + tags = ["exclusive"] if JAZZER_VALUE_PROFILE else [], + test_class = "com.code_intelligence.jazzer.junit.ValueProfileTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + ], + ) + for JAZZER_VALUE_PROFILE in [ + True, + False, + ] +] + +[ + java_test( + name = "DirectoryInputsTest" + JAZZER_FUZZ, + srcs = ["DirectoryInputsTest.java"], + args = [ + # Add a test resource root containing the seed corpus directory in a Maven layout to + # the classpath rather than seeds in a resource directory packaged in a JAR, as + # would happen if we added the directory to java_test's resources. + "--main_advice_classpath=$(rootpath test_resources_root)", + ], + data = ["test_resources_root"], + env = { + "JAZZER_FUZZ": JAZZER_FUZZ, + }, + test_class = "com.code_intelligence.jazzer.junit.DirectoryInputsTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + ], + ) + for JAZZER_FUZZ in [ + "", + "_fuzzing", + ] +] + +[ + java_test( + name = "CorpusDirectoryTest" + JAZZER_FUZZ, + srcs = ["CorpusDirectoryTest.java"], + args = [ + # Add a test resource root containing the seed corpus directory in a Maven layout to + # the classpath rather than seeds in a resource directory packaged in a JAR, as + # would happen if we added the directory to java_test's resources. + "--main_advice_classpath=$(rootpath test_resources_root)", + ], + data = ["test_resources_root"], + env = { + "JAZZER_FUZZ": JAZZER_FUZZ, + }, + test_class = "com.code_intelligence.jazzer.junit.CorpusDirectoryTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + ], + ) + for JAZZER_FUZZ in [ + "", + "_fuzzing", + ] +] + +[ + java_test( + name = "AutofuzzTest" + JAZZER_FUZZ, + srcs = ["AutofuzzTest.java"], + env = { + "JAZZER_FUZZ": JAZZER_FUZZ, + }, + test_class = "com.code_intelligence.jazzer.junit.AutofuzzTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + "@maven//:org_opentest4j_opentest4j", + ], + ) + for JAZZER_FUZZ in [ + "", + "_fuzzing", + ] +] + +[ + java_test( + name = "LifecycleTest" + JAZZER_FUZZ, + srcs = ["LifecycleTest.java"], + env = { + "JAZZER_FUZZ": JAZZER_FUZZ, + }, + test_class = "com.code_intelligence.jazzer.junit.LifecycleTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:junit_junit", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + ], + ) + for JAZZER_FUZZ in [ + "", + "_fuzzing", + ] +] + +java_test( + name = "HermeticInstrumentationTest", + srcs = ["HermeticInstrumentationTest.java"], + test_class = "com.code_intelligence.jazzer.junit.HermeticInstrumentationTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + ], +) + +java_test( + name = "FindingsBaseDirTest", + srcs = ["FindingsBaseDirTest.java"], + env = { + "JAZZER_FUZZ": "1", + }, + test_class = "com.code_intelligence.jazzer.junit.FindingsBaseDirTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + ], +) + +[ + java_test( + name = "MutatorTest" + JAZZER_FUZZ, + srcs = ["MutatorTest.java"], + env = { + "JAZZER_FUZZ": JAZZER_FUZZ, + }, + test_class = "com.code_intelligence.jazzer.junit.MutatorTest", + runtime_deps = [ + "//examples/junit/src/test/java/com/example:ExampleFuzzTests_deploy.jar", + "@maven//:org_junit_jupiter_junit_jupiter_engine", + ], + deps = [ + "//src/main/java/com/code_intelligence/jazzer/api:hooks", + "@maven//:junit_junit", + "@maven//:org_assertj_assertj_core", + "@maven//:org_junit_platform_junit_platform_engine", + "@maven//:org_junit_platform_junit_platform_testkit", + ], + ) + for JAZZER_FUZZ in [ + "", + "_fuzzing", + ] +] |