NOISSUE add basic unit tests for MojangVersionFormat reading/writing

will have to make them pass now
This commit is contained in:
Petr Mrázek 2016-03-03 01:40:12 +01:00
parent b54839b897
commit 94d4684809
7 changed files with 814 additions and 21 deletions

View File

@ -63,13 +63,12 @@ VersionFilePtr MojangVersionFormat::versionFileFromJson(const QJsonDocument &doc
if (root.contains("libraries"))
{
out->shouldOverwriteLibs = true;
for (auto libVal : requireArray(root.value("libraries")))
{
auto libObj = requireObject(libVal);
auto lib = OneSixVersionFormat::libraryFromJson(libObj, filename);
out->overwriteLibs.append(lib);
out->addLibs.append(lib);
}
}
return out;
@ -86,6 +85,10 @@ static QJsonDocument versionFileToJson(VersionFilePtr patch)
writeString(root, "assets", patch->assets);
writeString(root, "releaseTime", timeToS3Time(patch->m_releaseTime));
writeString(root, "time", timeToS3Time(patch->m_updateTime));
if(patch->minimumLauncherVersion != -1)
{
root.insert("minimumLauncherVersion", patch->minimumLauncherVersion);
}
if (!patch->addLibs.isEmpty())
{

View File

@ -3,7 +3,9 @@
#include <minecraft/VersionFile.h>
#include <QJsonDocument>
class MojangVersionFormat
#include "multimc_logic_export.h"
class MULTIMC_LOGIC_EXPORT MojangVersionFormat
{
public:
// version files / profile patches

View File

@ -82,7 +82,10 @@ QJsonObject OsRule::toJson()
QJsonObject osObj;
{
osObj.insert("name", OpSys_toString(m_system));
osObj.insert("version", m_version_regexp);
if(!m_version_regexp.isEmpty())
{
osObj.insert("version", m_version_regexp);
}
}
ruleObj.insert("os", osObj);
return ruleObj;

View File

@ -1,16 +1,19 @@
# run the unit tests with `make test`
find_package(Qt5Test)
add_custom_target(test_data)
unset(MultiMC_TESTS)
macro(add_unit_test name)
unset(srcs)
foreach(arg ${testname} ${ARGN})
list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/${arg})
if(WIN32)
list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/test.rc)
endif()
endforeach()
if(WIN32)
list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/test.rc)
endif()
add_executable(tst_${name} ${srcs})
add_dependencies(tst_${name} test_data)
target_link_libraries(tst_${name} MultiMC_logic)
qt5_use_modules(tst_${name} Test Core Network)
list(APPEND MultiMC_TESTS tst_${name})
@ -32,6 +35,7 @@ add_unit_test(Resource tst_Resource.cpp)
add_unit_test(GZip tst_GZip.cpp)
add_unit_test(JavaVersion tst_JavaVersion.cpp)
add_unit_test(ParseUtils tst_ParseUtils.cpp)
add_unit_test(MojangVersionFormat tst_MojangVersionFormat.cpp)
# Tests END #
@ -91,7 +95,21 @@ if(MultiMC_CODE_COVERAGE)
add_custom_target(MultiMC_RUN_TESTS DEPENDS MultiMC_GENERATE_COVERAGE_HTML)
endif(MultiMC_CODE_COVERAGE)
set(MultiMC_TEST_DATA_PATH "${CMAKE_CURRENT_BINARY_DIR}/data")
set(MultiMC_TEST_DATA_PATH_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/data")
set(MultiMC_TEST_DATA_PATH_RAW "${CMAKE_CURRENT_BINARY_DIR}/data_raw")
set(MultiMC_TEST_DATA_PATH_SOURCE_RAW "${CMAKE_CURRENT_SOURCE_DIR}/data_raw")
# clean and replace test data
add_custom_command(
TARGET test_data
COMMAND ${CMAKE_COMMAND} -E remove_directory ${MultiMC_TEST_DATA_PATH}
COMMAND ${CMAKE_COMMAND} -E remove_directory ${MultiMC_TEST_DATA_PATH}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${MultiMC_TEST_DATA_PATH_SOURCE} ${MultiMC_TEST_DATA_PATH}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${MultiMC_TEST_DATA_PATH_SOURCE_RAW} ${MultiMC_TEST_DATA_PATH_RAW}
)
message("${CMAKE_CURRENT_BINARY_DIR}/data")
if(UNIX)
# on unix we get the third / from the filename
@ -100,18 +118,4 @@ else()
# we don't on windows, so we have to add it ourselves
set(MultiMC_TEST_DATA_PATH "file:///${MultiMC_TEST_DATA_PATH}")
endif()
file(GLOB data_files "data/*")
foreach(data_file ${data_files})
get_filename_component(filename ${data_file} NAME)
configure_file(
${data_file}
${CMAKE_CURRENT_BINARY_DIR}/data/${filename}
@ONLY
NEWLINE_STYLE LF
)
endforeach()
file(GLOB raw_data_files "data_raw/*")
file(COPY ${raw_data_files} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
configure_file(test_config.h.in test_config.h @ONLY)

198
tests/data/1.9-simple.json Normal file
View File

@ -0,0 +1,198 @@
{
"assets": "1.9",
"id": "1.9",
"libraries": [
{
"name": "oshi-project:oshi-core:1.1"
},
{
"name": "net.java.dev.jna:jna:3.4.0"
},
{
"name": "net.java.dev.jna:platform:3.4.0"
},
{
"name": "com.ibm.icu:icu4j-core-mojang:51.2"
},
{
"name": "net.sf.jopt-simple:jopt-simple:4.6"
},
{
"name": "com.paulscode:codecjorbis:20101023"
},
{
"name": "com.paulscode:codecwav:20101023"
},
{
"name": "com.paulscode:libraryjavasound:20101123"
},
{
"name": "com.paulscode:librarylwjglopenal:20100824"
},
{
"name": "com.paulscode:soundsystem:20120107"
},
{
"name": "io.netty:netty-all:4.0.23.Final"
},
{
"name": "com.google.guava:guava:17.0"
},
{
"name": "org.apache.commons:commons-lang3:3.3.2"
},
{
"name": "commons-io:commons-io:2.4"
},
{
"name": "commons-codec:commons-codec:1.9"
},
{
"name": "net.java.jinput:jinput:2.0.5"
},
{
"name": "net.java.jutils:jutils:1.0.0"
},
{
"name": "com.google.code.gson:gson:2.2.4"
},
{
"name": "com.mojang:authlib:1.5.22"
},
{
"name": "com.mojang:realms:1.8.4"
},
{
"name": "org.apache.commons:commons-compress:1.8.1"
},
{
"name": "org.apache.httpcomponents:httpclient:4.3.3"
},
{
"name": "commons-logging:commons-logging:1.1.3"
},
{
"name": "org.apache.httpcomponents:httpcore:4.3.2"
},
{
"name": "org.apache.logging.log4j:log4j-api:2.0-beta9"
},
{
"name": "org.apache.logging.log4j:log4j-core:2.0-beta9"
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "net.java.jinput:jinput-platform:2.0.5",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
}
}
],
"mainClass": "net.minecraft.client.main.Main",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"minimumLauncherVersion": 18,
"releaseTime": "2016-02-29T13:49:54+00:00",
"time": "2016-03-01T13:14:53+00:00",
"type": "release"
}

529
tests/data/1.9.json Normal file
View File

@ -0,0 +1,529 @@
{
"assetIndex": {
"id": "1.9",
"sha1": "cde65b47a43f638653ab1da3848b53f8a7477b16",
"size": 136916,
"totalSize": 119917473,
"url": "https://launchermeta.mojang.com/mc-staging/assets/1.9/cde65b47a43f638653ab1da3848b53f8a7477b16/1.9.json"
},
"assets": "1.9",
"downloads": {
"client": {
"sha1": "2f67dfe8953299440d1902f9124f0f2c3a2c940f",
"size": 8697592,
"url": "https://launcher.mojang.com/mc/game/1.9/client/2f67dfe8953299440d1902f9124f0f2c3a2c940f/client.jar"
},
"server": {
"sha1": "b4d449cf2918e0f3bd8aa18954b916a4d1880f0d",
"size": 8848015,
"url": "https://launcher.mojang.com/mc/game/1.9/server/b4d449cf2918e0f3bd8aa18954b916a4d1880f0d/server.jar"
}
},
"id": "1.9",
"libraries": [
{
"downloads": {
"artifact": {
"path": "oshi-project/oshi-core/1.1/oshi-core-1.1.jar",
"sha1": "9ddf7b048a8d701be231c0f4f95fd986198fd2d8",
"size": 30973,
"url": "https://libraries.minecraft.net/oshi-project/oshi-core/1.1/oshi-core-1.1.jar"
}
},
"name": "oshi-project:oshi-core:1.1"
},
{
"downloads": {
"artifact": {
"path": "net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar",
"sha1": "803ff252fedbd395baffd43b37341dc4a150a554",
"size": 1008730,
"url": "https://libraries.minecraft.net/net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar"
}
},
"name": "net.java.dev.jna:jna:3.4.0"
},
{
"downloads": {
"artifact": {
"path": "net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar",
"sha1": "e3f70017be8100d3d6923f50b3d2ee17714e9c13",
"size": 913436,
"url": "https://libraries.minecraft.net/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar"
}
},
"name": "net.java.dev.jna:platform:3.4.0"
},
{
"downloads": {
"artifact": {
"path": "com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar",
"sha1": "63d216a9311cca6be337c1e458e587f99d382b84",
"size": 1634692,
"url": "https://libraries.minecraft.net/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar"
}
},
"name": "com.ibm.icu:icu4j-core-mojang:51.2"
},
{
"downloads": {
"artifact": {
"path": "net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar",
"sha1": "306816fb57cf94f108a43c95731b08934dcae15c",
"size": 62477,
"url": "https://libraries.minecraft.net/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar"
}
},
"name": "net.sf.jopt-simple:jopt-simple:4.6"
},
{
"downloads": {
"artifact": {
"path": "com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar",
"sha1": "c73b5636faf089d9f00e8732a829577de25237ee",
"size": 103871,
"url": "https://libraries.minecraft.net/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar"
}
},
"name": "com.paulscode:codecjorbis:20101023"
},
{
"downloads": {
"artifact": {
"path": "com/paulscode/codecwav/20101023/codecwav-20101023.jar",
"sha1": "12f031cfe88fef5c1dd36c563c0a3a69bd7261da",
"size": 5618,
"url": "https://libraries.minecraft.net/com/paulscode/codecwav/20101023/codecwav-20101023.jar"
}
},
"name": "com.paulscode:codecwav:20101023"
},
{
"downloads": {
"artifact": {
"path": "com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar",
"sha1": "5c5e304366f75f9eaa2e8cca546a1fb6109348b3",
"size": 21679,
"url": "https://libraries.minecraft.net/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar"
}
},
"name": "com.paulscode:libraryjavasound:20101123"
},
{
"downloads": {
"artifact": {
"path": "com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar",
"sha1": "73e80d0794c39665aec3f62eee88ca91676674ef",
"size": 18981,
"url": "https://libraries.minecraft.net/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar"
}
},
"name": "com.paulscode:librarylwjglopenal:20100824"
},
{
"downloads": {
"artifact": {
"path": "com/paulscode/soundsystem/20120107/soundsystem-20120107.jar",
"sha1": "419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6",
"size": 65020,
"url": "https://libraries.minecraft.net/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar"
}
},
"name": "com.paulscode:soundsystem:20120107"
},
{
"downloads": {
"artifact": {
"path": "io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.jar",
"sha1": "0294104aaf1781d6a56a07d561e792c5d0c95f45",
"size": 1779991,
"url": "https://libraries.minecraft.net/io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.jar"
}
},
"name": "io.netty:netty-all:4.0.23.Final"
},
{
"downloads": {
"artifact": {
"path": "com/google/guava/guava/17.0/guava-17.0.jar",
"sha1": "9c6ef172e8de35fd8d4d8783e4821e57cdef7445",
"size": 2243036,
"url": "https://libraries.minecraft.net/com/google/guava/guava/17.0/guava-17.0.jar"
}
},
"name": "com.google.guava:guava:17.0"
},
{
"downloads": {
"artifact": {
"path": "org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar",
"sha1": "90a3822c38ec8c996e84c16a3477ef632cbc87a3",
"size": 412739,
"url": "https://libraries.minecraft.net/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar"
}
},
"name": "org.apache.commons:commons-lang3:3.3.2"
},
{
"downloads": {
"artifact": {
"path": "commons-io/commons-io/2.4/commons-io-2.4.jar",
"sha1": "b1b6ea3b7e4aa4f492509a4952029cd8e48019ad",
"size": 185140,
"url": "https://libraries.minecraft.net/commons-io/commons-io/2.4/commons-io-2.4.jar"
}
},
"name": "commons-io:commons-io:2.4"
},
{
"downloads": {
"artifact": {
"path": "commons-codec/commons-codec/1.9/commons-codec-1.9.jar",
"sha1": "9ce04e34240f674bc72680f8b843b1457383161a",
"size": 263965,
"url": "https://libraries.minecraft.net/commons-codec/commons-codec/1.9/commons-codec-1.9.jar"
}
},
"name": "commons-codec:commons-codec:1.9"
},
{
"downloads": {
"artifact": {
"path": "net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar",
"sha1": "39c7796b469a600f72380316f6b1f11db6c2c7c4",
"size": 208338,
"url": "https://libraries.minecraft.net/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar"
}
},
"name": "net.java.jinput:jinput:2.0.5"
},
{
"downloads": {
"artifact": {
"path": "net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar",
"sha1": "e12fe1fda814bd348c1579329c86943d2cd3c6a6",
"size": 7508,
"url": "https://libraries.minecraft.net/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar"
}
},
"name": "net.java.jutils:jutils:1.0.0"
},
{
"downloads": {
"artifact": {
"path": "com/google/code/gson/gson/2.2.4/gson-2.2.4.jar",
"sha1": "a60a5e993c98c864010053cb901b7eab25306568",
"size": 190432,
"url": "https://libraries.minecraft.net/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar"
}
},
"name": "com.google.code.gson:gson:2.2.4"
},
{
"downloads": {
"artifact": {
"path": "com/mojang/authlib/1.5.22/authlib-1.5.22.jar",
"sha1": "afaa8f6df976fcb5520e76ef1d5798c9e6b5c0b2",
"size": 64539,
"url": "https://libraries.minecraft.net/com/mojang/authlib/1.5.22/authlib-1.5.22.jar"
}
},
"name": "com.mojang:authlib:1.5.22"
},
{
"downloads": {
"artifact": {
"path": "com/mojang/realms/1.8.4/realms-1.8.4.jar",
"sha1": "15f8dc326c97a96dee6e65392e145ad6d1cb46cb",
"size": 1131574,
"url": "https://libraries.minecraft.net/com/mojang/realms/1.8.4/realms-1.8.4.jar"
}
},
"name": "com.mojang:realms:1.8.4"
},
{
"downloads": {
"artifact": {
"path": "org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar",
"sha1": "a698750c16740fd5b3871425f4cb3bbaa87f529d",
"size": 365552,
"url": "https://libraries.minecraft.net/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar"
}
},
"name": "org.apache.commons:commons-compress:1.8.1"
},
{
"downloads": {
"artifact": {
"path": "org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar",
"sha1": "18f4247ff4572a074444572cee34647c43e7c9c7",
"size": 589512,
"url": "https://libraries.minecraft.net/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar"
}
},
"name": "org.apache.httpcomponents:httpclient:4.3.3"
},
{
"downloads": {
"artifact": {
"path": "commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar",
"sha1": "f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f",
"size": 62050,
"url": "https://libraries.minecraft.net/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar"
}
},
"name": "commons-logging:commons-logging:1.1.3"
},
{
"downloads": {
"artifact": {
"path": "org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar",
"sha1": "31fbbff1ddbf98f3aa7377c94d33b0447c646b6e",
"size": 282269,
"url": "https://libraries.minecraft.net/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar"
}
},
"name": "org.apache.httpcomponents:httpcore:4.3.2"
},
{
"downloads": {
"artifact": {
"path": "org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar",
"sha1": "1dd66e68cccd907880229f9e2de1314bd13ff785",
"size": 108161,
"url": "https://libraries.minecraft.net/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar"
}
},
"name": "org.apache.logging.log4j:log4j-api:2.0-beta9"
},
{
"downloads": {
"artifact": {
"path": "org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar",
"sha1": "678861ba1b2e1fccb594bb0ca03114bb05da9695",
"size": 681134,
"url": "https://libraries.minecraft.net/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar"
}
},
"name": "org.apache.logging.log4j:log4j-core:2.0-beta9"
},
{
"downloads": {
"artifact": {
"path": "org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar",
"sha1": "697517568c68e78ae0b4544145af031c81082dfe",
"size": 1047168,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar"
}
},
"name": "org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"downloads": {
"artifact": {
"path": "org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar",
"sha1": "d51a7c040a721d13efdfbd34f8b257b2df882ad0",
"size": 173887,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar"
}
},
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"downloads": {
"artifact": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar",
"sha1": "b04f3ee8f5e43fa3b162981b50bb72fe1acabb33",
"size": 22,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar"
},
"classifiers": {
"natives-linux": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar",
"sha1": "931074f46c795d2f7b30ed6395df5715cfd7675b",
"size": 578680,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-linux.jar"
},
"natives-osx": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar",
"sha1": "bcab850f8f487c3f4c4dbabde778bb82bd1a40ed",
"size": 426822,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-osx.jar"
},
"natives-windows": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar",
"sha1": "b84d5102b9dbfabfeb5e43c7e2828d98a7fc80e0",
"size": 613748,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar"
}
}
},
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"downloads": {
"artifact": {
"path": "org/lwjgl/lwjgl/lwjgl/2.9.2-nightly-20140822/lwjgl-2.9.2-nightly-20140822.jar",
"sha1": "7707204c9ffa5d91662de95f0a224e2f721b22af",
"size": 1045632,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl/2.9.2-nightly-20140822/lwjgl-2.9.2-nightly-20140822.jar"
}
},
"name": "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"downloads": {
"artifact": {
"path": "org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar",
"sha1": "f0e612c840a7639c1f77f68d72a28dae2f0c8490",
"size": 173887,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar"
}
},
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"downloads": {
"classifiers": {
"natives-linux": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar",
"sha1": "d898a33b5d0a6ef3fed3a4ead506566dce6720a5",
"size": 578539,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-linux.jar"
},
"natives-osx": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar",
"sha1": "79f5ce2fea02e77fe47a3c745219167a542121d7",
"size": 468116,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-osx.jar"
},
"natives-windows": {
"path": "org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar",
"sha1": "78b2a55ce4dc29c6b3ec4df8ca165eba05f9b341",
"size": 613680,
"url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.2-nightly-20140822/lwjgl-platform-2.9.2-nightly-20140822-natives-windows.jar"
}
}
},
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
},
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"downloads": {
"classifiers": {
"natives-linux": {
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-linux.jar",
"sha1": "7ff832a6eb9ab6a767f1ade2b548092d0fa64795",
"size": 10362,
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-linux.jar"
},
"natives-osx": {
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-osx.jar",
"sha1": "53f9c919f34d2ca9de8c51fc4e1e8282029a9232",
"size": 12186,
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-osx.jar"
},
"natives-windows": {
"path": "net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar",
"sha1": "385ee093e01f587f30ee1c8a2ee7d408fd732e16",
"size": 155179,
"url": "https://libraries.minecraft.net/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar"
}
}
},
"extract": {
"exclude": [
"META-INF/"
]
},
"name": "net.java.jinput:jinput-platform:2.0.5",
"natives": {
"linux": "natives-linux",
"osx": "natives-osx",
"windows": "natives-windows"
}
}
],
"mainClass": "net.minecraft.client.main.Main",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}",
"minimumLauncherVersion": 18,
"releaseTime": "2016-02-29T13:49:54+00:00",
"time": "2016-03-01T13:14:53+00:00",
"type": "release"
}

