From 90db2b0aa33f5dee9eb4d93aa51de4e395aad980 Mon Sep 17 00:00:00 2001 From: aNNiMON Date: Sat, 9 Sep 2023 21:05:17 +0300 Subject: [PATCH] Fix concurrent modification exception in ounit, when new modules are loaded in test --- .../annimon/ownlang/modules/ounit/ounit.java | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/modules/main/src/main/java/com/annimon/ownlang/modules/ounit/ounit.java b/modules/main/src/main/java/com/annimon/ownlang/modules/ounit/ounit.java index 07463c4..c087230 100644 --- a/modules/main/src/main/java/com/annimon/ownlang/modules/ounit/ounit.java +++ b/modules/main/src/main/java/com/annimon/ownlang/modules/ounit/ounit.java @@ -88,11 +88,13 @@ public final class ounit implements Module { @Override public Value execute(Value[] args) { - List tests = Functions.getFunctions().entrySet().stream() + final var testFunctions = ScopeHandler.functions().entrySet().stream() .filter(e -> e.getKey().toLowerCase().startsWith("test")) + .toList(); + List tests = testFunctions.stream() .map(e -> runTest(e.getKey(), e.getValue())) .toList(); - + int failures = 0; long summaryTime = 0; final StringBuilder result = new StringBuilder(); @@ -132,20 +134,13 @@ public final class ounit implements Module { super(message); } } - - private static class TestInfo { - final String name; - final boolean isPassed; - final String failureDescription; - final long elapsedTimeInMicros; - public TestInfo(String name, boolean isPassed, String failureDescription, long elapsedTimeInMicros) { - this.name = name; - this.isPassed = isPassed; - this.failureDescription = failureDescription; - this.elapsedTimeInMicros = elapsedTimeInMicros; - } - + private record TestInfo( + String name, + boolean isPassed, + String failureDescription, + long elapsedTimeInMicros + ) { public String info() { return String.format("%s [%s]\n%sElapsed: %s\n", name,