summaryrefslogtreecommitdiff
path: root/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-08-10 11:11:18 -0700
committerCliff Click <cliffc@acm.org>2026-10-08 16:52:27 -0700
commitd32f97238c903765dec4e9a9f3cbfa5fd12cded6 (patch)
treea5ac731801ef7066bab6359c4e85c2bdd20082a6 /src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java
parentb5ebb2032aa04cf4506d533127d373d4cf5a25c6 (diff)
downloadSimple-linear.tar.gz
Simple-linear.zip
Chapter 25: Modules, Separate Compilation, and SSA Constructionlinear
Co-authored-by: Hsiang-Ying Fu <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: fuhsnn <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: Symious <14933944+symious@users.noreply.github.com> Co-authored-by: Jun Kawasaki <jun784@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java')
-rw-r--r--src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java b/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java
index b29eb2c3..ec9e3910 100644
--- a/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java
+++ b/src/test/java/com/seaofnodes/simple/fuzzer/Fuzzer.java
@@ -85,7 +85,7 @@ public class Fuzzer {
code1 = FuzzerUtils.parse(script, 123, true);
} catch (RuntimeException e1) {
try {
- FuzzerUtils.parse(script, 456, false);
+ FuzzerUtils.parse(script, 456, true);
} catch (RuntimeException e2) {
if (FuzzerUtils.isExceptionFromSameCause(e1, e2)) {
if (!valid || e1.getClass() == Parser.ParseException.class) return;
@@ -163,26 +163,30 @@ public class Fuzzer {
check(sb.toString(), valid, seed);
}
-
/**
- * Check that no exceptions happened.
- * @return true if no exception happened
+ * Run one seed as a regression test. Unlike the exploratory fuzzer path,
+ * this deliberately does not reduce on failure; old bad seeds should fail
+ * fast with the seed visible in the JUnit assertion.
*/
- public boolean noExceptions() {
- return exceptions.isEmpty();
- }
-
- /** Run a fixed chapter-local seed without reducing or swallowing failures. */
public void fuzzPeepsRegression(long seed) {
var rand = new Random(seed);
var sb = new StringBuilder();
var valid = new ScriptGenerator(rand, sb, true).genProgram();
try {
runCheck(sb.toString(), valid);
- } catch (Throwable e) {
- AssertionError ae = new AssertionError("Fuzzer regression seed failed: " + seed);
+ } catch( Throwable e ) {
+ AssertionError ae = new AssertionError("Fuzzer regression seed failed: "+seed);
ae.initCause(e);
throw ae;
}
}
+
+
+ /**
+ * Check that no exceptions happened.
+ * @return true if no exception happened
+ */
+ public boolean noExceptions() {
+ return exceptions.isEmpty();
+ }
}