mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Add lua exception handling test code
Catch some error situations when mod used without thinking about it
This commit is contained in:
parent
3e267a6ece
commit
e09293b483
3 changed files with 146 additions and 0 deletions
|
@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "server.h"
|
||||
#include "environment.h"
|
||||
#include "player.h"
|
||||
#include "log.h"
|
||||
|
||||
// request_shutdown()
|
||||
int ModApiServer::l_request_shutdown(lua_State *L)
|
||||
|
@ -449,6 +450,36 @@ int ModApiServer::l_notify_authentication_modified(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
// cause_error(type_of_error)
|
||||
int ModApiServer::l_cause_error(lua_State *L)
|
||||
{
|
||||
NO_MAP_LOCK_REQUIRED;
|
||||
std::string type_of_error = "none";
|
||||
if(lua_isstring(L, 1))
|
||||
type_of_error = lua_tostring(L, 1);
|
||||
|
||||
errorstream << "Error handler test called, errortype=" << type_of_error << std::endl;
|
||||
|
||||
if(type_of_error == "segv") {
|
||||
volatile int* some_pointer = 0;
|
||||
errorstream << "Cause a sigsegv now: " << (*some_pointer) << std::endl;
|
||||
|
||||
} else if (type_of_error == "zerodivision") {
|
||||
|
||||
unsigned int some_number = porting::getTimeS();
|
||||
unsigned int zerovalue = 0;
|
||||
unsigned int result = some_number / zerovalue;
|
||||
errorstream << "Well this shouldn't ever be shown: " << result << std::endl;
|
||||
|
||||
} else if (type_of_error == "exception") {
|
||||
throw BaseException("Errorhandler test fct called");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void ModApiServer::Initialize(lua_State *L, int top)
|
||||
{
|
||||
API_FCT(request_shutdown);
|
||||
|
@ -475,4 +506,8 @@ void ModApiServer::Initialize(lua_State *L, int top)
|
|||
API_FCT(kick_player);
|
||||
API_FCT(unban_player_or_ip);
|
||||
API_FCT(notify_authentication_modified);
|
||||
|
||||
#ifndef NDEBUG
|
||||
API_FCT(cause_error);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue