Various updater fixes
Updater tests for path utils The updater now doesn't use splitpath on Windows (fixes problems with Windows XP) Fix up paths for the OSX updater - should now install the updates into the right place Fix translations install path - translation isntall and deploy should be fixed
This commit is contained in:
@ -10,6 +10,8 @@
|
||||
#include <string.h>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
// this actually works with mingw32, which we use.
|
||||
#include <libgen.h>
|
||||
|
||||
#ifdef PLATFORM_UNIX
|
||||
#include <unistd.h>
|
||||
@ -19,7 +21,6 @@
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#include <libgen.h>
|
||||
#endif
|
||||
|
||||
FileUtils::IOException::IOException(const std::string& error)
|
||||
@ -249,59 +250,18 @@ void FileUtils::removeFile(const char* src) throw (IOException)
|
||||
|
||||
std::string FileUtils::fileName(const char* path)
|
||||
{
|
||||
#ifdef PLATFORM_UNIX
|
||||
char* pathCopy = strdup(path);
|
||||
std::string basename = ::basename(pathCopy);
|
||||
free(pathCopy);
|
||||
return basename;
|
||||
#else
|
||||
char baseName[MAX_PATH];
|
||||
char extension[MAX_PATH];
|
||||
_splitpath_s(path,
|
||||
0, /* drive */
|
||||
0, /* drive length */
|
||||
0, /* dir */
|
||||
0, /* dir length */
|
||||
baseName,
|
||||
MAX_PATH, /* baseName length */
|
||||
extension,
|
||||
MAX_PATH /* extension length */
|
||||
);
|
||||
return std::string(baseName) + std::string(extension);
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string FileUtils::dirname(const char* path)
|
||||
{
|
||||
#ifdef PLATFORM_UNIX
|
||||
char* pathCopy = strdup(path);
|
||||
std::string dirname = ::dirname(pathCopy);
|
||||
free(pathCopy);
|
||||
return dirname;
|
||||
#else
|
||||
char drive[3];
|
||||
char dir[MAX_PATH];
|
||||
|
||||
_splitpath_s(path,
|
||||
drive, /* drive */
|
||||
3, /* drive length */
|
||||
dir,
|
||||
MAX_PATH, /* dir length */
|
||||
0, /* filename */
|
||||
0, /* filename length */
|
||||
0, /* extension */
|
||||
0 /* extension length */
|
||||
);
|
||||
|
||||
std::string result;
|
||||
if (drive[0])
|
||||
{
|
||||
result += std::string(drive);
|
||||
}
|
||||
result += dir;
|
||||
|
||||
return result;
|
||||
#endif
|
||||
}
|
||||
|
||||
void FileUtils::touch(const char* path) throw (IOException)
|
||||
|
@ -29,13 +29,18 @@ endforeach()
|
||||
|
||||
# Add unit test binaries
|
||||
macro(ADD_UPDATER_TEST CLASS)
|
||||
set(TEST_TARGET updater_${CLASS})
|
||||
add_executable(${TEST_TARGET} ${CLASS}.cpp)
|
||||
target_link_libraries(${TEST_TARGET} updatershared)
|
||||
add_test(NAME ${TEST_TARGET} COMMAND ${TEST_TARGET})
|
||||
if (APPLE)
|
||||
set_target_properties(${TEST_TARGET} PROPERTIES LINK_FLAGS "-framework Security -framework Cocoa")
|
||||
endif()
|
||||
set(TEST_TARGET updater_${CLASS})
|
||||
unset(srcs)
|
||||
list(APPEND srcs ${CLASS}.cpp)
|
||||
if (WIN32)
|
||||
list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/test.rc)
|
||||
endif()
|
||||
add_executable(${TEST_TARGET} ${srcs})
|
||||
target_link_libraries(${TEST_TARGET} updatershared)
|
||||
add_test(NAME ${TEST_TARGET} COMMAND ${TEST_TARGET})
|
||||
if (APPLE)
|
||||
set_target_properties(${TEST_TARGET} PROPERTIES LINK_FLAGS "-framework Security -framework Cocoa")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
add_updater_test(TestParseScript)
|
||||
|
@ -5,10 +5,39 @@
|
||||
|
||||
void TestFileUtils::testDirName()
|
||||
{
|
||||
std::string dirName;
|
||||
std::string fileName;
|
||||
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
std::string dirName = FileUtils::dirname("E:/Some Dir/App.exe");
|
||||
TEST_COMPARE(dirName,"E:/Some Dir/");
|
||||
// absolute paths
|
||||
dirName = FileUtils::dirname("E:/Some Dir/App.exe");
|
||||
TEST_COMPARE(dirName,"E:/Some Dir");
|
||||
fileName = FileUtils::fileName("E:/Some Dir/App.exe");
|
||||
TEST_COMPARE(fileName,"App.exe");
|
||||
|
||||
dirName = FileUtils::dirname("C:/Users/kitteh/AppData/Local/Temp/MultiMC5-yidaaa/MultiMC.exe");
|
||||
TEST_COMPARE(dirName,"C:/Users/kitteh/AppData/Local/Temp/MultiMC5-yidaaa");
|
||||
fileName = FileUtils::fileName("C:/Users/kitteh/AppData/Local/Temp/MultiMC5-yidaaa/MultiMC.exe");
|
||||
TEST_COMPARE(fileName,"MultiMC.exe");
|
||||
|
||||
#else
|
||||
// absolute paths
|
||||
dirName = FileUtils::dirname("/home/tester/foo bar/baz");
|
||||
TEST_COMPARE(dirName,"/home/tester/foo bar");
|
||||
fileName = FileUtils::fileName("/home/tester/foo bar/baz");
|
||||
TEST_COMPARE(fileName,"baz");
|
||||
#endif
|
||||
// current directory
|
||||
dirName = FileUtils::dirname("App.exe");
|
||||
TEST_COMPARE(dirName,".");
|
||||
fileName = FileUtils::fileName("App.exe");
|
||||
TEST_COMPARE(fileName,"App.exe");
|
||||
|
||||
// relative paths
|
||||
dirName = FileUtils::dirname("Foo/App.exe");
|
||||
TEST_COMPARE(dirName,"Foo");
|
||||
fileName = FileUtils::fileName("Foo/App.exe");
|
||||
TEST_COMPARE(fileName,"App.exe");
|
||||
}
|
||||
|
||||
void TestFileUtils::testIsRelative()
|
||||
|
@ -10,7 +10,7 @@ void TestParseScript::testParse()
|
||||
{
|
||||
UpdateScript script;
|
||||
|
||||
script.parse("file_list.xml");
|
||||
script.parse("mmc_updater/src/tests/file_list.xml");
|
||||
|
||||
TEST_COMPARE(script.isValid(),true);
|
||||
}
|
||||
|
27
mmc_updater/src/tests/test.manifest
Normal file
27
mmc_updater/src/tests/test.manifest
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<assemblyIdentity name="MultiMC.Test.0" type="win32" version="5.0.0.0" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<description>Custom Minecraft launcher for managing multiple installs.</description>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!--The ID below indicates app support for Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<!--The ID below indicates app support for Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<!--The ID below indicates app support for Windows Developer Preview / Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
28
mmc_updater/src/tests/test.rc
Normal file
28
mmc_updater/src/tests/test.rc
Normal file
@ -0,0 +1,28 @@
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
|
||||
1 RT_MANIFEST "test.manifest"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,0
|
||||
FILEOS VOS_NT_WINDOWS32
|
||||
FILETYPE VFT_APP
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "000004b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "MultiMC Contributors"
|
||||
VALUE "FileDescription", "Testcase"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
VALUE "ProductName", "MultiMC Testcase"
|
||||
VALUE "ProductVersion", "5"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x0000, 0x04b0 // Unicode
|
||||
END
|
||||
END
|
Reference in New Issue
Block a user