Skip to content

Commit e8ba5da

Browse files
committed
NOISSUE remove dead unit tests and reorganize CMake code related to unit tests
1 parent ed3884f commit e8ba5da

15 files changed

+169
-137
lines changed

cmake/UnitTest.cmake

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
find_package(Qt5Test REQUIRED)
2+
3+
set(TEST_RESOURCE_PATH ${CMAKE_CURRENT_LIST_DIR})
4+
5+
message(${TEST_RESOURCE_PATH})
6+
7+
function(add_unit_test name)
8+
set(options "")
9+
set(oneValueArgs DATA)
10+
set(multiValueArgs SOURCES LIBS QT)
11+
12+
cmake_parse_arguments(OPT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
13+
14+
if(WIN32)
15+
add_executable(tst_${name} ${OPT_SOURCES} ${TEST_RESOURCE_PATH}/UnitTest/test.rc)
16+
else()
17+
add_executable(tst_${name} ${OPT_SOURCES})
18+
endif()
19+
20+
if(NOT "${OPT_DATA}" STREQUAL "")
21+
set(TEST_DATA_PATH "${CMAKE_CURRENT_BINARY_DIR}/data")
22+
set(TEST_DATA_PATH_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${OPT_DATA}")
23+
message("From ${TEST_DATA_PATH_SRC} to ${TEST_DATA_PATH}")
24+
string(REGEX REPLACE "[/\\:]" "_" DATA_TARGET_NAME "${TEST_DATA_PATH_SRC}")
25+
if(UNIX)
26+
# on unix we get the third / from the filename
27+
set(TEST_DATA_URL "file://${TEST_DATA_PATH}")
28+
else()
29+
# we don't on windows, so we have to add it ourselves
30+
set(TEST_DATA_URL "file:///${TEST_DATA_PATH}")
31+
endif()
32+
if(NOT TARGET "${DATA_TARGET_NAME}")
33+
add_custom_target(${DATA_TARGET_NAME})
34+
add_dependencies(tst_${name} ${DATA_TARGET_NAME})
35+
add_custom_command(
36+
TARGET ${DATA_TARGET_NAME}
37+
COMMAND ${CMAKE_COMMAND} "-DTEST_DATA_URL=${TEST_DATA_URL}" -DSOURCE=${TEST_DATA_PATH_SRC} -DDESTINATION=${TEST_DATA_PATH} -P ${TEST_RESOURCE_PATH}/UnitTest/generate_test_data.cmake
38+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
39+
)
40+
endif()
41+
endif()
42+
43+
target_link_libraries(tst_${name} ${OPT_LIBS})
44+
qt5_use_modules(tst_${name} Test ${OPT_QT})
45+
46+
target_include_directories(tst_${name} PRIVATE "${TEST_RESOURCE_PATH}/UnitTest/")
47+
48+
add_test(NAME ${name} COMMAND tst_${name})
49+
endfunction()

tests/TestUtil.h renamed to cmake/UnitTest/TestUtil.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
#include <QTest>
66
#include <QDir>
77

8-
#include "test_config.h"
8+
#define expandstr(s) expandstr2(s)
9+
#define expandstr2(s) #s
910

1011
class TestsInternal
1112
{
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Copy files from source directory to destination directory, substituting any
2+
# variables. Create destination directory if it does not exist.
3+
4+
function(configure_files srcDir destDir)
5+
message(STATUS "Configuring directory ${destDir} from ${srcDir}")
6+
make_directory(${destDir})
7+
8+
file(GLOB templateFiles RELATIVE ${srcDir} ${srcDir}/*)
9+
foreach(templateFile ${templateFiles})
10+
set(srcTemplatePath ${srcDir}/${templateFile})
11+
if(NOT IS_DIRECTORY ${srcTemplatePath})
12+
message(STATUS "Configuring file ${templateFile}")
13+
configure_file(
14+
${srcTemplatePath}
15+
${destDir}/${templateFile}
16+
@ONLY
17+
NEWLINE_STYLE LF
18+
)
19+
else()
20+
message(STATUS "Recursing? ${srcTemplatePath}")
21+
configure_files("${srcTemplatePath}" "${destDir}/${templateFile}")
22+
endif()
23+
endforeach()
24+
endfunction()
25+
26+
configure_files(${SOURCE} ${DESTINATION})
File renamed without changes.
File renamed without changes.

tests/CMakeLists.txt

+82-66
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,82 @@
1-
# run the unit tests with `make test`
2-
find_package(Qt5Test)
3-
4-
add_custom_target(test_data)
5-
6-
unset(MultiMC_TESTS)
7-
macro(add_unit_test name)
8-
unset(srcs)
9-
foreach(arg ${testname} ${ARGN})
10-
list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/${arg})
11-
endforeach()
12-
if(WIN32)
13-
list(APPEND srcs ${CMAKE_CURRENT_SOURCE_DIR}/test.rc)
14-
endif()
15-
add_executable(tst_${name} ${srcs})
16-
add_dependencies(tst_${name} test_data)
17-
target_link_libraries(tst_${name} MultiMC_logic)
18-
qt5_use_modules(tst_${name} Test Core Network)
19-
list(APPEND MultiMC_TESTS tst_${name})
20-
add_test(NAME ${name} COMMAND tst_${name})
21-
endmacro()
22-
23-
# Tests BEGIN #
24-
25-
add_unit_test(gradlespecifier tst_gradlespecifier.cpp)
26-
add_unit_test(userutils tst_userutils.cpp)
27-
add_unit_test(modutils tst_modutils.cpp)
28-
add_unit_test(inifile tst_inifile.cpp)
29-
add_unit_test(FileSystem tst_FileSystem.cpp)
30-
add_unit_test(Library tst_Library.cpp)
31-
add_unit_test(UpdateChecker tst_UpdateChecker.cpp)
32-
add_unit_test(DownloadTask tst_DownloadTask.cpp)
33-
add_unit_test(filematchers tst_filematchers.cpp)
34-
add_unit_test(ModList tst_ModList.cpp)
35-
# add_unit_test(Resource tst_Resource.cpp)
36-
add_unit_test(GZip tst_GZip.cpp)
37-
add_unit_test(JavaVersion tst_JavaVersion.cpp)
38-
add_unit_test(ParseUtils tst_ParseUtils.cpp)
39-
add_unit_test(MojangVersionFormat tst_MojangVersionFormat.cpp)
40-
add_unit_test(BaseWonkoEntityLocalLoadTask tst_BaseWonkoEntityLocalLoadTask.cpp)
41-
add_unit_test(BaseWonkoEntityRemoteLoadTask tst_BaseWonkoEntityRemoteLoadTask.cpp)
42-
add_unit_test(WonkoVersionList tst_WonkoVersionList.cpp)
43-
add_unit_test(WonkoIndex tst_WonkoIndex.cpp)
44-
45-
# Tests END #
46-
47-
48-
set(MultiMC_TEST_DATA_PATH "${CMAKE_CURRENT_BINARY_DIR}/data")
49-
set(MultiMC_TEST_DATA_PATH_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/data")
50-
set(MultiMC_TEST_DATA_PATH_SOURCE_RAW "${CMAKE_CURRENT_SOURCE_DIR}/data_raw")
51-
52-
if(UNIX)
53-
# on unix we get the third / from the filename
54-
set(MultiMC_TEST_DATA_URL "file://${MultiMC_TEST_DATA_PATH}")
55-
else()
56-
# we don't on windows, so we have to add it ourselves
57-
set(MultiMC_TEST_DATA_URL "file:///${MultiMC_TEST_DATA_PATH}")
58-
endif()
59-
60-
# clean and replace test data
61-
add_custom_command(
62-
TARGET test_data
63-
COMMAND ${CMAKE_COMMAND} -DMultiMC_TEST_DATA_URL=${MultiMC_TEST_DATA_URL} -DMultiMC_TEST_DATA_PATH=${MultiMC_TEST_DATA_PATH} -DMultiMC_TEST_DATA_PATH_SOURCE=${MultiMC_TEST_DATA_PATH_SOURCE} -DMultiMC_TEST_DATA_PATH_SOURCE_RAW=${MultiMC_TEST_DATA_PATH_SOURCE_RAW} -P ${CMAKE_CURRENT_SOURCE_DIR}/copy_tests.cmake
64-
)
65-
66-
configure_file(test_config.h.in test_config.h @ONLY)
1+
include(UnitTest)
2+
3+
add_unit_test(gradlespecifier
4+
SOURCES tst_gradlespecifier.cpp
5+
LIBS MultiMC_logic
6+
)
7+
8+
add_unit_test(userutils
9+
SOURCES tst_userutils.cpp
10+
LIBS MultiMC_logic
11+
)
12+
13+
add_unit_test(modutils
14+
SOURCES tst_modutils.cpp
15+
LIBS MultiMC_logic
16+
)
17+
18+
add_unit_test(inifile
19+
SOURCES tst_inifile.cpp
20+
LIBS MultiMC_logic
21+
)
22+
23+
add_unit_test(FileSystem
24+
SOURCES tst_FileSystem.cpp
25+
LIBS MultiMC_logic
26+
)
27+
28+
add_unit_test(Library
29+
SOURCES tst_Library.cpp
30+
LIBS MultiMC_logic
31+
)
32+
33+
add_unit_test(UpdateChecker
34+
SOURCES tst_UpdateChecker.cpp
35+
LIBS MultiMC_logic
36+
DATA data
37+
)
38+
39+
add_unit_test(DownloadTask
40+
SOURCES tst_DownloadTask.cpp
41+
LIBS MultiMC_logic
42+
DATA data_raw
43+
)
44+
45+
add_unit_test(filematchers
46+
SOURCES tst_filematchers.cpp
47+
LIBS MultiMC_logic
48+
)
49+
50+
add_unit_test(ModList
51+
SOURCES tst_ModList.cpp
52+
LIBS MultiMC_logic
53+
)
54+
55+
# add_unit_test(Resource
56+
# SOURCES tst_Resource.cpp
57+
# )
58+
59+
add_unit_test(GZip
60+
SOURCES tst_GZip.cpp
61+
LIBS MultiMC_logic
62+
)
63+
64+
add_unit_test(JavaVersion
65+
SOURCES tst_JavaVersion.cpp
66+
LIBS MultiMC_logic
67+
)
68+
69+
add_unit_test(ParseUtils
70+
SOURCES tst_ParseUtils.cpp
71+
LIBS MultiMC_logic
72+
)
73+
74+
add_unit_test(MojangVersionFormat
75+
SOURCES tst_MojangVersionFormat.cpp
76+
LIBS MultiMC_logic
77+
)
78+
79+
add_unit_test(WonkoIndex
80+
SOURCES tst_WonkoIndex.cpp
81+
LIBS MultiMC_logic
82+
)

tests/copy_tests.cmake

-13
This file was deleted.

tests/data/1.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"Sources": [
99
{
1010
"SourceType": "http",
11-
"Url": "@MultiMC_TEST_DATA_URL@/fileOneA"
11+
"Url": "@TEST_DATA_URL@/fileOneA"
1212
}
1313
],
1414
"Executable": true,
@@ -20,7 +20,7 @@
2020
"Sources": [
2121
{
2222
"SourceType": "http",
23-
"Url": "@MultiMC_TEST_DATA_URL@/fileTwo"
23+
"Url": "@TEST_DATA_URL@/fileTwo"
2424
}
2525
],
2626
"Executable": false,
@@ -32,7 +32,7 @@
3232
"Sources": [
3333
{
3434
"SourceType": "http",
35-
"Url": "@MultiMC_TEST_DATA_URL@/fileThree"
35+
"Url": "@TEST_DATA_URL@/fileThree"
3636
}
3737
],
3838
"Executable": false,

tests/data/2.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"Sources": [
99
{
1010
"SourceType": "http",
11-
"Url": "@MultiMC_TEST_DATA_URL@/fileOneB"
11+
"Url": "@TEST_DATA_URL@/fileOneB"
1212
}
1313
],
1414
"Executable": true,
@@ -20,7 +20,7 @@
2020
"Sources": [
2121
{
2222
"SourceType": "http",
23-
"Url": "@MultiMC_TEST_DATA_URL@/fileTwo"
23+
"Url": "@TEST_DATA_URL@/fileTwo"
2424
}
2525
],
2626
"Executable": false,

tests/data/channels.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
"id": "develop",
66
"name": "Develop",
77
"description": "The channel called \"develop\"",
8-
"url": "@MultiMC_TEST_DATA_URL@"
8+
"url": "@TEST_DATA_URL@"
99
},
1010
{
1111
"id": "stable",
1212
"name": "Stable",
1313
"description": "It's stable at least",
14-
"url": "@MultiMC_TEST_DATA_URL@"
14+
"url": "@TEST_DATA_URL@"
1515
},
1616
{
1717
"id": "42",

tests/test_config.h.in

-3
This file was deleted.

tests/tst_BaseWonkoEntityLocalLoadTask.cpp

-15
This file was deleted.

tests/tst_BaseWonkoEntityRemoteLoadTask.cpp

-15
This file was deleted.

tests/tst_UpdateChecker.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Q_DECLARE_METATYPE(UpdateChecker::ChannelListEntry)
88

99
bool operator==(const UpdateChecker::ChannelListEntry &e1, const UpdateChecker::ChannelListEntry &e2)
1010
{
11+
qDebug() << e1.url << "vs" << e2.url;
1112
return e1.id == e2.id &&
1213
e1.name == e2.name &&
1314
e1.description == e2.description &&
@@ -76,8 +77,8 @@ private
7677
<< true
7778
<< true
7879
<< (QList<UpdateChecker::ChannelListEntry>()
79-
<< UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", MultiMC_TEST_DATA_URL}
80-
<< UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", MultiMC_TEST_DATA_URL}
80+
<< UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", findTestDataUrl("tests/data")}
81+
<< UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", findTestDataUrl("tests/data")}
8182
<< UpdateChecker::ChannelListEntry{"42", "The Channel", "This is the channel that is going to answer all of your questions", "https://dent.me/tea"});
8283
}
8384
void tst_ChannelListParsing()

tests/tst_WonkoVersionList.cpp

-15
This file was deleted.

0 commit comments

Comments
 (0)