From cbf434ed451473e93b982dd44848bbcf9ade7e0c Mon Sep 17 00:00:00 2001 From: JeremyStarTM Date: Mon, 29 Jul 2024 19:58:41 +0200 Subject: [PATCH] Fix unit tests --- base/build.gradle | 8 ++- .../sosengine/base/EngineConfiguration.java | 9 --- .../base/utility/PlaceholderEngine.java | 11 --- .../srctests/EngineConfigurationTest.java | 36 ++-------- .../sosengine/base/srctests/TestBase.java | 72 +++++++++++++++++++ .../FourNumberVersioningSystemTest.java | 18 ++--- .../OneNumberVersioningSystemTest.java | 18 ++--- .../SemanticVersioningSystemTest.java | 18 ++--- .../StarOpenSourceVersioningSystemTest.java | 15 ++-- .../ThreeNumberVersioningSystemTest.java | 18 ++--- .../TwoNumberVersioningSystemTest.java | 18 ++--- .../srctests/utility/MiscellaneousTest.java | 51 ++++--------- .../utility/PlaceholderEngineTest.java | 34 +-------- .../srctests/utility/PropertyParserTest.java | 25 +++---- .../utility/StackTraceParserTest.java | 11 +-- graphics/build.gradle | 5 ++ graphics/glfw/build.gradle | 5 ++ graphics/opengl/build.gradle | 5 ++ graphics/vulkan/build.gradle | 5 ++ 19 files changed, 159 insertions(+), 223 deletions(-) create mode 100644 base/src/test/java/de/staropensource/sosengine/base/srctests/TestBase.java diff --git a/base/build.gradle b/base/build.gradle index 462cccc..85a8150 100644 --- a/base/build.gradle +++ b/base/build.gradle @@ -18,9 +18,6 @@ */ import java.nio.file.Files - - - // Plugins plugins { id("java") @@ -135,6 +132,11 @@ javadoc { // Unit testing configuration test { useJUnitPlatform() + + setMaxParallelForks(project.hasProperty("jobs") ? Integer.parseInt((String) project.property("jobs")) : 8) + setForkEvery(1) + setFailFast(true) + testLogging { events("passed", "skipped", "failed") } diff --git a/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java b/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java index 6c90c5b..4964681 100644 --- a/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java +++ b/base/src/main/java/de/staropensource/sosengine/base/EngineConfiguration.java @@ -411,13 +411,4 @@ public final class EngineConfiguration implements SubsystemConfiguration { default -> { return null; } } } - - /** - * Clears {@code instance}. Used in unit tests. - * - * @since v1-alpha1 - */ - private static void clearInstance() { - instance = null; - } } diff --git a/base/src/main/java/de/staropensource/sosengine/base/utility/PlaceholderEngine.java b/base/src/main/java/de/staropensource/sosengine/base/utility/PlaceholderEngine.java index ddf7306..9c1790d 100644 --- a/base/src/main/java/de/staropensource/sosengine/base/utility/PlaceholderEngine.java +++ b/base/src/main/java/de/staropensource/sosengine/base/utility/PlaceholderEngine.java @@ -89,8 +89,6 @@ public final class PlaceholderEngine { placeholders.add(new DateMonth()); placeholders.add(new DateYear()); // engine_dependency_* - placeholders.add(new EngineDependencyLombok()); - placeholders.add(new EngineDependencyJetbrainsAnnotations()); placeholders.add(new EngineDependencyJansi()); placeholders.add(new EngineDependencyLwjgl()); placeholders.add(new EngineDependencyReflections()); @@ -164,13 +162,4 @@ public final class PlaceholderEngine { public String process(@NotNull String text) { return process(text, new ArrayList<>()); } - - /** - * Clears {@code instance}. Used in unit tests. - * - * @since v1-alpha1 - */ - private static void clearInstance() { - instance = null; - } } diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/EngineConfigurationTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/EngineConfigurationTest.java index 00ad689..a773514 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/EngineConfigurationTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/EngineConfigurationTest.java @@ -20,18 +20,11 @@ package de.staropensource.sosengine.base.srctests; import de.staropensource.sosengine.base.EngineConfiguration; -import de.staropensource.sosengine.base.exceptions.UnexpectedThrowableException; -import de.staropensource.sosengine.base.exceptions.reflection.InvalidMethodException; -import de.staropensource.sosengine.base.reflection.Reflect; import de.staropensource.sosengine.base.types.logging.LogLevel; -import de.staropensource.sosengine.unittests.UnitLogger; import org.jetbrains.annotations.NotNull; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import java.util.Properties; @@ -43,40 +36,19 @@ import static org.junit.jupiter.api.Assertions.*; */ @SuppressWarnings("unused") @DisplayName("EngineConfiguration") -class EngineConfigurationTest { - /** - * The unit logger for this instance. - */ - private static final UnitLogger logger = new UnitLogger(EngineConfigurationTest.class); - +class EngineConfigurationTest extends TestBase { /** * The property group for the base engine. */ private final String group = EngineConfiguration.getGroup(); - /** - * Initializes the {@link EngineConfiguration} class before each test. - */ - @BeforeEach - void initializeClass() { - new EngineConfiguration(); - } - - /** - * Sets the {@link EngineConfiguration}#{@code instance} to {@code null} after each test. - */ - @AfterEach - void clearInstance() throws InvalidMethodException, UnexpectedThrowableException, InvocationTargetException { - Reflect.reflectOn(EngineConfiguration.class).getMethod("clearInstance").invoke(); - } - /** * Tests the method {@code loadConfiguration}. */ @Test @DisplayName("Method loadConfiguration") void testLoadConfiguration() { - logger.testCall("testLoadConfiguration"); + getLogger().testCall("testLoadConfiguration"); Map<@NotNull String, @NotNull Object[]> settings = new HashMap<>(); Map<@NotNull String, @NotNull Object> defaultValues = new HashMap<>(); @@ -120,9 +92,9 @@ class EngineConfigurationTest { Object defaultValue = defaultValues.get(setting); Object customValue = EngineConfiguration.getInstance().getSetting(setting); - logger.diag("Comparing setting " + setting + "(not equals defaultValue)"); + getLogger().diag("Comparing setting " + setting + "(not equals defaultValue)"); assertNotEquals(defaultValue, customValue); - logger.diag("Comparing setting " + setting + "(equals expected value)"); + getLogger().diag("Comparing setting " + setting + "(equals expected value)"); assertEquals(settings.get(setting)[1], customValue); } } diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/TestBase.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/TestBase.java new file mode 100644 index 0000000..b121d45 --- /dev/null +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/TestBase.java @@ -0,0 +1,72 @@ +/* + * STAROPENSOURCE ENGINE SOURCE FILE + * Copyright (c) 2024 The StarOpenSource Engine Contributors + * Licensed under the GNU Affero General Public License v3 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.staropensource.sosengine.base.srctests; + +import de.staropensource.sosengine.base.Engine; +import de.staropensource.sosengine.unittests.UnitLogger; +import lombok.Getter; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; + +/** + * A class implemented by all tests. + */ +@SuppressWarnings({ "unused" }) +public class TestBase { + /** + * Instance of this test class. + * -- GETTER -- + * Returns the instance of this test class. + */ + @Getter + private static TestBase instance; + + /** + * The unit logger for this test class. + * -- GETTER -- + * Returns the unit logger for this test class. + */ + @Getter + private final UnitLogger logger = new UnitLogger(getClass()); + + /** + * Determines whether the engine should be automatically initialized or not. + */ + protected boolean doInitialization = true; + + /** + * Constructs this class. + */ + public TestBase() { + // JUnit for some reason recreates the test class every time a test method is called + // Therefore we don't throw or complain here, instead we just override 'instance' and + // hope nothing breaks. + instance = this; + } + + /** + * Initializes the engine before running tests. + */ + @BeforeEach + void initializeEngine() { + if (doInitialization && Engine.getInstance() == null) + new Engine(); + } +} diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/FourNumberVersioningSystemTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/FourNumberVersioningSystemTest.java index 6381b9e..9d12832 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/FourNumberVersioningSystemTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/FourNumberVersioningSystemTest.java @@ -21,12 +21,10 @@ package de.staropensource.sosengine.base.srctests.data.versioning; import de.staropensource.sosengine.base.data.versioning.FourNumberVersioningSystem; import de.staropensource.sosengine.base.exceptions.versioning.InvalidVersionStringException; -import de.staropensource.sosengine.unittests.UnitLogger; +import de.staropensource.sosengine.base.srctests.TestBase; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -36,13 +34,7 @@ import static org.junit.jupiter.api.Assertions.fail; */ @SuppressWarnings({ "unused" }) @DisplayName("FourNumberVersioningSystem") -public class FourNumberVersioningSystemTest { - /** - * The unit logger for this instance. - */ - private static final UnitLogger logger = new UnitLogger(FourNumberVersioningSystemTest.class); - private static final Logger log = LoggerFactory.getLogger(FourNumberVersioningSystemTest.class); - +public class FourNumberVersioningSystemTest extends TestBase { /** * Tests the method {@code compare}. */ @@ -58,14 +50,14 @@ public class FourNumberVersioningSystemTest { "1.1.0.0, 1.1.1.1, 2", }) void testCompare(String a, String b, int expected) throws Throwable { - logger.testCall("testCompare", a, b, expected); + getLogger().testCall("testCompare", a, b, expected); try { assertEquals(expected, new FourNumberVersioningSystem(a).compare(new FourNumberVersioningSystem(b))); } catch (InvalidVersionStringException exception) { - logger.error("Got InvalidVersionStringException: " + exception.getMessage()); + getLogger().error("Got InvalidVersionStringException: " + exception.getMessage()); if (exception.getThrowable() != null) { - logger.error("Original stack trace:"); + getLogger().error("Original stack trace:"); throw exception.getThrowable(); } fail("Got InvalidVersionStringException"); diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/OneNumberVersioningSystemTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/OneNumberVersioningSystemTest.java index d8c5b5f..7759b43 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/OneNumberVersioningSystemTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/OneNumberVersioningSystemTest.java @@ -22,12 +22,10 @@ package de.staropensource.sosengine.base.srctests.data.versioning; import de.staropensource.sosengine.base.data.versioning.OneNumberVersioningSystem; import de.staropensource.sosengine.base.data.versioning.TwoNumberVersioningSystem; import de.staropensource.sosengine.base.exceptions.versioning.InvalidVersionStringException; -import de.staropensource.sosengine.unittests.UnitLogger; +import de.staropensource.sosengine.base.srctests.TestBase; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -37,13 +35,7 @@ import static org.junit.jupiter.api.Assertions.fail; */ @SuppressWarnings({ "unused" }) @DisplayName("OneNumberVersioningSystem") -public class OneNumberVersioningSystemTest { - /** - * The unit logger for this instance. - */ - private static final UnitLogger logger = new UnitLogger(OneNumberVersioningSystemTest.class); - private static final Logger log = LoggerFactory.getLogger(OneNumberVersioningSystemTest.class); - +public class OneNumberVersioningSystemTest extends TestBase { /** * Tests the method {@code compare}. */ @@ -55,14 +47,14 @@ public class OneNumberVersioningSystemTest { "1, 2, 2", }) void testCompare(String a, String b, int expected) throws Throwable { - logger.testCall("testCompare", a, b, expected); + getLogger().testCall("testCompare", a, b, expected); try { assertEquals(expected, new OneNumberVersioningSystem(a).compare(new OneNumberVersioningSystem(b))); } catch (InvalidVersionStringException exception) { - logger.error("Got InvalidVersionStringException: " + exception.getMessage()); + getLogger().error("Got InvalidVersionStringException: " + exception.getMessage()); if (exception.getThrowable() != null) { - logger.error("Original stack trace:"); + getLogger().error("Original stack trace:"); throw exception.getThrowable(); } fail("Got InvalidVersionStringException"); diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/SemanticVersioningSystemTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/SemanticVersioningSystemTest.java index 02926b7..fce5711 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/SemanticVersioningSystemTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/SemanticVersioningSystemTest.java @@ -21,12 +21,10 @@ package de.staropensource.sosengine.base.srctests.data.versioning; import de.staropensource.sosengine.base.data.versioning.SemanticVersioningSystem; import de.staropensource.sosengine.base.exceptions.versioning.InvalidVersionStringException; -import de.staropensource.sosengine.unittests.UnitLogger; +import de.staropensource.sosengine.base.srctests.TestBase; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -36,13 +34,7 @@ import static org.junit.jupiter.api.Assertions.fail; */ @SuppressWarnings({ "unused" }) @DisplayName("SemanticVersioningSystem") -public class SemanticVersioningSystemTest { - /** - * The unit logger for this instance. - */ - private static final UnitLogger logger = new UnitLogger(SemanticVersioningSystemTest.class); - private static final Logger log = LoggerFactory.getLogger(SemanticVersioningSystemTest.class); - +public class SemanticVersioningSystemTest extends TestBase { /** * Tests the method {@code compare}. */ @@ -63,14 +55,14 @@ public class SemanticVersioningSystemTest { "1.1.0+5, 1.1.0+6, 2", }) void testCompare(String a, String b, int expected) throws Throwable { - logger.testCall("testCompare", a, b, expected); + getLogger().testCall("testCompare", a, b, expected); try { assertEquals(expected, new SemanticVersioningSystem(a).compare(new SemanticVersioningSystem(b))); } catch (InvalidVersionStringException exception) { - logger.error("Got InvalidVersionStringException: " + exception.getMessage()); + getLogger().error("Got InvalidVersionStringException: " + exception.getMessage()); if (exception.getThrowable() != null) { - logger.error("Original stack trace:"); + getLogger().error("Original stack trace:"); throw exception.getThrowable(); } fail("Got InvalidVersionStringException"); diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/StarOpenSourceVersioningSystemTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/StarOpenSourceVersioningSystemTest.java index a83f35f..7912f73 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/StarOpenSourceVersioningSystemTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/StarOpenSourceVersioningSystemTest.java @@ -22,7 +22,7 @@ package de.staropensource.sosengine.base.srctests.data.versioning; import de.staropensource.sosengine.base.data.versioning.SemanticVersioningSystem; import de.staropensource.sosengine.base.data.versioning.StarOpenSourceVersioningSystem; import de.staropensource.sosengine.base.exceptions.versioning.InvalidVersionStringException; -import de.staropensource.sosengine.unittests.UnitLogger; +import de.staropensource.sosengine.base.srctests.TestBase; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -35,12 +35,7 @@ import static org.junit.jupiter.api.Assertions.fail; */ @SuppressWarnings({ "unused" }) @DisplayName("StarOpenSourceVersioningSystem") -public class StarOpenSourceVersioningSystemTest { - /** - * The unit logger for this instance. - */ - private static final UnitLogger logger = new UnitLogger(StarOpenSourceVersioningSystemTest.class); - +public class StarOpenSourceVersioningSystemTest extends TestBase { /** * Tests the method {@code compare}. */ @@ -59,14 +54,14 @@ public class StarOpenSourceVersioningSystemTest { "v9-beta5, v9-releasecandidate1, 2", }) void testCompare(String a, String b, int expected) throws Throwable { - logger.testCall("testCompare", a, b, expected); + getLogger().testCall("testCompare", a, b, expected); try { assertEquals(expected, new StarOpenSourceVersioningSystem(a).compare(new StarOpenSourceVersioningSystem(b))); } catch (InvalidVersionStringException exception) { - logger.error("Got InvalidVersionStringException: " + exception.getMessage()); + getLogger().error("Got InvalidVersionStringException: " + exception.getMessage()); if (exception.getThrowable() != null) { - logger.error("Original stack trace:"); + getLogger().error("Original stack trace:"); throw exception.getThrowable(); } fail("Got InvalidVersionStringException"); diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/ThreeNumberVersioningSystemTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/ThreeNumberVersioningSystemTest.java index 939e929..a80fb1e 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/ThreeNumberVersioningSystemTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/ThreeNumberVersioningSystemTest.java @@ -21,12 +21,10 @@ package de.staropensource.sosengine.base.srctests.data.versioning; import de.staropensource.sosengine.base.data.versioning.ThreeNumberVersioningSystem; import de.staropensource.sosengine.base.exceptions.versioning.InvalidVersionStringException; -import de.staropensource.sosengine.unittests.UnitLogger; +import de.staropensource.sosengine.base.srctests.TestBase; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -36,13 +34,7 @@ import static org.junit.jupiter.api.Assertions.fail; */ @SuppressWarnings({ "unused" }) @DisplayName("ThreeNumberVersioningSystem") -public class ThreeNumberVersioningSystemTest { - /** - * The unit logger for this instance. - */ - private static final UnitLogger logger = new UnitLogger(ThreeNumberVersioningSystemTest.class); - private static final Logger log = LoggerFactory.getLogger(ThreeNumberVersioningSystemTest.class); - +public class ThreeNumberVersioningSystemTest extends TestBase { /** * Tests the method {@code compare}. */ @@ -54,14 +46,14 @@ public class ThreeNumberVersioningSystemTest { "1.1.0, 1.1.1, 2", }) void testCompare(String a, String b, int expected) throws Throwable { - logger.testCall("testCompare", a, b, expected); + getLogger().testCall("testCompare", a, b, expected); try { assertEquals(expected, new ThreeNumberVersioningSystem(a).compare(new ThreeNumberVersioningSystem(b))); } catch (InvalidVersionStringException exception) { - logger.error("Got InvalidVersionStringException: " + exception.getMessage()); + getLogger().error("Got InvalidVersionStringException: " + exception.getMessage()); if (exception.getThrowable() != null) { - logger.error("Original stack trace:"); + getLogger().error("Original stack trace:"); throw exception.getThrowable(); } fail("Got InvalidVersionStringException"); diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/TwoNumberVersioningSystemTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/TwoNumberVersioningSystemTest.java index ee01993..ff0d774 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/TwoNumberVersioningSystemTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/data/versioning/TwoNumberVersioningSystemTest.java @@ -21,12 +21,10 @@ package de.staropensource.sosengine.base.srctests.data.versioning; import de.staropensource.sosengine.base.data.versioning.TwoNumberVersioningSystem; import de.staropensource.sosengine.base.exceptions.versioning.InvalidVersionStringException; -import de.staropensource.sosengine.unittests.UnitLogger; +import de.staropensource.sosengine.base.srctests.TestBase; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; @@ -36,13 +34,7 @@ import static org.junit.jupiter.api.Assertions.fail; */ @SuppressWarnings({ "unused" }) @DisplayName("TwoNumberVersioningSystem") -public class TwoNumberVersioningSystemTest { - /** - * The unit logger for this instance. - */ - private static final UnitLogger logger = new UnitLogger(TwoNumberVersioningSystemTest.class); - private static final Logger log = LoggerFactory.getLogger(TwoNumberVersioningSystemTest.class); - +public class TwoNumberVersioningSystemTest extends TestBase { /** * Tests the method {@code compare}. */ @@ -54,14 +46,14 @@ public class TwoNumberVersioningSystemTest { "1.5, 2.0, 2", }) void testCompare(String a, String b, int expected) throws Throwable { - logger.testCall("testCompare", a, b, expected); + getLogger().testCall("testCompare", a, b, expected); try { assertEquals(expected, new TwoNumberVersioningSystem(a).compare(new TwoNumberVersioningSystem(b))); } catch (InvalidVersionStringException exception) { - logger.error("Got InvalidVersionStringException: " + exception.getMessage()); + getLogger().error("Got InvalidVersionStringException: " + exception.getMessage()); if (exception.getThrowable() != null) { - logger.error("Original stack trace:"); + getLogger().error("Original stack trace:"); throw exception.getThrowable(); } fail("Got InvalidVersionStringException"); diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/MiscellaneousTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/MiscellaneousTest.java index 784a2bc..46d5631 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/MiscellaneousTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/MiscellaneousTest.java @@ -22,12 +22,10 @@ package de.staropensource.sosengine.base.srctests.utility; import de.staropensource.sosengine.base.EngineConfiguration; import de.staropensource.sosengine.base.annotations.EventListener; import de.staropensource.sosengine.base.events.ThrowableCatchEvent; -import de.staropensource.sosengine.base.exceptions.UnexpectedThrowableException; -import de.staropensource.sosengine.base.exceptions.reflection.InvalidMethodException; import de.staropensource.sosengine.base.reflection.Reflect; +import de.staropensource.sosengine.base.srctests.TestBase; import de.staropensource.sosengine.base.utility.Math; import de.staropensource.sosengine.base.utility.Miscellaneous; -import de.staropensource.sosengine.unittests.UnitLogger; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; @@ -36,8 +34,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.ValueSource; -import java.lang.ref.WeakReference; -import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import java.util.Properties; @@ -50,12 +46,7 @@ import static org.junit.jupiter.api.Assertions.*; */ @SuppressWarnings("unused") @DisplayName("Miscellaneous") -public class MiscellaneousTest { - /** - * The {@link UnitLogger} for this instance. - */ - private static final UnitLogger logger = new UnitLogger(MiscellaneousTest.class); - +public class MiscellaneousTest extends TestBase { /** * Used for testing the method {@code executeSafely}. */ @@ -65,7 +56,7 @@ public class MiscellaneousTest { * Sets the {@link EngineConfiguration}#{@code instance} to {@code null} after each test. */ @AfterEach - void clearConfiguration() throws InvalidMethodException, UnexpectedThrowableException, InvocationTargetException { + void clearConfiguration() throws Exception { // For method testExecuteSafely1() Reflect.reflectOn(EngineConfiguration.class).getMethod("clearInstance").invoke(); } @@ -83,26 +74,11 @@ public class MiscellaneousTest { "5819853, 10, 0005819853" }) void testPadNumbers(int number, int length, String expected) { - logger.testCall("testPadNumbers", number, length, expected); + getLogger().testCall("testPadNumbers", number, length, expected); String result = Math.padNumbers(number, length); assertEquals(expected, result, "Result \"" + result + "\" does not match expected output \"" + expected + "\""); } - /** - * Tests the method {@code invokeGarbageCollector}. - */ - @Test - @DisplayName("invokeGarbageCollector") - void testInvokeGarbageCollector(){ - logger.testCall("testInvokeGarbageCollector"); - Object object = new Object(); - WeakReference weakReference = new WeakReference<>(object); - object = null; - Miscellaneous.invokeGarbageCollector(); - //noinspection ConstantValue // my god we know that it's very very likely true, that's what we're testing for here! - assertNull(object, "Garbage collector failed collecting nullified object"); - } - /** * Tests the method {@code measureExecutionTime}. */ @@ -112,13 +88,13 @@ public class MiscellaneousTest { 100, 250, 500 }) void testMeasureExecutionTime(int sleepingDuration) { - logger.testCall("testMeasureExecutionTime", sleepingDuration); + getLogger().testCall("testMeasureExecutionTime", sleepingDuration); long executionTime = Miscellaneous.measureExecutionTime(() -> { try { Thread.sleep(sleepingDuration); } catch (InterruptedException e) { - logger.error("Sleep was interrupted, test may fail"); + getLogger().error("Sleep was interrupted, test may fail"); } }); @@ -131,7 +107,7 @@ public class MiscellaneousTest { @Test @DisplayName("getMapValues") void testGetMapValues() { - logger.testCall("testGetMapValues"); + getLogger().testCall("testGetMapValues"); Map testMap = new HashMap<>(); testMap.put("key1", "this is the first value"); @@ -153,13 +129,11 @@ public class MiscellaneousTest { @Test @DisplayName("executeSafely (test 0)") void testExecuteSafely0() { - logger.testCall("testExecuteSafely0"); + getLogger().testCall("testExecuteSafely0"); throwableCaught = false; - Miscellaneous.executeSafely(() -> { - System.out.println("You can safely ignore this message (this comes from MiscellaneousTest#testExecuteSafely0)"); - }, "MiscellaneousTest#testExecuteSafely0"); + Miscellaneous.executeSafely(() -> System.out.println("You can safely ignore this message (this comes from MiscellaneousTest#testExecuteSafely0)"), "MiscellaneousTest#testExecuteSafely0"); assertFalse(throwableCaught, "Event was triggered"); } @@ -170,7 +144,7 @@ public class MiscellaneousTest { @Test @DisplayName("executeSafely (test 1)") void testExecuteSafely1() { - logger.testCall("testExecuteSafely1"); + getLogger().testCall("testExecuteSafely1"); throwableCaught = false; @@ -192,7 +166,7 @@ public class MiscellaneousTest { try { Thread.sleep(200); } catch (InterruptedException e) { - logger.error("Sleep was interrupted, test may fail"); + getLogger().error("Sleep was interrupted, test may fail"); throw new RuntimeException(e); } @@ -207,8 +181,7 @@ public class MiscellaneousTest { */ @EventListener(event = ThrowableCatchEvent.class) public static void onCaughtThrowable(@NotNull Throwable throwable, @NotNull String identifier) { - logger.diag("ThrowableCatchEvent received"); + getInstance().getLogger().diag("ThrowableCatchEvent received"); throwableCaught = true; - throw new RuntimeException("aaaaa"); } } diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PlaceholderEngineTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PlaceholderEngineTest.java index 9db77dc..2fe7dfd 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PlaceholderEngineTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PlaceholderEngineTest.java @@ -20,20 +20,13 @@ package de.staropensource.sosengine.base.srctests.utility; import de.staropensource.sosengine.base.classes.Placeholder; -import de.staropensource.sosengine.base.exceptions.UnexpectedThrowableException; -import de.staropensource.sosengine.base.exceptions.reflection.InvalidMethodException; -import de.staropensource.sosengine.base.exceptions.reflection.NoAccessException; -import de.staropensource.sosengine.base.reflection.Reflect; +import de.staropensource.sosengine.base.srctests.TestBase; import de.staropensource.sosengine.base.utility.PlaceholderEngine; -import de.staropensource.sosengine.unittests.UnitLogger; import org.jetbrains.annotations.NotNull; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; @@ -44,28 +37,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; */ @SuppressWarnings("unused") @DisplayName("PlaceholderEngine") -class PlaceholderEngineTest { - /** - * The {@link UnitLogger} for this instance. - */ - private static final UnitLogger logger = new UnitLogger(PlaceholderEngineTest.class); - - /** - * Creates a new {@link PlaceholderEngine} instance before each test. - */ - @BeforeEach - void createInstance() { - new PlaceholderEngine(); - } - - /** - * Sets the {@link PlaceholderEngine}#{@code instance} to {@code null} after each test. - */ - @AfterEach - void clearInstance() throws InvalidMethodException, UnexpectedThrowableException, InvocationTargetException, NoAccessException { - Reflect.reflectOn(PlaceholderEngine.class).getMethod("clearInstance").invoke(); - } - +class PlaceholderEngineTest extends TestBase { /** * Tests the method {@code process}. */ @@ -77,7 +49,7 @@ class PlaceholderEngineTest { "This %status%!, This works!", }) void testProcess(String text, String expected) { - logger.testCall("testProcess", text, expected); + getLogger().testCall("testProcess", text, expected); List<@NotNull Placeholder> placeholders = new ArrayList<>(); placeholders.add(new Placeholder() { diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PropertyParserTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PropertyParserTest.java index e8bf10b..b1c07fb 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PropertyParserTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/PropertyParserTest.java @@ -19,8 +19,8 @@ package de.staropensource.sosengine.base.srctests.utility; +import de.staropensource.sosengine.base.srctests.TestBase; import de.staropensource.sosengine.base.utility.parser.PropertyParser; -import de.staropensource.sosengine.unittests.UnitLogger; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -33,12 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; * Tests the class {@link PropertyParser}. */ @DisplayName("PropertyParser") -class PropertyParserTest { - /** - * The {@link UnitLogger} for this instance. - */ - private static final UnitLogger logger = new UnitLogger(PropertyParserTest.class); - +class PropertyParserTest extends TestBase { /** * Tests the method {@code getString}. */ @@ -51,7 +46,7 @@ class PropertyParserTest { "a.property.mightLookLikeThis, some value" }) void testGetString(String propertyName, String propertyValue) { - logger.testCall("testGetString", propertyName, propertyValue); + getLogger().testCall("testGetString", propertyName, propertyValue); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); @@ -75,7 +70,7 @@ class PropertyParserTest { "nah, no, false", }) void testGetBoolean(String propertyName, String propertyValue, boolean expected) { - logger.testCall("testGetBoolean", propertyName, propertyValue, expected); + getLogger().testCall("testGetBoolean", propertyName, propertyValue, expected); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); @@ -99,7 +94,7 @@ class PropertyParserTest { "he's a 1 but he likes 0s, 1, 1", }) void testGetByte(String propertyName, String propertyValue, byte expected) { - logger.testCall("testGetByte", propertyName, propertyValue, expected); + getLogger().testCall("testGetByte", propertyName, propertyValue, expected); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); @@ -123,7 +118,7 @@ class PropertyParserTest { "he's a 1 but he likes 0s, 1, 1", }) void testGetShort(String propertyName, String propertyValue, short expected) { - logger.testCall("testGetShort", propertyName, propertyValue, expected); + getLogger().testCall("testGetShort", propertyName, propertyValue, expected); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); @@ -148,7 +143,7 @@ class PropertyParserTest { "he's a 10 but he likes 69, 10, 10", }) void testGetInteger(String propertyName, String propertyValue, int expected) { - logger.testCall("testGetInteger", propertyName, propertyValue, expected); + getLogger().testCall("testGetInteger", propertyName, propertyValue, expected); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); @@ -173,7 +168,7 @@ class PropertyParserTest { "he's a 10 but he likes 69, 10, 10", }) void testGetLong(String propertyName, String propertyValue, long expected) { - logger.testCall("testGetLong", propertyName, propertyValue, expected); + getLogger().testCall("testGetLong", propertyName, propertyValue, expected); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); @@ -199,7 +194,7 @@ class PropertyParserTest { "he's a 10 but he likes 69, 10.69, 10.69", }) void testGetFloat(String propertyName, String propertyValue, float expected) { - logger.testCall("testGetFloat", propertyName, propertyValue, expected); + getLogger().testCall("testGetFloat", propertyName, propertyValue, expected); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); @@ -223,7 +218,7 @@ class PropertyParserTest { "he's a 10 but he likes 69, 10.69, 10.69", }) void testGetDouble(String propertyName, String propertyValue, double expected) { - logger.testCall("testGetDouble", propertyName, propertyValue, expected); + getLogger().testCall("testGetDouble", propertyName, propertyValue, expected); Properties properties = new Properties(); properties.setProperty(propertyName, propertyValue); diff --git a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/StackTraceParserTest.java b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/StackTraceParserTest.java index 65e8911..99e6e1a 100644 --- a/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/StackTraceParserTest.java +++ b/base/src/test/java/de/staropensource/sosengine/base/srctests/utility/StackTraceParserTest.java @@ -19,8 +19,8 @@ package de.staropensource.sosengine.base.srctests.utility; +import de.staropensource.sosengine.base.srctests.TestBase; import de.staropensource.sosengine.base.utility.parser.StackTraceParser; -import de.staropensource.sosengine.unittests.UnitLogger; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; @@ -32,12 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; * Tests the class {@link StackTraceParser}. */ @DisplayName("StackTraceParser") -class StackTraceParserTest { - /** - * The {@link UnitLogger} for this instance. - */ - private static final UnitLogger logger = new UnitLogger(StackTraceParserTest.class); - +class StackTraceParserTest extends TestBase { /** * Tests the method {@code getHeader}. */ @@ -49,7 +44,7 @@ class StackTraceParserTest { "Some description here..." }) void testGetHeader(@NotNull String message) { - logger.testCall("testGetHeader", message); + getLogger().testCall("testGetHeader", message); String output; if (message.isEmpty()) diff --git a/graphics/build.gradle b/graphics/build.gradle index cd83558..476dbf9 100644 --- a/graphics/build.gradle +++ b/graphics/build.gradle @@ -87,6 +87,11 @@ javadoc { // Unit testing configuration test { useJUnitPlatform() + + setMaxParallelForks(project.hasProperty("jobs") ? Integer.parseInt((String) project.property("jobs")) : 8) + setForkEvery(1) + setFailFast(true) + testLogging { events("passed", "skipped", "failed") } diff --git a/graphics/glfw/build.gradle b/graphics/glfw/build.gradle index e9b5436..af9c059 100644 --- a/graphics/glfw/build.gradle +++ b/graphics/glfw/build.gradle @@ -122,6 +122,11 @@ javadoc { // Unit testing configuration test { useJUnitPlatform() + + setMaxParallelForks(project.hasProperty("jobs") ? Integer.parseInt((String) project.property("jobs")) : 8) + setForkEvery(1) + setFailFast(true) + testLogging { events("passed", "skipped", "failed") } diff --git a/graphics/opengl/build.gradle b/graphics/opengl/build.gradle index 349eb3d..96e6c43 100644 --- a/graphics/opengl/build.gradle +++ b/graphics/opengl/build.gradle @@ -127,6 +127,11 @@ javadoc { // Unit testing configuration test { useJUnitPlatform() + + setMaxParallelForks(project.hasProperty("jobs") ? Integer.parseInt((String) project.property("jobs")) : 8) + setForkEvery(1) + setFailFast(true) + testLogging { events("passed", "skipped", "failed") } diff --git a/graphics/vulkan/build.gradle b/graphics/vulkan/build.gradle index eb59909..01692bd 100644 --- a/graphics/vulkan/build.gradle +++ b/graphics/vulkan/build.gradle @@ -124,6 +124,11 @@ javadoc { // Unit testing configuration test { useJUnitPlatform() + + setMaxParallelForks(project.hasProperty("jobs") ? Integer.parseInt((String) project.property("jobs")) : 8) + setForkEvery(1) + setFailFast(true) + testLogging { events("passed", "skipped", "failed") }