Ignore:
Timestamp:
2013-02-21T13:16:26Z (11 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
06eef80
Parents:
e4f5ca8 (diff), 9754c2f (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from vmiklos. Mostly Skype stuff and further deprecating a nogaim
function.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/skype/test.py

    re4f5ca8 r12f500f  
    99import hashlib
    1010
     11def openssl(args):
     12        with open(os.devnull, "w") as devnull:
     13                proc = subprocess.Popen(['openssl'] + args, stdin=subprocess.PIPE, stderr=devnull)
     14                for i in range(6):
     15                        proc.stdin.write("\n")
     16                proc.stdin.close()
     17                proc.communicate()
     18def setupSkyped():
     19        try:
     20                shutil.rmtree("t/skyped")
     21        except OSError:
     22                pass
     23        os.makedirs("t/skyped")
     24        cwd = os.getcwd()
     25        os.chdir("t/skyped")
     26        try:
     27                shutil.copyfile("../../skyped.cnf", "skyped.cnf")
     28                openssl(['req', '-new', '-x509', '-days', '365', '-nodes', '-config', 'skyped.cnf', '-out', 'skyped.cert.pem', '-keyout', 'skyped.key.pem'])
     29                with open("skyped.conf", "w") as sock:
     30                        sock.write("[skyped]\n")
     31                        sock.write("username = alice\n")
     32                        sock.write("password = %s\n" % hashlib.sha1("foo").hexdigest())
     33                        sock.write("cert = %s/skyped.cert.pem\n" % os.getcwd())
     34                        sock.write("key = %s/skyped.key.pem\n" % os.getcwd())
     35                        sock.write("port = 2727\n")
     36        finally:
     37                os.chdir(cwd)
     38
    1139class Test(unittest.TestCase):
    12         def openssl(self, args):
    13                 with open(os.devnull, "w") as devnull:
    14                         proc = subprocess.Popen(['openssl'] + args, stdin=subprocess.PIPE, stderr=devnull)
    15                         for i in range(6):
    16                                 proc.stdin.write("\n")
    17                         proc.stdin.close()
    18                         proc.communicate()
    1940        def mock(self, name):
    20                 skyped_log = open("t/skyped.log", "w")
    21                 skyped = subprocess.Popen([sys.executable, "skyped.py", "-c", "t/skyped/skyped.conf", "-n", "-d", "-m", "t/%s-skyped.mock" % name],
     41                with open("t/skyped.log", "w") as skyped_log,\
     42                                open("t/pexpect.log", "w") as pexpect_log:
     43                        skyped = subprocess.Popen([sys.executable, "skyped.py",
     44                                "-c", "t/skyped/skyped.conf", "-n", "-d", "-m", "t/%s-skyped.mock" % name],
    2245                                stdout=skyped_log, stderr=subprocess.STDOUT)
    23 
    24                 try:
    25                         bitlbee = pexpect.spawn('../../bitlbee', ['-d', 't/bitlbee'])
    26                         bitlbee_mock = open("t/%s-bitlbee.mock" % name)
    27                         for i in bitlbee_mock.readlines():
    28                                 line = i.strip()
    29                                 if line.startswith(">> "):
    30                                         bitlbee.expect_exact(line[3:], timeout=10)
    31                                 elif line.startswith("<< "):
    32                                         bitlbee.sendline(line[3:])
    33                         bitlbee_mock.close()
    34                         bitlbee.close()
    35                 finally:
    36                         skyped.terminate()
    37                         skyped.communicate()
    38                         skyped_log.close()
     46                        try:
     47                                bitlbee = pexpect.spawn('../../bitlbee', ['-d', 't/bitlbee'], logfile=pexpect_log)
     48                                if os.environ.get('ATTACH_GDB'):
     49                                        subprocess.Popen(['gdb', '-batch-silent',
     50                                                '-ex', 'set logging overwrite on',
     51                                                '-ex', 'set logging file t/gdb-%s.log' % bitlbee.pid,
     52                                                '-ex', 'set logging on',
     53                                                '-ex', 'handle all pass nostop noprint',
     54                                                '-ex', 'handle SIGSEGV pass stop print',
     55                                                '-ex', 'set pagination 0',
     56                                                '-ex', 'continue',
     57                                                '-ex', 'backtrace full',
     58                                                '-ex', 'info registers',
     59                                                '-ex', 'thread apply all backtrace',
     60                                                '-ex', 'quit',
     61                                                '../../bitlbee', str(bitlbee.pid) ])
     62                                bitlbee_mock = open("t/%s-bitlbee.mock" % name)
     63                                for i in bitlbee_mock.readlines():
     64                                        line = i.strip()
     65                                        if line.startswith(">> "):
     66                                                bitlbee.expect_exact(line[3:], timeout=10)
     67                                        elif line.startswith("<< "):
     68                                                bitlbee.sendline(line[3:])
     69                                bitlbee_mock.close()
     70                                bitlbee.close()
     71                        finally:
     72                                skyped.terminate()
     73                                skyped.communicate()
    3974
    4075        def setUp(self):
     
    4479                        pass
    4580                os.makedirs("t/bitlbee")
    46 
    47                 try:
    48                         shutil.rmtree("t/skyped")
    49                 except OSError:
    50                         pass
    51                 os.makedirs("t/skyped")
    52                 cwd = os.getcwd()
    53                 os.chdir("t/skyped")
    54                 shutil.copyfile("../../skyped.cnf", "skyped.cnf")
    55                 self.openssl(['req', '-new', '-x509', '-days', '365', '-nodes', '-config', 'skyped.cnf', '-out', 'skyped.cert.pem', '-keyout', 'skyped.key.pem'])
    56                 with open("skyped.conf", "w") as sock:
    57                         sock.write("[skyped]\n")
    58                         sock.write("username = alice\n")
    59                         sock.write("password = %s\n" % hashlib.sha1("foo").hexdigest())
    60                         sock.write("cert = %s/skyped.cert.pem\n" % os.getcwd())
    61                         sock.write("key = %s/skyped.key.pem\n" % os.getcwd())
    62                         sock.write("port = 2727\n")
    63                 os.chdir(cwd)
    64 
    6581
    6682        def testMsg(self):
     
    7288        def testInfo(self):
    7389                self.mock("info")
    74        
     90
    7591        def testCall(self):
    7692                self.mock("call")
    77        
     93
    7894        def testCallFailed(self):
    7995                self.mock("call-failed")
    80        
     96
    8197        def testAddYes(self):
    8298                self.mock("add-yes")
    8399
    84         def testAddNo(self):
    85                 self.mock("add-no")
     100        def testAddedYes(self):
     101                self.mock("added-yes")
     102
     103        def testAddedNo(self):
     104                self.mock("added-no")
    86105
    87106        def testGroupchatInvited(self):
     
    90109        def testGroupchatInvite(self):
    91110                self.mock("groupchat-invite")
    92        
     111
    93112        def testCalledYes(self):
    94113                self.mock("called-yes")
     
    103122                self.mock("group-read")
    104123
     124        def testCtcpHelp(self):
     125                self.mock("ctcp-help")
     126
     127        def testSetMoodText(self):
     128                self.mock("set-mood-text")
     129
    105130if __name__ == '__main__':
     131        setupSkyped()
    106132        unittest.main()
Note: See TracChangeset for help on using the changeset viewer.