Adding myself and fixing Windows Tests.

This commit is contained in:
Robert Stoneking
2026-08-21 20:59:26 -06:00
parent 34092da6be
commit fe684083e7
50 changed files with 291 additions and 112 deletions
@@ -2152,7 +2152,12 @@ public final class DatapackIngestService {
if (fileKey != null) {
return "key:" + fileKey;
}
return "";
// Windows exposes no inode-equivalent for a directory, and returning nothing here fails
// the identity gate closed, which disables legacy staging replacement on that platform
// outright. Creation time is the one stable discriminator the filesystem still offers: a
// directory swapped in at the same path brings its own, so a swap is still caught. It is
// a weaker guarantee than an inode, so it is only ever the fallback.
return "created:" + attributes.creationTime();
}
private static boolean pathExists(Path path, String purpose) throws IOException {
@@ -374,6 +374,12 @@ final class JigsawStudioHistoryStore {
}
private static void forceDirectory(Path directory) throws IOException {
// A directory can only be opened and fsynced on a POSIX filesystem; Windows rejects the
// open outright. Matches DirectoryDurability and DatapackIngestService, which already
// skip the barrier there.
if (!Files.getFileStore(directory).supportsFileAttributeView("posix")) {
return;
}
try (FileChannel channel = FileChannel.open(directory, StandardOpenOption.READ)) {
channel.force(true);
}
@@ -145,6 +145,6 @@ public class DiagnosticSeverityPolicyTest {
}
private static String read(String relativePath) throws IOException {
return Files.readString(Path.of("src/main/java/art/arcane/iris").resolve(relativePath));
return Files.readString(Path.of("src/main/java/art/arcane/iris").resolve(relativePath)).replace("\r\n", "\n");
}
}
@@ -97,7 +97,7 @@ public class IrisWorldsTest {
*/
@Test
public void oneUnusableWorldIsExcludedInsteadOfFailingTheWholeRegistry() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/IrisWorlds.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/IrisWorlds.java")).replace("\r\n", "\n");
int accessor = source.indexOf("public static IrisWorlds get()");
int accessorEnd = source.indexOf("public synchronized void put(", accessor);
@@ -70,7 +70,7 @@ public class ProgressBossBarToggleTest {
}
private String source(String relativePath) throws Exception {
return Files.readString(Path.of("src/main/java/art/arcane/iris").resolve(relativePath));
return Files.readString(Path.of("src/main/java/art/arcane/iris").resolve(relativePath)).replace("\r\n", "\n");
}
private void withProgressBossBar(boolean enabled, Runnable body) {
@@ -387,7 +387,7 @@ public class ServerConfiguratorDatapackFingerprintTest {
@Test
public void recoveryRunsBeforeRestoredFingerprintReuseHashFallbackAndCompilation() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/ServerConfigurator.java"));
"src/main/java/art/arcane/iris/core/ServerConfigurator.java")).replace("\r\n", "\n");
int installIfChanged = source.indexOf("installDataPacksIfChanged(boolean fullInstall)");
int recovery = source.indexOf("DatapackIngestService.reapplyFromStaging", installIfChanged);
int restored = source.indexOf("restoredCompilerInputFingerprint()", recovery);
@@ -407,7 +407,7 @@ public class ServerConfiguratorDatapackFingerprintTest {
@Test
public void studioTimingSeparatesRecoveryFingerprintCompilationAndTotal() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/ServerConfigurator.java"));
"src/main/java/art/arcane/iris/core/ServerConfigurator.java")).replace("\r\n", "\n");
int timedInstall = source.indexOf("BiConsumer<String, Long> timingConsumer");
int recovery = source.indexOf("\"datapack_external_recovery\"", timedInstall);
int fingerprint = source.indexOf("\"datapack_compiler_input_fingerprint\"", recovery);
@@ -11,7 +11,7 @@ public class DatapackIngestRuntimeInvalidationTest {
@Test
public void everyPublicMutationInvalidatesLoadedRuntimeBeforeLocking() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java"));
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java")).replace("\r\n", "\n");
assertInvalidatesBeforeLock(source, "public static Report ingest(");
assertInvalidatesBeforeLock(source, "public static ReapplyOutcome reapplyFromStaging(");
@@ -21,7 +21,7 @@ public class DatapackIngestRuntimeInvalidationTest {
@Test
public void noChangeChecksRestoreWhileChangedIngestRemainsRestartBound() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java"));
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java")).replace("\r\n", "\n");
int ingest = source.indexOf("public static Report ingest(");
int unlock = source.indexOf("TRANSACTION_LOCK.unlock();", ingest);
int restore = source.indexOf(
@@ -249,7 +249,7 @@ public class DatapackIngestServiceTest {
@Test
public void startupChecksCheapCacheContextBeforeHashingManagedDatapacks() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java"));
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java")).replace("\r\n", "\n");
int validation = source.indexOf("public static StartupValidationOutcome validateOnStartup()");
int cacheRead = source.indexOf("readStartupValidationCache", validation);
int contextCheck = source.indexOf("startupValidationContextMatches(", cacheRead);
@@ -266,7 +266,7 @@ public class DatapackIngestServiceTest {
@Test
public void unchangedPostStartupMaintenanceReturnsBeforeFingerprinting() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java"));
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java")).replace("\r\n", "\n");
int refresh = source.indexOf(
"refreshStartupValidationAfterMaintenance(boolean maintenanceChanged)");
int unchangedGuard = source.indexOf("if (!maintenanceChanged)", refresh);
@@ -806,7 +806,7 @@ public class DatapackIngestServiceTest {
@Test
public void directoryHashRestatsAttributesAndVolumeBeforeOpeningEachFile() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java"));
"src/main/java/art/arcane/iris/core/datapack/DatapackIngestService.java")).replace("\r\n", "\n");
int method = source.indexOf("private static String directoryHash(File root)");
int entries = source.indexOf("List<Path> entries = new ArrayList<>()", method);
int loop = source.indexOf("for (Path entry : entries)", entries);
@@ -54,7 +54,8 @@ public class MissingWorldStorageLogTest {
assertEquals(2, emitted.size());
assertTrue(emitted.get(0), emitted.get(0).contains("world_iris_gone"));
assertTrue(emitted.get(0), emitted.get(0).contains("/srv/world/dimensions/iris/gone"));
assertTrue(emitted.get(0),
emitted.get(0).contains(Path.of("/srv/world/dimensions/iris/gone").toString()));
}
@Test
@@ -80,7 +81,8 @@ public class MissingWorldStorageLogTest {
assertTrue(MissingWorldStorageLog.hasWarned("world_iris_husk"));
assertEquals(2, emitted.size());
assertTrue(emitted.get(0), emitted.get(0).contains("/srv/world/dimensions/iris/husk"));
assertTrue(emitted.get(0),
emitted.get(0).contains(Path.of("/srv/world/dimensions/iris/husk").toString()));
assertTrue(emitted.get(1), emitted.get(1).contains("world_iris_husk"));
assertFalse("an empty folder is deleted, not restored", emitted.get(1).contains("Restore"));
}
@@ -55,7 +55,7 @@ public class MultiverseCoreLinkTest {
@Test
public void registrationDoesNotRewriteTheRecordedMultiverseName() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/link/MultiverseCoreLink.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/link/MultiverseCoreLink.java")).replace("\r\n", "\n");
assertFalse("worlds are created under the startup name, so the recorded name needs no correction",
source.contains("setLegacyWorldName"));
@@ -56,7 +56,7 @@ public class PackExportClosureTest {
@Test
public void bothPackagersExportSpawnersMarkersAndTheFullEntityGraph() throws Exception {
String bukkit = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/project/IrisPackageCompiler.java"));
"src/main/java/art/arcane/iris/core/project/IrisPackageCompiler.java")).replace("\r\n", "\n");
assertTrue("Bukkit packager must write spawners/", bukkit.contains("\"spawners/\""));
assertTrue("Bukkit packager must write markers/", bukkit.contains("\"markers/\""));
assertTrue("Bukkit packager must export region objects alongside biome objects",
@@ -64,7 +64,7 @@ public class PackExportClosureTest {
assertTrue("Bukkit packager must export entity loot tables", bukkit.contains("getLoot().getTables()"));
String modded = Files.readString(Path.of(
"../adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedStudioCommands.java"));
"../adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedStudioCommands.java")).replace("\r\n", "\n");
assertTrue("modded packager must write spawners/", modded.contains("\"spawners\""));
assertTrue("modded packager must write markers/", modded.contains("\"markers\""));
assertTrue("modded packager must include initial spawns", modded.contains("getInitialSpawns"));
@@ -21,7 +21,7 @@ public class StudioEntitySpawningTest {
@Test
public void studioWorldRulesEnableVanillaMobSpawning() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/WorldRuntimeControlService.java"));
"src/main/java/art/arcane/iris/core/runtime/WorldRuntimeControlService.java")).replace("\r\n", "\n");
int helperStart = source.indexOf("static void enableStudioEntitySpawning");
int helperEnd = source.indexOf("public boolean applyNoonTimeLock", helperStart);
String helper = source.substring(helperStart, helperEnd);
@@ -38,7 +38,7 @@ public class StudioEntitySpawningTest {
@Test
public void generalStudioUsesAPlayerModeEligibleForNaturalSpawning() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/project/IrisProject.java"));
"src/main/java/art/arcane/iris/core/project/IrisProject.java")).replace("\r\n", "\n");
assertFalse(source.contains("GameMode.SPECTATOR"));
assertTrue(source.contains("GameMode.CREATIVE"));
@@ -65,7 +65,7 @@ public class StudioOpenCoordinatorOpenKindTest {
@Test
public void studioTimingSeparatesOrderedLifecyclePhases() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java"));
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java")).replace("\r\n", "\n");
int previous = -1;
for (String phase : List.of(
"resolve_dimension_and_cleanup",
@@ -87,7 +87,7 @@ public class StudioOpenCoordinatorOpenKindTest {
@Test
public void structureStateActivatesAfterStandardTeleportBeforeFinalization() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java"));
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java")).replace("\r\n", "\n");
int entryReady = source.indexOf(
"entryLoadFuture.get(STUDIO_ENTRY_LOAD_TIMEOUT_SECONDS, TimeUnit.SECONDS)");
int teleport = source.indexOf(
@@ -121,7 +121,7 @@ public class StudioOpenCoordinatorOpenKindTest {
@Test
public void failedOpenMarshalsRetainedStateAbandonmentToTheServerScheduler() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java"));
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java")).replace("\r\n", "\n");
int methodStart = source.indexOf(
"private void abandonStudioEntryBootstrap(World world, Throwable failure)");
int methodEnd = source.indexOf("private void deferFailedOpenCleanup", methodStart);
@@ -135,7 +135,7 @@ public class StudioOpenCoordinatorOpenKindTest {
@Test
public void queuedRestartDefersFailedOpenCleanupWithoutAcquiringALiveCloseLease() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java"));
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java")).replace("\r\n", "\n");
int openCatch = source.indexOf("} catch (Throwable e) {");
int restartCheck = source.indexOf(
".active(LifecycleOperationCoordinator.Domain.SERVER_LIFECYCLE)",
@@ -160,7 +160,7 @@ public class StudioOpenCoordinatorOpenKindTest {
@Test
public void openFinalizerReturnsToTheServerThreadBeforeCompletion() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java"));
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java")).replace("\r\n", "\n");
int finalizerCall = source.indexOf("runOpenFinalizer(request.onDone(), world);");
int futureCompletion = source.indexOf(
"future.complete(new StudioOpenResult(world, safeEntry))", finalizerCall);
@@ -34,7 +34,7 @@ public class StudioOpenCoordinatorSpawnStuckRegressionTest {
@Test
public void paperEntryChunkLoadIsAsyncBeforeTheRetentionTicket() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java"));
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java")).replace("\r\n", "\n");
int asyncLoad = source.indexOf("requested = WorldRuntimeControlService.get().requestChunkAsync(");
int urgentFlag = source.indexOf("true);", asyncLoad);
int retentionTicket = source.indexOf("world.addPluginChunkTicket", asyncLoad);
@@ -47,7 +47,7 @@ public class StudioOpenCoordinatorSpawnStuckRegressionTest {
@Test
public void foliaRetainsItsNonBlockingTicketBootstrapPath() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java"));
"src/main/java/art/arcane/iris/core/runtime/StudioOpenCoordinator.java")).replace("\r\n", "\n");
int foliaBranch = source.indexOf("if (!J.isFolia())");
int retentionSchedule = source.indexOf(
"return scheduleEntryChunkRetention(world, chunkX, chunkZ);",
@@ -87,7 +87,7 @@ public class JigsawStudioLifecycleTest {
@Test
public void committedStudioActivationDisablesNaturalMobSpawning() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/service/JigsawStudioService.java"));
"src/main/java/art/arcane/iris/core/service/JigsawStudioService.java")).replace("\r\n", "\n");
int registerStart = source.indexOf("public void register(");
int commitStart = source.indexOf("public void activationCommitted(", registerStart);
int commitEnd = source.indexOf("public void markChunkGenerated(", commitStart);
@@ -186,7 +186,7 @@ public class PackDownloadProgressReporterTest {
public void playerHudAlwaysShowsLoaderLaneAndActionBarWithCleanup() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/service/PackDownloadProgressReporter.java"
));
)).replace("\r\n", "\n");
assertFalse(source.contains("HudSlotRequest"));
assertFalse(source.contains("HudSurface"));
@@ -15,7 +15,7 @@ import static org.junit.Assert.assertTrue;
public class StudioSVCPackDownloadContractTest {
@Test
public void downloadsUseReporterCompletionWithoutMutatingLiveDatapacks() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java")).replace("\r\n", "\n");
assertTrue(source.contains("reporter.succeed(result);"));
assertFalse(method(source, "public void downloadBuiltIn(VolmitSender sender, String key)")
@@ -26,7 +26,7 @@ public class StudioSVCPackDownloadContractTest {
@Test
public void downloadLeaseIsAcquiredBeforeUnconditionalIoDispatch() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java")).replace("\r\n", "\n");
int mutationStart = source.indexOf("private void runPackMutation(");
int mutationEnd = source.indexOf("private void executePackMutation(", mutationStart);
String runPackMutation = source.substring(mutationStart, mutationEnd);
@@ -47,7 +47,7 @@ public class StudioSVCPackDownloadContractTest {
@Test
public void acceptedDownloadsRouteFeedbackProgressAndTerminalStatesThroughReporter() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java")).replace("\r\n", "\n");
String builtIn = method(source, "public void downloadBuiltIn(VolmitSender sender, String key)");
String remote = method(source, "public void downloadUrl(VolmitSender sender, String url)");
String execute = method(source, "private void executePackMutation(");
@@ -64,7 +64,7 @@ public class StudioSVCPackDownloadContractTest {
@Test
public void shutdownClosesAdmissionAndDrainsTrackedDownloadBeforeServiceTeardown() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/service/StudioSVC.java")).replace("\r\n", "\n");
String onDisable = method(source, "public void onDisable()");
String quiesce = method(source, "public void quiesceDownloadsForShutdown()");
@@ -13,7 +13,7 @@ public class StudioSVCWorldPackFeedbackContractTest {
public void persistentPackCopyUsesLocalizedStyledOperatorFeedback() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/service/StudioSVC.java"
));
)).replace("\r\n", "\n");
assertEquals(1, occurrences(source, "STUDIO_S_V_C_PACK_COPY_REQUIRES_ASYNC_THREAD"));
assertEquals(2, occurrences(source, "STUDIO_S_V_C_PACK_INSTALL_FAILED"));
@@ -163,7 +163,7 @@ public class StudioSVCWorldPackPublishTest {
@Test
public void replaceExistingRejectsSymbolicTargetBeforePublication() throws Exception {
String sourceCode = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/service/StudioSVC.java"));
"src/main/java/art/arcane/iris/core/service/StudioSVC.java")).replace("\r\n", "\n");
int install = sourceCode.indexOf("private IrisDimension installIntoDirectory(");
int initialTargetSafety = sourceCode.indexOf(
"requireSafePublicationTarget(target, replaceExisting)",
@@ -296,7 +296,7 @@ public class StudioSVCWorldPackPublishTest {
@Test
public void replacementKeepsTargetUnauthorizedThroughPublishedFingerprintWindow() throws Exception {
String sourceCode = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/service/StudioSVC.java"));
"src/main/java/art/arcane/iris/core/service/StudioSVC.java")).replace("\r\n", "\n");
int install = sourceCode.indexOf("private IrisDimension installIntoDirectory(");
int beginMutation = sourceCode.indexOf("PackValidationRegistry.beginRootMutation(target)", install);
int publish = sourceCode.indexOf("AtomicDirectoryPublisher.publish(stage, target)", beginMutation);
@@ -11,7 +11,7 @@ import static org.junit.Assert.assertTrue;
public class IrisCreatorProgressContractTest {
@Test
public void persistentCreateReportsTheWholeLifecycleInsteadOfOnlySpawnChunks() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/tools/IrisCreator.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/tools/IrisCreator.java")).replace("\r\n", "\n");
int startReporter = source.indexOf("WorldCreationProgressReporter.start(sender, name)");
int resolve = source.indexOf("0.02D, \"resolve_dimension\"", startReporter);
@@ -11,7 +11,7 @@ import static org.junit.Assert.assertTrue;
public class IrisPersistentWorldCreationContractTest {
@Test
public void productionCreateFreezesIntoCurrentPlatformStorageBeforeWorldCreation() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/tools/IrisCreator.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/tools/IrisCreator.java")).replace("\r\n", "\n");
int createStart = source.indexOf("private World createReserved(");
int createEnd = source.indexOf("static Player createTeleportTarget(", createStart);
String create = source.substring(createStart, createEnd);
@@ -39,7 +39,7 @@ public class IrisPersistentWorldCreationContractTest {
@Test
public void persistentCreatorPreservesConfiguredNameAndCanonicalIdentity() throws Exception {
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/tools/IrisWorldCreator.java"));
String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/tools/IrisWorldCreator.java")).replace("\r\n", "\n");
int createStart = source.indexOf("public WorldCreator create()");
int createEnd = source.indexOf("private World.Environment findEnvironment()", createStart);
String create = source.substring(createStart, createEnd);
@@ -61,7 +61,7 @@ public class IrisPersistentWorldCreationContractTest {
public void publicBukkitBackendRebuildKeepsExactFallbackWorldName() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/lifecycle/WorldLifecycleRequest.java"
));
)).replace("\r\n", "\n");
int rebuildStart = source.indexOf("public WorldCreator toWorldCreator()");
int rebuildEnd = source.indexOf("return creator;", rebuildStart);
String rebuild = source.substring(rebuildStart, rebuildEnd);
@@ -62,7 +62,7 @@ public class WorldCreationProgressReporterTest {
public void bukkitHudMutationIsMarshalledOffTheAsyncReporterThread() throws Exception {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/core/tools/WorldCreationProgressReporter.java"
));
)).replace("\r\n", "\n");
assertEquals(1, occurrences(source, "Bukkit.createBossBar("));
assertTrue(source.contains("J.sfut(reporter::initializePlayerHud)"));
@@ -12,7 +12,7 @@ public class EngineRuntimePublicationContractTest {
@Test
public void worldManagerStartsOnlyAfterTheRuntimeSessionIsReady() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/EngineRuntimeBuilder.java"));
"src/main/java/art/arcane/iris/engine/EngineRuntimeBuilder.java")).replace("\r\n", "\n");
int publishStart = source.indexOf("void publishRuntime(");
int publishEnd = source.indexOf("private void scheduleRuntimeTasks", publishStart);
String publish = source.substring(publishStart, publishEnd);
@@ -27,7 +27,7 @@ public class EngineRuntimePublicationContractTest {
@Test
public void failedManagerStartClosesAdmissionBeforeRuntimeCleanup() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/EngineRuntimeBuilder.java"));
"src/main/java/art/arcane/iris/engine/EngineRuntimeBuilder.java")).replace("\r\n", "\n");
int publishStart = source.indexOf("void publishRuntime(");
int publishEnd = source.indexOf("private void scheduleRuntimeTasks", publishStart);
String publish = source.substring(publishStart, publishEnd);
@@ -12,7 +12,7 @@ public class EngineShutdownOwnershipContractTest {
@Test
public void ownershipCloseMustSucceedBeforeMantleRelease() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/EngineShutdownSequence.java"));
"src/main/java/art/arcane/iris/engine/EngineShutdownSequence.java")).replace("\r\n", "\n");
int ownershipClose = source.indexOf("NativeStructureOwnershipStore.close(engine)");
int ownershipGate = source.indexOf("if (ownershipFailure == null)", ownershipClose);
int mantleRelease = source.indexOf("releaseMantle(failure)", ownershipGate);
@@ -25,7 +25,7 @@ public class EngineShutdownOwnershipContractTest {
@Test
public void failedConstructionKeepsMantleOpenWhileOwnershipWritesRemain() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/EngineShutdownSequence.java"));
"src/main/java/art/arcane/iris/engine/EngineShutdownSequence.java")).replace("\r\n", "\n");
int cleanupStart = source.indexOf("void cleanupFailedConstruction");
int cleanupEnd = source.indexOf("Throwable closeAssembly", cleanupStart);
String cleanup = source.substring(cleanupStart, cleanupEnd);
@@ -12,7 +12,7 @@ public class NativeStructureBootstrapLifecycleContractTest {
@Test
public void closeWaitsBeforeLifecycleMutationAndGenerationSeal() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/EngineShutdownSequence.java"));
"src/main/java/art/arcane/iris/engine/EngineShutdownSequence.java")).replace("\r\n", "\n");
int closeStart = source.indexOf("void close()");
int closeEnd = source.indexOf("void cleanupFailedConstruction", closeStart);
String close = source.substring(closeStart, closeEnd);
@@ -28,7 +28,7 @@ public class NativeStructureBootstrapLifecycleContractTest {
@Test
public void fullAndComplexHotloadWaitBeforeLifecycleMutationAndGenerationSeal() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/EngineHotloader.java"));
"src/main/java/art/arcane/iris/engine/EngineHotloader.java")).replace("\r\n", "\n");
int complexStart = source.indexOf("void hotloadComplex()");
int fullStart = source.indexOf("void hotloadSilently()", complexStart);
String complex = source.substring(complexStart, fullStart);
@@ -52,7 +52,7 @@ public class NativeStructureBootstrapLifecycleContractTest {
@Test
public void ringBootstrapStartsUnderTheSameLifecycleLock() throws IOException {
String source = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/IrisEngine.java"));
"src/main/java/art/arcane/iris/engine/IrisEngine.java")).replace("\r\n", "\n");
int start = source.indexOf("public CompletableFuture<Void> startNativeStructureBootstrap(");
int end = source.indexOf("void awaitNativeStructureBootstrap", start);
String method = source.substring(start, end);
@@ -68,7 +68,7 @@ public class NativeStructureBootstrapLifecycleContractTest {
@Test
public void studioVolumeQueriesStayOutsideCachesUntilTheBootstrapGateReleases() throws IOException {
String engineSource = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/IrisEngine.java"));
"src/main/java/art/arcane/iris/engine/IrisEngine.java")).replace("\r\n", "\n");
int queryStart = engineSource.indexOf(
"public KList<NativeStructureVolume> getNativeStructureVolumes(");
int queryEnd = engineSource.indexOf(
@@ -77,7 +77,7 @@ public class NativeStructureBootstrapLifecycleContractTest {
int setterEnd = engineSource.indexOf("public IrisEngineData getEngineData()", queryEnd);
String setter = engineSource.substring(queryEnd, setterEnd);
String generatorSource = Files.readString(Path.of(
"src/main/java/art/arcane/iris/engine/platform/BukkitChunkGenerator.java"));
"src/main/java/art/arcane/iris/engine/platform/BukkitChunkGenerator.java")).replace("\r\n", "\n");
int releaseStart = generatorSource.indexOf("public void endStudioEntryBootstrap()");
int releaseEnd = generatorSource.indexOf(
"public boolean isStudioEntryBootstrapActive()", releaseStart);
@@ -235,7 +235,7 @@ public class StructureHandlerTest {
public void completionUsesOneReachabilitySnapshotAndLocatableKeys() throws IOException {
Path sourcePath = Path.of(
"src/main/java/art/arcane/iris/util/common/director/specialhandlers/StructureHandler.java");
String source = Files.readString(sourcePath);
String source = Files.readString(sourcePath).replace("\r\n", "\n");
int methodStart = source.indexOf("public KList<String> getPossibilities()");
int methodEnd = source.indexOf("@Override\n public String toString", methodStart);
String method = source.substring(methodStart, methodEnd);