Unit tests must be done at integration process.

* Remove --enable-unittests and --disable-unittests and add --do-unittests function
* --do-unittests function will exit 0 on success.
* minetest and minetestserver binaries are launched with --do-unittests in travis build.
This commit is contained in:
Loic Blot 2015-02-19 09:38:01 +01:00
parent 38e6280552
commit b3aeba684b
4 changed files with 21 additions and 28 deletions

@ -355,6 +355,10 @@ add_subdirectory(jthread)
add_subdirectory(script) add_subdirectory(script)
add_subdirectory(util) add_subdirectory(util)
set (unittests_SRCS
test.cpp
)
set(common_SRCS set(common_SRCS
ban.cpp ban.cpp
base64.cpp base64.cpp
@ -422,7 +426,6 @@ set(common_SRCS
sound.cpp sound.cpp
staticobject.cpp staticobject.cpp
subgame.cpp subgame.cpp
test.cpp
tool.cpp tool.cpp
treegen.cpp treegen.cpp
version.cpp version.cpp
@ -435,6 +438,7 @@ set(common_SRCS
${JTHREAD_SRCS} ${JTHREAD_SRCS}
${common_SCRIPT_SRCS} ${common_SCRIPT_SRCS}
${UTIL_SRCS} ${UTIL_SRCS}
${unittests_SRCS}
) )
# This gives us the icon and file version information # This gives us the icon and file version information

@ -17,19 +17,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#ifdef NDEBUG
/*#ifdef _WIN32
#pragma message ("Disabling unit tests")
#else
#warning "Disabling unit tests"
#endif*/
// Disable unit tests
#define ENABLE_TESTS 0
#else
// Enable unit tests
#define ENABLE_TESTS 1
#endif
#ifdef _MSC_VER #ifdef _MSC_VER
#ifndef SERVER // Dedicated server isn't linked with Irrlicht #ifndef SERVER // Dedicated server isn't linked with Irrlicht
#pragma comment(lib, "Irrlicht.lib") #pragma comment(lib, "Irrlicht.lib")
@ -279,9 +266,9 @@ int main(int argc, char *argv[])
#ifndef __ANDROID__ #ifndef __ANDROID__
// Run unit tests // Run unit tests
if ((ENABLE_TESTS && cmd_args.getFlag("disable-unittests") == false) if (cmd_args.getFlag("do-unittests")) {
|| cmd_args.getFlag("enable-unittests") == true) {
run_tests(); run_tests();
return 0;
} }
#endif #endif
@ -352,10 +339,8 @@ static void set_allowed_options(OptionList *allowed_options)
_("Load configuration from specified file")))); _("Load configuration from specified file"))));
allowed_options->insert(std::make_pair("port", ValueSpec(VALUETYPE_STRING, allowed_options->insert(std::make_pair("port", ValueSpec(VALUETYPE_STRING,
_("Set network port (UDP)")))); _("Set network port (UDP)"))));
allowed_options->insert(std::make_pair("disable-unittests", ValueSpec(VALUETYPE_FLAG, allowed_options->insert(std::make_pair("do-unittests", ValueSpec(VALUETYPE_FLAG,
_("Disable unit tests")))); _("Run the unit tests and exit"))));
allowed_options->insert(std::make_pair("enable-unittests", ValueSpec(VALUETYPE_FLAG,
_("Enable unit tests"))));
allowed_options->insert(std::make_pair("map-dir", ValueSpec(VALUETYPE_STRING, allowed_options->insert(std::make_pair("map-dir", ValueSpec(VALUETYPE_STRING,
_("Same as --world (deprecated)")))); _("Same as --world (deprecated)"))));
allowed_options->insert(std::make_pair("world", ValueSpec(VALUETYPE_STRING, allowed_options->insert(std::make_pair("world", ValueSpec(VALUETYPE_STRING,

@ -2132,9 +2132,9 @@ void run_tests()
TEST(TestCollision); TEST(TestCollision);
if(INTERNET_SIMULATOR == false){ if(INTERNET_SIMULATOR == false){
TEST(TestSocket); TEST(TestSocket);
dout_con<<"=== BEGIN RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl; dout_con << "=== BEGIN RUNNING UNIT TESTS FOR CONNECTION ===" << std::endl;
TEST(TestConnection); TEST(TestConnection);
dout_con<<"=== END RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl; dout_con << "=== END RUNNING UNIT TESTS FOR CONNECTION ===" << std::endl;
} }
log_set_lev_silence(LMT_ERROR, false); log_set_lev_silence(LMT_ERROR, false);
@ -2142,13 +2142,13 @@ void run_tests()
delete idef; delete idef;
delete ndef; delete ndef;
if(tests_failed == 0){ if(tests_failed == 0) {
infostream<<"run_tests(): "<<tests_failed<<" / "<<tests_run<<" tests failed."<<std::endl; actionstream << "run_tests(): " << tests_failed << " / " << tests_run << " tests failed." << std::endl;
infostream<<"run_tests() passed."<<std::endl; actionstream << "run_tests() passed." << std::endl;
return; return;
} else { } else {
errorstream<<"run_tests(): "<<tests_failed<<" / "<<tests_run<<" tests failed."<<std::endl; errorstream << "run_tests(): " << tests_failed << " / " << tests_run << " tests failed." << std::endl;
errorstream<<"run_tests() aborting."<<std::endl; errorstream << "run_tests() aborting." << std::endl;
abort(); abort();
} }
} }

@ -3,8 +3,12 @@
if [ $WINDOWS = "no" ]; then if [ $WINDOWS = "no" ]; then
mkdir -p travisbuild mkdir -p travisbuild
cd travisbuild cd travisbuild
cmake -DENABLE_GETTEXT=1 -DENABLE_LEVELDB=1 -DENABLE_REDIS=1 .. cmake -DENABLE_GETTEXT=1 -DENABLE_LEVELDB=1 -DENABLE_REDIS=1 -DCMAKE_BUILD_TYPE=Debug ..
make -j2 make -j2
echo "Running unit tests for minetest"
../bin/minetest --do-unittests
echo "Running unit tests for minetestserver"
../bin/minetestserver --do-unittests
else else
[ $CC = "clang" ] && exit 1 # Not supposed to happen [ $CC = "clang" ] && exit 1 # Not supposed to happen
# We need to have our build directory outside of the minetest directory because # We need to have our build directory outside of the minetest directory because