diff --git a/.classpath b/.classpath index a9125236..fae1a2b3 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,5 @@ - diff --git a/.gitignore b/.gitignore index 3b90e44e..1d26408a 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ history.txt target/ -/dependency-reduced-pom.xml \ No newline at end of file +/dependency-reduced-pom.xml +devtools.properties \ No newline at end of file diff --git a/src/devtools/java/amidst/devtools/settings/DevToolsSettings.java b/src/devtools/java/amidst/devtools/settings/DevToolsSettings.java deleted file mode 100644 index 546bb481..00000000 --- a/src/devtools/java/amidst/devtools/settings/DevToolsSettings.java +++ /dev/null @@ -1,16 +0,0 @@ -package amidst.devtools.settings; - -public enum DevToolsSettings { - INSTANCE; - - private String minecraftVersionsDirectory = "/home/stefan/.minecraft/amidst-all-client-versions/"; - private String minecraftLibrariesDirectory = "/home/stefan/.minecraft/libraries/"; - - public String getMinecraftVersionsDirectory() { - return minecraftVersionsDirectory; - } - - public String getMinecraftLibrariesDirectory() { - return minecraftLibrariesDirectory; - } -} diff --git a/src/test/java/amidst/devtools/DevToolRunner.java b/src/test/java/amidst/devtools/DevToolRunner.java index a0af5191..ee7de8f4 100644 --- a/src/test/java/amidst/devtools/DevToolRunner.java +++ b/src/test/java/amidst/devtools/DevToolRunner.java @@ -5,19 +5,79 @@ import java.io.IOException; import org.junit.Ignore; import org.junit.Test; +import amidst.AmidstVersion; +import amidst.ResourceLoader; +import amidst.devtools.settings.DevToolsSettings; import amidst.mojangapi.file.MojangApiParsingException; +import amidst.mojangapi.file.json.JsonReader; +import amidst.mojangapi.file.json.versionlist.VersionListJson; /** * Eclipse does not allow to run the main directly as a Java Application, * because it is placed in the test directory. Ensure that these tests are - * ignored when creating a commit, so it will be ignored by travis ci when - * creating a new release. + * ignored when creating a commit, so they will be ignored by travis ci. */ -@Ignore public class DevToolRunner { + @Ignore @Test - public void generateTestData() throws IOException, + public void generateRecognisedVersionList() throws IOException, MojangApiParsingException { - GenerateWorldTestData.main(new String[0]); + new GenerateRecognisedVersionList(versionsDirectory(), + librariesDirectory(), versionList()).run(); + } + + @Ignore + @Test + public void generateUpdateInformationJson() throws IOException, + MojangApiParsingException { + new GenerateUpdateInformationJson(amidstVersion()).run(); + } + + @Ignore + @Test + public void generateWorldTestData() throws IOException, + MojangApiParsingException { + new GenerateWorldTestData(versionsDirectory(), librariesDirectory(), + versionList()).run(); + } + + @Ignore + @Test + public void checkMinecraftJarFileDownloadAvailability() throws IOException, + MojangApiParsingException { + new MinecraftJarDownloadAvailabilityChecker(versionList()).run(); + } + + @Ignore + @Test + public void downloadMinecraftJarFiles() throws IOException, + MojangApiParsingException { + new MinecraftJarDownloader(versionsDirectory(), versionList()).run(); + } + + @Ignore + @Test + public void checkMinecraftVersionCompatibility() throws IOException, + MojangApiParsingException { + new MinecraftVersionCompatibilityChecker(versionsDirectory(), + versionList()).run(); + } + + private VersionListJson versionList() throws IOException, + MojangApiParsingException { + return JsonReader.readRemoteVersionList(); + } + + private String librariesDirectory() { + return DevToolsSettings.INSTANCE.getMinecraftLibrariesDirectory(); + } + + private String versionsDirectory() { + return DevToolsSettings.INSTANCE.getMinecraftVersionsDirectory(); + } + + private AmidstVersion amidstVersion() { + return AmidstVersion.from(ResourceLoader + .getProperties("/amidst/metadata.properties")); } } diff --git a/src/test/java/amidst/devtools/DevToolsSettings.java b/src/test/java/amidst/devtools/DevToolsSettings.java deleted file mode 100644 index adefb46b..00000000 --- a/src/test/java/amidst/devtools/DevToolsSettings.java +++ /dev/null @@ -1,16 +0,0 @@ -package amidst.devtools; - -public enum DevToolsSettings { - INSTANCE; - - private String minecraftVersionsDirectory = "/home/stefan/.minecraft/amidst-all-client-versions/"; - private String minecraftLibrariesDirectory = "/home/stefan/.minecraft/libraries/"; - - public String getMinecraftVersionsDirectory() { - return minecraftVersionsDirectory; - } - - public String getMinecraftLibrariesDirectory() { - return minecraftLibrariesDirectory; - } -} diff --git a/src/devtools/java/amidst/devtools/GenerateRecognisedVersionList.java b/src/test/java/amidst/devtools/GenerateRecognisedVersionList.java similarity index 91% rename from src/devtools/java/amidst/devtools/GenerateRecognisedVersionList.java rename to src/test/java/amidst/devtools/GenerateRecognisedVersionList.java index 8d0aa977..3bbdaecc 100644 --- a/src/devtools/java/amidst/devtools/GenerateRecognisedVersionList.java +++ b/src/test/java/amidst/devtools/GenerateRecognisedVersionList.java @@ -1,7 +1,6 @@ package amidst.devtools; import java.io.File; -import java.io.IOException; import java.net.MalformedURLException; import java.net.URLClassLoader; import java.util.Arrays; @@ -10,13 +9,10 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import amidst.devtools.settings.DevToolsSettings; import amidst.logging.Log; import amidst.mojangapi.file.FilenameFactory; -import amidst.mojangapi.file.MojangApiParsingException; import amidst.mojangapi.file.directory.DotMinecraftDirectory; import amidst.mojangapi.file.directory.VersionDirectory; -import amidst.mojangapi.file.json.JsonReader; import amidst.mojangapi.file.json.versionlist.VersionListEntryJson; import amidst.mojangapi.file.json.versionlist.VersionListJson; import amidst.mojangapi.minecraftinterface.RecognisedVersion; @@ -24,21 +20,6 @@ import amidst.mojangapi.minecraftinterface.RecognisedVersion; public class GenerateRecognisedVersionList { private static final int MAX_LENGTH_MAGIC_STRING = 111; - public static void main(String[] args) throws IOException, - MojangApiParsingException { - VersionListJson versionList = JsonReader.readRemoteVersionList(); - int maxVersionIdLength = 0; - for (VersionListEntryJson version : versionList.getVersions()) { - if (maxVersionIdLength < version.getId().length()) { - maxVersionIdLength = version.getId().length(); - } - } - new GenerateRecognisedVersionList( - DevToolsSettings.INSTANCE.getMinecraftVersionsDirectory(), - DevToolsSettings.INSTANCE.getMinecraftLibrariesDirectory(), - versionList, maxVersionIdLength).generate(); - } - private final String prefix; private final File libraries; private final VersionListJson versionList; @@ -57,9 +38,9 @@ public class GenerateRecognisedVersionList { private final int maxVersionIdLength; public GenerateRecognisedVersionList(String prefix, String libraries, - VersionListJson versionList, int maxVersionIdLength) { + VersionListJson versionList) { this.prefix = prefix; - this.maxVersionIdLength = maxVersionIdLength; + this.maxVersionIdLength = calculateMaxVersionIdLength(versionList); this.libraries = new File(libraries); this.versionList = versionList; this.versions = new File(prefix); @@ -69,7 +50,17 @@ public class GenerateRecognisedVersionList { .values())); } - public void generate() { + private int calculateMaxVersionIdLength(VersionListJson versionList) { + int maxVersionIdLength = 0; + for (VersionListEntryJson version : versionList.getVersions()) { + if (maxVersionIdLength < version.getId().length()) { + maxVersionIdLength = version.getId().length(); + } + } + return maxVersionIdLength; + } + + public void run() { for (VersionListEntryJson version : versionList.getVersions()) { process(version); } diff --git a/src/devtools/java/amidst/devtools/GenerateUpdateInformationJson.java b/src/test/java/amidst/devtools/GenerateUpdateInformationJson.java similarity index 79% rename from src/devtools/java/amidst/devtools/GenerateUpdateInformationJson.java rename to src/test/java/amidst/devtools/GenerateUpdateInformationJson.java index 7b82c22b..e8105c79 100644 --- a/src/devtools/java/amidst/devtools/GenerateUpdateInformationJson.java +++ b/src/test/java/amidst/devtools/GenerateUpdateInformationJson.java @@ -1,7 +1,6 @@ package amidst.devtools; import amidst.AmidstVersion; -import amidst.ResourceLoader; import amidst.gui.main.UpdateInformationJson; import com.google.gson.Gson; @@ -12,9 +11,13 @@ public class GenerateUpdateInformationJson { private static final Gson GSON = new GsonBuilder().setPrettyPrinting() .create(); - public static void main(String[] args) { - AmidstVersion version = AmidstVersion.from(ResourceLoader - .getProperties("/amidst/metadata.properties")); + private final AmidstVersion version; + + public GenerateUpdateInformationJson(AmidstVersion version) { + this.version = version; + } + + public void run() { if (version.isPreRelease()) { throw new RuntimeException( "Update information documents can only be created for stable releases (not a pre-release)."); diff --git a/src/test/java/amidst/devtools/GenerateWorldTestData.java b/src/test/java/amidst/devtools/GenerateWorldTestData.java index b4c19268..6214a374 100644 --- a/src/test/java/amidst/devtools/GenerateWorldTestData.java +++ b/src/test/java/amidst/devtools/GenerateWorldTestData.java @@ -6,10 +6,8 @@ import java.util.LinkedList; import java.util.List; import amidst.mojangapi.file.FilenameFactory; -import amidst.mojangapi.file.MojangApiParsingException; import amidst.mojangapi.file.directory.DotMinecraftDirectory; import amidst.mojangapi.file.directory.VersionDirectory; -import amidst.mojangapi.file.json.JsonReader; import amidst.mojangapi.file.json.versionlist.VersionListEntryJson; import amidst.mojangapi.file.json.versionlist.VersionListJson; import amidst.mojangapi.minecraftinterface.MinecraftInterfaceException; @@ -19,21 +17,10 @@ import amidst.mojangapi.minecraftinterface.local.LocalMinecraftInterfaceCreation import amidst.mojangapi.world.testworld.TestWorldCache; import amidst.mojangapi.world.testworld.TestWorldDeclaration; -/** - * This needs to be placed in the test directory to find the mocking classes. - */ public class GenerateWorldTestData { private static final LocalMinecraftInterfaceBuilder LOCAL_MINECRAFT_INTERFACE_BUILDER = new LocalMinecraftInterfaceBuilder( DefaultClassTranslator.INSTANCE.get()); - public static void main(String[] args) throws IOException, - MojangApiParsingException { - new GenerateWorldTestData( - DevToolsSettings.INSTANCE.getMinecraftVersionsDirectory(), - DevToolsSettings.INSTANCE.getMinecraftLibrariesDirectory(), - JsonReader.readRemoteVersionList()).generate(); - } - private final String prefix; private final File libraries; private final VersionListJson versionList; @@ -52,7 +39,7 @@ public class GenerateWorldTestData { this.libraries); } - public void generate() { + public void run() { for (VersionListEntryJson version : versionList.getVersions()) { for (TestWorldDeclaration declaration : TestWorldDeclaration .values()) { diff --git a/src/devtools/java/amidst/devtools/MinecraftJarDownloadAvailabilityChecker.java b/src/test/java/amidst/devtools/MinecraftJarDownloadAvailabilityChecker.java similarity index 64% rename from src/devtools/java/amidst/devtools/MinecraftJarDownloadAvailabilityChecker.java rename to src/test/java/amidst/devtools/MinecraftJarDownloadAvailabilityChecker.java index 48d66273..b32b7b3d 100644 --- a/src/devtools/java/amidst/devtools/MinecraftJarDownloadAvailabilityChecker.java +++ b/src/test/java/amidst/devtools/MinecraftJarDownloadAvailabilityChecker.java @@ -1,21 +1,10 @@ package amidst.devtools; -import java.io.IOException; - import amidst.devtools.utils.VersionStateRenderer; -import amidst.mojangapi.file.MojangApiParsingException; -import amidst.mojangapi.file.json.JsonReader; import amidst.mojangapi.file.json.versionlist.VersionListEntryJson; import amidst.mojangapi.file.json.versionlist.VersionListJson; public class MinecraftJarDownloadAvailabilityChecker { - public static void main(String[] args) throws IOException, - MojangApiParsingException { - new MinecraftJarDownloadAvailabilityChecker( - JsonReader.readRemoteVersionList()) - .displayDownloadAvailability(); - } - private VersionStateRenderer renderer = new VersionStateRenderer(); private VersionListJson versionList; @@ -23,7 +12,7 @@ public class MinecraftJarDownloadAvailabilityChecker { this.versionList = versionList; } - public void displayDownloadAvailability() { + public void run() { for (VersionListEntryJson version : versionList.getVersions()) { boolean hasServer = version.hasServer(); boolean hasClient = version.hasClient(); diff --git a/src/devtools/java/amidst/devtools/MinecraftJarDownloader.java b/src/test/java/amidst/devtools/MinecraftJarDownloader.java similarity index 63% rename from src/devtools/java/amidst/devtools/MinecraftJarDownloader.java rename to src/test/java/amidst/devtools/MinecraftJarDownloader.java index 80f1e835..9465e54e 100644 --- a/src/devtools/java/amidst/devtools/MinecraftJarDownloader.java +++ b/src/test/java/amidst/devtools/MinecraftJarDownloader.java @@ -1,22 +1,10 @@ package amidst.devtools; -import java.io.IOException; - -import amidst.devtools.settings.DevToolsSettings; import amidst.devtools.utils.VersionStateRenderer; -import amidst.mojangapi.file.MojangApiParsingException; -import amidst.mojangapi.file.json.JsonReader; import amidst.mojangapi.file.json.versionlist.VersionListEntryJson; import amidst.mojangapi.file.json.versionlist.VersionListJson; public class MinecraftJarDownloader { - public static void main(String[] args) throws IOException, - MojangApiParsingException { - new MinecraftJarDownloader( - DevToolsSettings.INSTANCE.getMinecraftVersionsDirectory(), - JsonReader.readRemoteVersionList()).downloadAll(); - } - private VersionStateRenderer renderer = new VersionStateRenderer(); private String prefix; private VersionListJson versionList; @@ -26,7 +14,7 @@ public class MinecraftJarDownloader { this.versionList = versionList; } - public void downloadAll() { + public void run() { for (VersionListEntryJson version : versionList.getVersions()) { boolean hasServer = version.tryDownloadServer(prefix); boolean hasClient = version.tryDownloadClient(prefix); diff --git a/src/devtools/java/amidst/devtools/MinecraftVersionCompatibilityChecker.java b/src/test/java/amidst/devtools/MinecraftVersionCompatibilityChecker.java similarity index 85% rename from src/devtools/java/amidst/devtools/MinecraftVersionCompatibilityChecker.java rename to src/test/java/amidst/devtools/MinecraftVersionCompatibilityChecker.java index 3da1a83b..4e447c18 100644 --- a/src/devtools/java/amidst/devtools/MinecraftVersionCompatibilityChecker.java +++ b/src/test/java/amidst/devtools/MinecraftVersionCompatibilityChecker.java @@ -2,7 +2,6 @@ package amidst.devtools; import java.io.File; import java.io.FileNotFoundException; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -12,9 +11,6 @@ import amidst.clazz.Classes; import amidst.clazz.real.JarFileParsingException; import amidst.clazz.symbolic.declaration.SymbolicClassDeclaration; import amidst.clazz.translator.ClassTranslator; -import amidst.devtools.settings.DevToolsSettings; -import amidst.mojangapi.file.MojangApiParsingException; -import amidst.mojangapi.file.json.JsonReader; import amidst.mojangapi.file.json.versionlist.VersionListEntryJson; import amidst.mojangapi.file.json.versionlist.VersionListJson; import amidst.mojangapi.minecraftinterface.local.DefaultClassTranslator; @@ -26,13 +22,6 @@ import amidst.mojangapi.minecraftinterface.local.DefaultClassTranslator; * methods and fields. It also does not try to use the found classes. */ public class MinecraftVersionCompatibilityChecker { - public static void main(String[] args) throws IOException, - MojangApiParsingException { - new MinecraftVersionCompatibilityChecker( - DevToolsSettings.INSTANCE.getMinecraftVersionsDirectory(), - JsonReader.readRemoteVersionList()).checkAll(); - } - private String prefix; private VersionListJson versionList; @@ -42,7 +31,7 @@ public class MinecraftVersionCompatibilityChecker { this.versionList = versionList; } - public void checkAll() { + public void run() { List supported = new ArrayList(); List unsupported = new ArrayList(); for (VersionListEntryJson version : versionList.getVersions()) { diff --git a/src/test/java/amidst/devtools/settings/DevToolsSettings.java b/src/test/java/amidst/devtools/settings/DevToolsSettings.java new file mode 100644 index 00000000..69803d40 --- /dev/null +++ b/src/test/java/amidst/devtools/settings/DevToolsSettings.java @@ -0,0 +1,22 @@ +package amidst.devtools.settings; + +import java.util.Properties; + +import amidst.ResourceLoader; +import amidst.documentation.Immutable; + +@Immutable +public enum DevToolsSettings { + INSTANCE; + + private final Properties properties = ResourceLoader + .getProperties("/amidst/devtools/devtools.properties"); + + public String getMinecraftVersionsDirectory() { + return properties.getProperty("amidst.devtools.directory.versions"); + } + + public String getMinecraftLibrariesDirectory() { + return properties.getProperty("amidst.devtools.directory.libraries"); + } +} diff --git a/src/devtools/java/amidst/devtools/utils/VersionStateRenderer.java b/src/test/java/amidst/devtools/utils/VersionStateRenderer.java similarity index 100% rename from src/devtools/java/amidst/devtools/utils/VersionStateRenderer.java rename to src/test/java/amidst/devtools/utils/VersionStateRenderer.java diff --git a/src/test/resources/amidst/devtools/devtools.properties.template b/src/test/resources/amidst/devtools/devtools.properties.template new file mode 100644 index 00000000..7257d4ee --- /dev/null +++ b/src/test/resources/amidst/devtools/devtools.properties.template @@ -0,0 +1,9 @@ +# Path to a directory where minecraft versions can be stored. +# The devtools will also download new minecraft versions into this directory. +amidst.devtools.directory.versions= + +# Path to the directory where minecraft stores its libraries. This is currently use readonly. +# When the devtools fail to run this might be related to a missing library. +# To fix this issue, start the corresponding minecraft version via the minecraft launcher. +# This will download the required libraries. +amidst.devtools.directory.libraries=