From bdb9c74a29bbe52d2baff5a64991731a3299731d Mon Sep 17 00:00:00 2001 From: Stefan Dollase Date: Mon, 1 Feb 2016 00:47:26 +0100 Subject: [PATCH] moved devtools to the test source folder The purpose of the devtools source folder was to have a place to put code that should not be included in the released jar file. However, this requirement is also met by the test source folder. The devtools source folder was a relict from before we used maven. I also externalized the devtool settings to the properties file `src/test/resources/amidst/devtools/devtools.properties`. This file is ignored by git, however there is a commited template file. To run the devtools, copy the template and populate it with the correct values. The template also contains documentation about how the values are used. Added tests to execute each devtool. Removed all main methods from the devtools. The tests are ignored by default since they serve as a main methods. --- .classpath | 1 - .gitignore | 3 +- .../devtools/settings/DevToolsSettings.java | 16 ----- .../java/amidst/devtools/DevToolRunner.java | 70 +++++++++++++++++-- .../amidst/devtools/DevToolsSettings.java | 16 ----- .../GenerateRecognisedVersionList.java | 35 ++++------ .../GenerateUpdateInformationJson.java | 11 +-- .../devtools/GenerateWorldTestData.java | 15 +--- ...necraftJarDownloadAvailabilityChecker.java | 13 +--- .../devtools/MinecraftJarDownloader.java | 14 +--- .../MinecraftVersionCompatibilityChecker.java | 13 +--- .../devtools/settings/DevToolsSettings.java | 22 ++++++ .../devtools/utils/VersionStateRenderer.java | 0 .../devtools/devtools.properties.template | 9 +++ 14 files changed, 122 insertions(+), 116 deletions(-) delete mode 100644 src/devtools/java/amidst/devtools/settings/DevToolsSettings.java delete mode 100644 src/test/java/amidst/devtools/DevToolsSettings.java rename src/{devtools => test}/java/amidst/devtools/GenerateRecognisedVersionList.java (91%) rename src/{devtools => test}/java/amidst/devtools/GenerateUpdateInformationJson.java (79%) rename src/{devtools => test}/java/amidst/devtools/MinecraftJarDownloadAvailabilityChecker.java (64%) rename src/{devtools => test}/java/amidst/devtools/MinecraftJarDownloader.java (63%) rename src/{devtools => test}/java/amidst/devtools/MinecraftVersionCompatibilityChecker.java (85%) create mode 100644 src/test/java/amidst/devtools/settings/DevToolsSettings.java rename src/{devtools => test}/java/amidst/devtools/utils/VersionStateRenderer.java (100%) create mode 100644 src/test/resources/amidst/devtools/devtools.properties.template 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=