old_contents: import sys
  import os
  sys.path += [os.getcwd(), os.path.join(os.getcwd(), 'protocols')]
  import unittest
  
  import inspircd
  from . import test_proto_common
  from classes import ProtocolError
  
  class TestInspIRCdProtocol(unittest.TestCase):
      def setUp(self):
          self.irc = test_proto_common.FakeIRC(inspircd)
          self.sdata = self.irc.serverdata
          
      def test_connect(self):
          self.irc.proto.connect(self.irc)
          initial_messages = self.irc.takeMsgs()
          commands = self.irc.takeCommands(initial_messages)
  
          # SERVER pylink.unittest abcd 0 9PY :PyLink Service
          serverline = 'SERVER %s %s 0 %s :PyLink Service' % (
              self.sdata['hostname'], self.sdata['sendpass'], self.sdata['sid'])
          self.assertIn(serverline, initial_messages)
          self.assertIn('BURST', commands)
          self.assertIn('ENDBURST', commands)
          # Is it creating our lovely PyLink PseudoClient?
          self.assertIn('UID', commands)
          self.assertIn('FJOIN', commands)
  
      def test_checkRecvpass(self):
          # Correct recvpass here.
          self.irc.run('SERVER somehow.someday abcd 0 0AL :Somehow Server - McMurdo Station, Antarctica')
          # Incorrect recvpass here; should raise ProtocolError.
          self.assertRaises(ProtocolError, self.irc.run, 'SERVER somehow.someday BADPASS 0 0AL :Somehow Server - McMurdo Station, Antarctica')
  
  if __name__ == '__main__':
      unittest.main()
  
new_contents: import sys
  import os
  sys.path += [os.getcwd(), os.path.join(os.getcwd(), 'protocols')]
  import unittest
  import time
  
  import inspircd
  from . import test_proto_common
  from classes import ProtocolError
  import utils
  
  class TestInspIRCdProtocol(unittest.TestCase):
      def setUp(self):
          self.irc = test_proto_common.FakeIRC(inspircd)
          self.proto = self.irc.proto
          self.sdata = self.irc.serverdata
          # This is to initialize ourself as an internal PseudoServer, so we can spawn clients
          self.proto.connect(self.irc)
          self.u = self.irc.pseudoclient.uid
  
      def test_connect(self):
          initial_messages = self.irc.takeMsgs()
          commands = self.irc.takeCommands(initial_messages)
  
          # SERVER pylink.unittest abcd 0 9PY :PyLink Service
          serverline = 'SERVER %s %s 0 %s :PyLink Service' % (
              self.sdata['hostname'], self.sdata['sendpass'], self.sdata['sid'])
          self.assertIn(serverline, initial_messages)
          self.assertIn('BURST', commands)
          self.assertIn('ENDBURST', commands)
          # Is it creating our lovely PyLink PseudoClient?
          self.assertIn('UID', commands)
          self.assertIn('FJOIN', commands)
  
      def test_checkRecvpass(self):
          # Correct recvpass here.
          self.irc.run('SERVER somehow.someday abcd 0 0AL :Somehow Server - McMurdo Station, Antarctica')
          # Incorrect recvpass here; should raise ProtocolError.
          self.assertRaises(ProtocolError, self.irc.run, 'SERVER somehow.someday BADPASS 0 0AL :Somehow Server - McMurdo Station, Antarctica')
  
      def testSpawnClient(self):
          u = self.proto.spawnClient(self.irc, 'testuser3', 'moo', 'hello.world').uid
          # Check the server index and the user index
          self.assertIn(u, self.irc.servers[self.irc.sid].users)
          self.assertIn(u, self.irc.users)
          # Raise ValueError when trying to spawn a client on a server that's not ours
          self.assertRaises(ValueError, self.proto.spawnClient, self.irc, 'abcd', 'user', 'dummy.user.net', server='44A')
  
      def testJoinClient(self):
          u = self.u
          self.proto.joinClient(self.irc, u, '#Channel')
          self.assertIn(u, self.irc.channels['#channel'].users)
          # Non-existant user.
          self.assertRaises(LookupError, self.proto.joinClient, self.irc, '9PYZZZZZZ', '#test')
          # Invalid channel.
          self.assertRaises(ValueError, self.proto.joinClient, self.irc, u, 'aaaa')
  
      def testPartClient(self):
          u = self.u
          self.proto.joinClient(self.irc, u, '#channel')
          self.proto.partClient(self.irc, u, '#channel')
          self.assertNotIn(u, self.irc.channels['#channel'].users)
  
      def testQuitClient(self):
          u = self.proto.spawnClient(self.irc, 'testuser3', 'moo', 'hello.world').uid
          self.proto.joinClient(self.irc, u, '#channel')
          self.assertRaises(LookupError, self.proto.quitClient, self.irc, '9PYZZZZZZ', 'quit reason')
          self.proto.quitClient(self.irc, u, 'quit reason')
          self.assertNotIn(u, self.irc.channels['#channel'].users)
          self.assertNotIn(u, self.irc.users)
          self.assertNotIn(u, self.irc.servers[self.irc.sid].users)
          pass
  
  if __name__ == '__main__':
      unittest.main()
  
subject: add tests for spawn/quit/join/partClient