No public description

PiperOrigin-RevId: 940045960
diff --git a/centipede/BUILD b/centipede/BUILD
index 37d2a1d..efab7bf 100644
--- a/centipede/BUILD
+++ b/centipede/BUILD
@@ -982,6 +982,7 @@
     ],
     hdrs = ["engine_worker_abi.h"],
     deps = [
+        ":engine_abi",
         ":execution_metadata",
         ":feature",
         ":runner_request",
@@ -990,7 +991,6 @@
         "@abseil-cpp//absl/base:nullability",
         "@abseil-cpp//absl/random",
         "@abseil-cpp//absl/random:bit_gen_ref",
-        "@com_google_fuzztest//centipede:engine_abi",
         "@com_google_fuzztest//common:defs",
     ],
 )
diff --git a/centipede/engine_worker.cc b/centipede/engine_worker.cc
index 19886f8..01030d1 100644
--- a/centipede/engine_worker.cc
+++ b/centipede/engine_worker.cc
@@ -695,9 +695,9 @@
   return test_name;
 }
 
-FuzzTestWorkerStatus WorkerMaybeRun(const FuzzTestAdapterManager& manager) {
+FuzzTestWorkerStatus WorkerRun(const FuzzTestAdapterManager& manager) {
   const auto& flags = GetWorkerFlags();
-  if (!flags.present) return kFuzzTestWorkerNotRequired;
+  WorkerCheck(flags.present, "worker flags must present");
 
   if (HasWorkerSwitchFlag("dump_configuration")) {
     return kFuzzTestWorkerSuccess;
@@ -786,11 +786,21 @@
 
 }  // namespace fuzztest::internal
 
+namespace {
+
+using ::fuzztest::internal::GetWorkerFlags;
 using ::fuzztest::internal::WorkerCheck;
-using ::fuzztest::internal::WorkerMaybeRun;
+using ::fuzztest::internal::WorkerRun;
+
+}  // namespace
+
+int FuzzTestWorkerIsRequired() { return GetWorkerFlags().present; }
 
 FuzzTestWorkerStatus FuzzTestWorkerMaybeRun(
     const FuzzTestAdapterManager* manager) {
   WorkerCheck(manager != nullptr, "manager must not be nullptr");
-  return WorkerMaybeRun(*manager);
+  if (!FuzzTestWorkerIsRequired()) {
+    return kFuzzTestWorkerNotRequired;
+  }
+  return WorkerRun(*manager);
 }
diff --git a/centipede/engine_worker_abi.h b/centipede/engine_worker_abi.h
index e435742..2a98089 100644
--- a/centipede/engine_worker_abi.h
+++ b/centipede/engine_worker_abi.h
@@ -29,7 +29,7 @@
 #endif
 
 typedef enum {
-  kFuzzTestWorkerSuccess = 0,  // Test should finish with a success
+  kFuzzTestWorkerSuccess = 0,  // Test should finish with a success.
   kFuzzTestWorkerFailure,      // Test should finish with a failure.
   kFuzzTestWorkerNotRequired,  // Test should continue with controller commands.
 } FuzzTestWorkerStatus;
@@ -38,6 +38,10 @@
 FuzzTestWorkerStatus FuzzTestWorkerMaybeRun(
     const FuzzTestAdapterManager* manager);
 
+// Returns whether the current process is running as a FuzzTest worker -
+// non-zero means yes and zero means no. It can be called outside of tests.
+int FuzzTestWorkerIsRequired();
+
 #ifdef __cplusplus
 }  // extern "C"
 #endif