aboutsummaryrefslogtreecommitdiff
path: root/bazel/FuzzTargetTestWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'bazel/FuzzTargetTestWrapper.java')
-rw-r--r--bazel/FuzzTargetTestWrapper.java87
1 files changed, 0 insertions, 87 deletions
diff --git a/bazel/FuzzTargetTestWrapper.java b/bazel/FuzzTargetTestWrapper.java
deleted file mode 100644
index 59b15844..00000000
--- a/bazel/FuzzTargetTestWrapper.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2021 Code Intelligence GmbH
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-import com.google.devtools.build.runfiles.Runfiles;
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-public class FuzzTargetTestWrapper {
- public static void main(String[] args) {
- String driverActualPath;
- String jarActualPath;
- Runfiles runfiles;
- try {
- runfiles = Runfiles.create();
- driverActualPath = runfiles.rlocation(rlocationPath(args[0]));
- jarActualPath = runfiles.rlocation(rlocationPath(args[1]));
- } catch (IOException | ArrayIndexOutOfBoundsException e) {
- e.printStackTrace();
- System.exit(1);
- return;
- }
-
- ProcessBuilder processBuilder = new ProcessBuilder();
- Map<String, String> environment = processBuilder.environment();
- // Ensure that Jazzer can find its runfiles.
- environment.putAll(runfiles.getEnvVars());
-
- // Crashes will be available as test outputs. These are cleared on the next run,
- // so this is only useful for examples.
- String outputDir = System.getenv("TEST_UNDECLARED_OUTPUTS_DIR");
- List<String> command =
- Stream
- .concat(Stream.of(driverActualPath, String.format("-artifact_prefix=%s/", outputDir),
- String.format("--reproducer_path=%s", outputDir), "-seed=2735196724",
- String.format("--cp=%s", jarActualPath)),
- Arrays.stream(args).skip(2))
- .collect(Collectors.toList());
- processBuilder.inheritIO();
- processBuilder.command(command);
-
- try {
- int exitCode = processBuilder.start().waitFor();
- // Assert that we either found a crash in Java (exit code 77) or a sanitizer crash (exit code
- // 76).
- if (exitCode != 76 && exitCode != 77) {
- System.exit(3);
- }
- String[] outputFiles = new File(outputDir).list();
- if (outputFiles == null) {
- System.exit(4);
- }
- // Verify that libFuzzer dumped a crashing input.
- if (Arrays.stream(outputFiles).noneMatch(name -> name.startsWith("crash-"))) {
- System.exit(5);
- }
- } catch (IOException | InterruptedException e) {
- e.printStackTrace();
- System.exit(2);
- }
- System.exit(0);
- }
-
- // Turns the result of Bazel's `$(rootpath ...)` into the correct format for rlocation.
- private static String rlocationPath(String rootpath) {
- if (rootpath.startsWith("external/")) {
- return rootpath.substring("external/".length());
- } else {
- return "jazzer/" + rootpath;
- }
- }
-}