View File

@ -0,0 +1,54 @@
#include <QTest>
#include <QDebug>
#include "TestUtil.h"
#include "minecraft/MojangVersionFormat.h"
class MojangVersionFormatTest : public QObject
{
Q_OBJECT
static QJsonDocument readJson(const char *file)
{
auto path = QFINDTESTDATA(file);
QFile jsonFile(path);
jsonFile.open(QIODevice::ReadOnly);
auto data = jsonFile.readAll();
jsonFile.close();
return QJsonDocument::fromJson(data);
}
static void writeJson(const char *file, QJsonDocument doc)
{
QFile jsonFile(file);
jsonFile.open(QIODevice::WriteOnly | QIODevice::Text);
auto data = doc.toJson(QJsonDocument::Indented);
jsonFile.write(data);
jsonFile.close();
}
private
slots:
void test_Through_Simple()
{
QJsonDocument doc = readJson("tests/data/1.9-simple.json");
auto vfile = MojangVersionFormat::versionFileFromJson(doc, "1.9-simple.json");
auto doc2 = MojangVersionFormat::profilePatchToJson(vfile);
writeJson("beast.json", doc2);
QCOMPARE(doc, doc2);
}
void test_Through()
{
QJsonDocument doc = readJson("tests/data/1.9.json");
auto vfile = MojangVersionFormat::versionFileFromJson(doc, "1.9.json");
auto doc2 = MojangVersionFormat::profilePatchToJson(vfile);
QCOMPARE(doc, doc2);
}
};
QTEST_GUILESS_MAIN(MojangVersionFormatTest)
#include "tst_MojangVersionFormat.moc"