Skip to content

Commit 646ae09

Browse files
authored
feat!: load only modules listed as dependencies, not all in modules/ (#58)
2 parents 830ce02 + 54c5776 commit 646ae09

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

src/main/java/org/terasology/moduletestingenvironment/MTEExtension.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.junit.jupiter.api.extension.TestInstancePostProcessor;
1919
import org.opentest4j.MultipleFailuresError;
2020
import org.slf4j.LoggerFactory;
21-
import org.terasology.engine.core.module.ModuleManager;
2221
import org.terasology.engine.registry.In;
2322
import org.terasology.moduletestingenvironment.extension.Dependencies;
2423
import org.terasology.moduletestingenvironment.extension.UseWorldGenerator;
@@ -70,8 +69,6 @@ public void afterAll(ExtensionContext context) throws Exception {
7069

7170
@Override
7271
public void beforeAll(ExtensionContext context) throws Exception {
73-
System.setProperty(ModuleManager.LOAD_CLASSPATH_MODULES_PROPERTY, "true");
74-
7572
if (context.getRequiredTestClass().isAnnotationPresent(Nested.class)) {
7673
// nested classes get set up in the parent
7774
ModuleTestingHelper parentHelper = helperContexts.get(context.getRequiredTestClass().getEnclosingClass());

src/main/java/org/terasology/moduletestingenvironment/ModuleTestingEnvironment.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.terasology.engine.context.Context;
1919
import org.terasology.engine.core.GameEngine;
2020
import org.terasology.engine.core.PathManager;
21+
import org.terasology.engine.core.PathManagerProvider;
2122
import org.terasology.engine.core.TerasologyConstants;
2223
import org.terasology.engine.core.TerasologyEngine;
2324
import org.terasology.engine.core.TerasologyEngineBuilder;
@@ -55,11 +56,14 @@
5556
import java.io.IOException;
5657
import java.nio.file.Files;
5758
import java.nio.file.Path;
59+
import java.util.Collections;
5860
import java.util.List;
5961
import java.util.Set;
6062
import java.util.function.Supplier;
6163

6264
import static org.mockito.Mockito.mock;
65+
import static org.mockito.Mockito.spy;
66+
import static org.mockito.Mockito.when;
6367

6468
/**
6569
* Base class for tests involving full {@link TerasologyEngine} instances. View the tests included in this module for
@@ -155,6 +159,9 @@ public class ModuleTestingEnvironment {
155159
private final List<TerasologyEngine> engines = Lists.newArrayList();
156160
private long safetyTimeoutMs = DEFAULT_SAFETY_TIMEOUT;
157161

162+
PathManager pathManager;
163+
PathManagerProvider.Cleaner pathManagerCleaner;
164+
158165
/**
159166
* Set up and start the engine as configured via this environment.
160167
* <p>
@@ -164,6 +171,7 @@ public class ModuleTestingEnvironment {
164171
*/
165172
@BeforeEach
166173
public void setup() throws Exception {
174+
mockPathManager();
167175
host = createHost();
168176
ScreenGrabber grabber = mock(ScreenGrabber.class);
169177
hostContext.put(ScreenGrabber.class, grabber);
@@ -180,6 +188,13 @@ public void tearDown() {
180188
engines.forEach(TerasologyEngine::shutdown);
181189
engines.forEach(TerasologyEngine::cleanup);
182190
engines.clear();
191+
try {
192+
pathManagerCleaner.close();
193+
} catch (RuntimeException e) {
194+
throw e;
195+
} catch (Throwable e) {
196+
throw new RuntimeException(e);
197+
}
183198
host = null;
184199
hostContext = null;
185200
}
@@ -398,6 +413,8 @@ private TerasologyEngine createHeadedEngine() throws IOException {
398413
}
399414

400415
private TerasologyEngine createEngine(TerasologyEngineBuilder terasologyEngineBuilder) throws IOException {
416+
System.setProperty(ModuleManager.LOAD_CLASSPATH_MODULES_PROPERTY, "true");
417+
401418
// create temporary home paths so the MTE engines don't overwrite config/save files in your real home path
402419
Path path = Files.createTempDirectory("terasology-mte-engine");
403420
PathManager pathManager = PathManager.getInstance();
@@ -449,6 +466,14 @@ private void registerCurrentDirectoryIfModule(TerasologyEngine terasologyEngine)
449466
}
450467
}
451468

469+
protected void mockPathManager() {
470+
PathManager originalPathManager = PathManager.getInstance();
471+
pathManager = spy(originalPathManager);
472+
when(pathManager.getModulePaths()).thenReturn(Collections.emptyList());
473+
pathManagerCleaner = new PathManagerProvider.Cleaner(originalPathManager, pathManager);
474+
PathManagerProvider.setPathManager(pathManager);
475+
};
476+
452477
private TerasologyEngine createHost() throws IOException {
453478
TerasologyEngine terasologyEngine = createHeadlessEngine();
454479
terasologyEngine.getFromEngineContext(SystemConfig.class).writeSaveGamesEnabled.set(false);

0 commit comments

Comments
 (0)