Changed player.search to only search for players explicitly.
Added a MuxCommandOOC class to handle the OOC commands in a more uniform way. Fixed the @ic/@ooc and page commands. Resolves issue 233. Resolves issue 234.
This commit is contained in:
parent
96e95ca525
commit
8ad4f4a9fc
12 changed files with 253 additions and 168 deletions
|
|
@ -33,10 +33,11 @@ from src.objects.models import ObjectDB
|
|||
# ------------------------------------------------------------
|
||||
|
||||
# print all feedback from test commands (can become very verbose!)
|
||||
VERBOSE = False
|
||||
|
||||
VERBOSE = True
|
||||
NOMANGLE = True # mangle command input for extra testing
|
||||
|
||||
def cleanup():
|
||||
print "cleaning test database ..."
|
||||
User.objects.all().delete()
|
||||
PlayerDB.objects.all().delete()
|
||||
ObjectDB.objects.all().delete()
|
||||
|
|
@ -45,6 +46,7 @@ def cleanup():
|
|||
PlayerChannelConnection.objects.all().delete()
|
||||
ExternalChannelConnection.objects.all().delete()
|
||||
ServerConfig.objects.all().delete()
|
||||
cleanup()
|
||||
|
||||
class FakeSessionHandler(sessionhandler.ServerSessionHandler):
|
||||
"""
|
||||
|
|
@ -82,6 +84,7 @@ class FakeSession(serversession.ServerSession):
|
|||
def lineReceived(self, raw_string):
|
||||
pass
|
||||
def msg(self, message, data=None):
|
||||
global VERBOSE
|
||||
if message.startswith("Traceback (most recent call last):"):
|
||||
#retval = "Traceback last line: %s" % message.split('\n')[-4:]
|
||||
raise AssertionError(message)
|
||||
|
|
@ -103,6 +106,7 @@ class FakeSession(serversession.ServerSession):
|
|||
raise AssertionError(retval)
|
||||
if VERBOSE:
|
||||
print message
|
||||
# setting up objects
|
||||
|
||||
class CommandTest(TestCase):
|
||||
"""
|
||||
|
|
@ -111,53 +115,77 @@ class CommandTest(TestCase):
|
|||
|
||||
Inherit new tests from this.
|
||||
"""
|
||||
|
||||
NOMANGLE = True # mangle command input for extra testing
|
||||
print "creating command testing objects ..."
|
||||
ROOM1 = create.create_object(settings.BASE_ROOM_TYPECLASS, key="room1")
|
||||
ROOM2 = create.create_object(settings.BASE_ROOM_TYPECLASS, key="room2")
|
||||
# create a faux player/character for testing.
|
||||
CHAR1 = create.create_player("TestChar", "testplayer@test.com", "testpassword", character_location=ROOM1)
|
||||
CHAR1.player.user.is_superuser = True
|
||||
CHAR1.lock_storage = ""
|
||||
CHAR1.locks = LockHandler(CHAR1)
|
||||
CHAR1.ndb.return_string = None
|
||||
sess = FakeSession()
|
||||
sess.connectionMade()
|
||||
sess.session_login(CHAR1.player)
|
||||
# create second player
|
||||
CHAR2 = create.create_player("TestChar2", "testplayer2@test.com", "testpassword2", character_location=ROOM1)
|
||||
CHAR2.player.user.is_superuser = False
|
||||
CHAR2.lock_storage = ""
|
||||
CHAR2.locks = LockHandler(CHAR2)
|
||||
CHAR2.ndb.return_string = None
|
||||
sess2 = FakeSession()
|
||||
sess2.connectionMade()
|
||||
sess2.session_login(CHAR2.player)
|
||||
# A non-player-controlled character
|
||||
CHAR3 = create.create_object(settings.BASE_CHARACTER_TYPECLASS, key="TestChar3", location=ROOM1)
|
||||
# create some objects
|
||||
OBJ1 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj1", location=ROOM1)
|
||||
OBJ2 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj2", location=ROOM1)
|
||||
EXIT1 = create.create_object(settings.BASE_EXIT_TYPECLASS, key="exit1", location=ROOM1)
|
||||
EXIT2 = create.create_object(settings.BASE_EXIT_TYPECLASS, key="exit2", location=ROOM2)
|
||||
|
||||
def setUp(self):
|
||||
"sets up the testing environment"
|
||||
#ServerConfig.objects.conf("default_home", 2)
|
||||
|
||||
self.addCleanup(cleanup)
|
||||
self.room1 = self.ROOM1
|
||||
self.room2 = self.ROOM2
|
||||
self.char1 = self.CHAR1
|
||||
self.char2 = self.CHAR2
|
||||
self.char3 = self.CHAR3
|
||||
self.obj1 = self.OBJ1
|
||||
self.obj2 = self.OBJ2
|
||||
self.exit1 = self.EXIT1
|
||||
self.exit2 = self.EXIT2
|
||||
|
||||
self.room1 = create.create_object(settings.BASE_ROOM_TYPECLASS, key="room1")
|
||||
self.room2 = create.create_object(settings.BASE_ROOM_TYPECLASS, key="room2")
|
||||
# create a faux player/character for testing.
|
||||
self.char1 = create.create_player("TestChar", "testplayer@test.com", "testpassword", character_location=self.room1)
|
||||
self.char1.player.user.is_superuser = True
|
||||
self.char1.lock_storage = ""
|
||||
self.char1.locks = LockHandler(self.char1)
|
||||
self.char1.ndb.return_string = None
|
||||
sess = FakeSession()
|
||||
sess.connectionMade()
|
||||
sess.session_login(self.char1.player)
|
||||
# create second player
|
||||
self.char2 = create.create_player("TestChar2", "testplayer2@test.com", "testpassword2", character_location=self.room1)
|
||||
self.char2.player.user.is_superuser = False
|
||||
self.char2.lock_storage = ""
|
||||
self.char2.locks = LockHandler(self.char2)
|
||||
self.char2.ndb.return_string = None
|
||||
sess2 = FakeSession()
|
||||
sess2.connectionMade()
|
||||
sess2.session_login(self.char2.player)
|
||||
# A non-player-controlled character
|
||||
self.char3 = create.create_object(settings.BASE_CHARACTER_TYPECLASS, key="TestChar3", location=self.room1)
|
||||
# create some objects
|
||||
self.obj1 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj1", location=self.room1)
|
||||
self.obj2 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj2", location=self.room1)
|
||||
self.exit1 = create.create_object(settings.BASE_EXIT_TYPECLASS, key="exit1", location=self.room1)
|
||||
self.exit2 = create.create_object(settings.BASE_EXIT_TYPECLASS, key="exit2", location=self.room2)
|
||||
|
||||
def tearDown(self):
|
||||
"Cleans up testing environment after test has run."
|
||||
User.objects.all().delete()
|
||||
PlayerDB.objects.all().delete()
|
||||
ObjectDB.objects.all().delete()
|
||||
Channel.objects.all().delete()
|
||||
Msg.objects.all().delete()
|
||||
PlayerChannelConnection.objects.all().delete()
|
||||
ExternalChannelConnection.objects.all().delete()
|
||||
ServerConfig.objects.all().delete()
|
||||
#self.addCleanup(cleanup)
|
||||
#self.room1 = create.create_object(settings.BASE_ROOM_TYPECLASS, key="room1")
|
||||
#self.room2 = create.create_object(settings.BASE_ROOM_TYPECLASS, key="room2")
|
||||
## create a faux player/character for testing.
|
||||
#self.char1 = create.create_player("TestChar", "testplayer@test.com", "testpassword", character_location=self.room1)
|
||||
#self.char1.player.user.is_superuser = True
|
||||
#self.char1.lock_storage = ""
|
||||
#self.char1.locks = LockHandler(self.char1)
|
||||
#self.char1.ndb.return_string = None
|
||||
#sess = FakeSession()
|
||||
#sess.connectionMade()
|
||||
#sess.session_login(self.char1.player)
|
||||
## create second player
|
||||
#self.char2 = create.create_player("TestChar2", "testplayer2@test.com", "testpassword2", character_location=self.room1)
|
||||
#self.char2.player.user.is_superuser = False
|
||||
#self.char2.lock_storage = ""
|
||||
#self.char2.locks = LockHandler(self.char2)
|
||||
#self.char2.ndb.return_string = None
|
||||
#sess2 = FakeSession()
|
||||
#sess2.connectionMade()
|
||||
#sess2.session_login(self.char2.player)
|
||||
## A non-player-controlled character
|
||||
#self.char3 = create.create_object(settings.BASE_CHARACTER_TYPECLASS, key="TestChar3", location=self.room1)
|
||||
## create some objects
|
||||
#self.obj1 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj1", location=self.room1)
|
||||
#self.obj2 = create.create_object(settings.BASE_OBJECT_TYPECLASS, key="obj2", location=self.room1)
|
||||
#self.exit1 = create.create_object(settings.BASE_EXIT_TYPECLASS, key="exit1", location=self.room1)
|
||||
#self.exit2 = create.create_object(settings.BASE_EXIT_TYPECLASS, key="exit2", location=self.room2)
|
||||
|
||||
def get_cmd(self, cmd_class, argument_string=""):
|
||||
"""
|
||||
|
|
@ -178,7 +206,7 @@ class CommandTest(TestCase):
|
|||
This also mangles the input in various ways to test if the command
|
||||
will be fooled.
|
||||
"""
|
||||
if not nomangle and not VERBOSE and not self.NOMANGLE:
|
||||
if not nomangle and not VERBOSE and not NOMANGLE:
|
||||
# only mangle if not VERBOSE, to make fewer return lines
|
||||
test1 = re.sub(r'\s', '', raw_string) # remove all whitespace inside it
|
||||
test2 = "%s/åäö öäö;-:$£@*~^' 'test" % raw_string # inserting weird characters in call
|
||||
|
|
@ -202,7 +230,6 @@ class BuildTest(CommandTest):
|
|||
NOMANGLE = True
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------
|
||||
# Default set Command testing
|
||||
#------------------------------------------------------------
|
||||
|
|
@ -352,7 +379,7 @@ class TestSet(BuildTest):
|
|||
class TestCpAttr(BuildTest):
|
||||
def test_call(self):
|
||||
self.execute_cmd("@set obj1/test = value")
|
||||
self.execute_cmd("@set me/test2 = value2")
|
||||
self.execute_cmd("@set obj2/test2 = value2")
|
||||
self.execute_cmd("@cpattr obj1/test = obj2/test")
|
||||
self.execute_cmd("@cpattr test2 = obj2")
|
||||
self.assertEqual(self.obj2.db.test, u"value")
|
||||
|
|
@ -408,7 +435,7 @@ class TestCmdSets(BuildTest):
|
|||
def test_call(self):
|
||||
self.execute_cmd("@cmdsets")
|
||||
self.execute_cmd("@cmdsets obj1")
|
||||
class TestDesc(BuildTest):
|
||||
class TestName(BuildTest):
|
||||
def test_call(self):
|
||||
self.execute_cmd("@name obj1 = Test object", "Object's name changed to 'Test object'.")
|
||||
self.assertEqual(self.obj1.key, u"Test object")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue