Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
nerzhul committed Feb 21, 2015
1 parent 38e6280 commit b3aeba6
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 28 deletions.
6 changes: 5 additions & 1 deletion src/CMakeLists.txt
Expand Up @@ -355,6 +355,10 @@ add_subdirectory(jthread)
add_subdirectory(script)
add_subdirectory(util)

set (unittests_SRCS
test.cpp
)

set(common_SRCS
ban.cpp
base64.cpp
Expand Down Expand Up @@ -422,7 +426,6 @@ set(common_SRCS
sound.cpp
staticobject.cpp
subgame.cpp
test.cpp
tool.cpp
treegen.cpp
version.cpp
Expand All @@ -435,6 +438,7 @@ set(common_SRCS
${JTHREAD_SRCS}
${common_SCRIPT_SRCS}
${UTIL_SRCS}
${unittests_SRCS}
)

# This gives us the icon and file version information
Expand Down
23 changes: 4 additions & 19 deletions src/main.cpp
Expand Up @@ -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.
*/

#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
#ifndef SERVER // Dedicated server isn't linked with Irrlicht
#pragma comment(lib, "Irrlicht.lib")
Expand Down Expand Up @@ -279,9 +266,9 @@ int main(int argc, char *argv[])

#ifndef __ANDROID__
// Run unit tests
if ((ENABLE_TESTS && cmd_args.getFlag("disable-unittests") == false)
|| cmd_args.getFlag("enable-unittests") == true) {
if (cmd_args.getFlag("do-unittests")) {
run_tests();
return 0;
}
#endif

Expand Down Expand Up @@ -352,10 +339,8 @@ static void set_allowed_options(OptionList *allowed_options)
_("Load configuration from specified file"))));
allowed_options->insert(std::make_pair("port", ValueSpec(VALUETYPE_STRING,
_("Set network port (UDP)"))));
allowed_options->insert(std::make_pair("disable-unittests", ValueSpec(VALUETYPE_FLAG,
_("Disable unit tests"))));
allowed_options->insert(std::make_pair("enable-unittests", ValueSpec(VALUETYPE_FLAG,
_("Enable unit tests"))));
allowed_options->insert(std::make_pair("do-unittests", ValueSpec(VALUETYPE_FLAG,

This comment has been minimized.

Copy link
@Zeno-

Zeno- Feb 22, 2015

Contributor

Before people get too used to this, I think that run-unittests might be a better command

Edit: I dunno actually... maybe do-unittests is better

This comment has been minimized.

Copy link
@sfan5

sfan5 Feb 23, 2015

Member

IMO run-unittests is better

This comment has been minimized.

Copy link
@ShadowNinja

ShadowNinja Feb 23, 2015

Member

run-unit-tests sounds best to me.

_("Run the unit tests and exit"))));
allowed_options->insert(std::make_pair("map-dir", ValueSpec(VALUETYPE_STRING,
_("Same as --world (deprecated)"))));
allowed_options->insert(std::make_pair("world", ValueSpec(VALUETYPE_STRING,
Expand Down
14 changes: 7 additions & 7 deletions src/test.cpp
Expand Up @@ -2132,23 +2132,23 @@ void run_tests()
TEST(TestCollision);
if(INTERNET_SIMULATOR == false){
TEST(TestSocket);
dout_con<<"=== BEGIN RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl;
dout_con << "=== BEGIN RUNNING UNIT TESTS FOR CONNECTION ===" << std::endl;
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);

delete idef;
delete ndef;

if(tests_failed == 0){
infostream<<"run_tests(): "<<tests_failed<<" / "<<tests_run<<" tests failed."<<std::endl;
infostream<<"run_tests() passed."<<std::endl;
if(tests_failed == 0) {
actionstream << "run_tests(): " << tests_failed << " / " << tests_run << " tests failed." << std::endl;
actionstream << "run_tests() passed." << std::endl;
return;
} else {
errorstream<<"run_tests(): "<<tests_failed<<" / "<<tests_run<<" tests failed."<<std::endl;
errorstream<<"run_tests() aborting."<<std::endl;
errorstream << "run_tests(): " << tests_failed << " / " << tests_run << " tests failed." << std::endl;
errorstream << "run_tests() aborting." << std::endl;
abort();
}
}
Expand Down
6 changes: 5 additions & 1 deletion util/travis/script.sh
Expand Up @@ -3,8 +3,12 @@
if [ $WINDOWS = "no" ]; then
mkdir -p 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
echo "Running unit tests for minetest"
../bin/minetest --do-unittests
echo "Running unit tests for minetestserver"
../bin/minetestserver --do-unittests
else
[ $CC = "clang" ] && exit 1 # Not supposed to happen
# We need to have our build directory outside of the minetest directory because
Expand Down

0 comments on commit b3aeba6

Please sign in to comment.