bolero-libfuzzer 0.13.0

libfuzzer plugin for bolero
Documentation
diff -ruN libfuzzer/FuzzerCommand.h b/libfuzzer/FuzzerCommand.h
index f653fe3..678573e 100644
--- libfuzzer/FuzzerCommand.h
+++ b/libfuzzer/FuzzerCommand.h
@@ -139,16 +139,35 @@ public:
   // be the equivalent command line.
   std::string toString() const {
     std::stringstream SS;
-    for (auto arg : getArguments())
-      SS << arg << " ";
+    auto test_name = std::getenv("BOLERO_TEST_NAME");
+    auto libtest_harness = std::getenv("BOLERO_LIBTEST_HARNESS");
+    auto args = getArguments();
+
+    SS << "env";
+
+    if (libtest_harness) {
+      SS << " BOLERO_LIBTEST_HARNESS=1 BOLERO_TEST_NAME=\"" << test_name << "\"";
+    }
+
+    SS << " BOLERO_LIBFUZZER_ARGS=\"";
+    if (args.size() > 1)
+      SS << args[1];
+    for (unsigned i = 2; i < args.size(); ++i)
+      SS << " " << args[i];
+    SS << "\"";
+
+    SS << " " << args[0];
+
+    if (libtest_harness) {
+      SS << " " << test_name << " --exact --nocapture --quiet --test-threads 1";
+    }
+
     if (hasOutputFile())
-      SS << ">" << getOutputFile() << " ";
+      SS << " >" << getOutputFile();
     if (isOutAndErrCombined())
-      SS << "2>&1 ";
-    std::string result = SS.str();
-    if (!result.empty())
-      result = result.substr(0, result.length() - 1);
-    return result;
+      SS << " 2>&1";
+
+    return SS.str();
   }
 
 private: