aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/skype
diff options
context:
space:
mode:
authorMike Kazantsev <mk.fraggod@gmail.com>2013-02-11 13:56:03 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-02-11 13:56:03 +0100
commit3e238504209e998064f0906c9edfced9713ba94d (patch)
tree17f5fdeb9a36df827a5ab2571468c57295934d32 /protocols/skype
parent7e5b4bd31383187b04dedec4854d8c89ae2aea7b (diff)
skype: add ATTACH_GDB env flag, extend hacking instructions with info on pexpect/gdb
Diffstat (limited to 'protocols/skype')
-rw-r--r--protocols/skype/HACKING29
-rwxr-xr-xprotocols/skype/test.py14
2 files changed, 43 insertions, 0 deletions
diff --git a/protocols/skype/HACKING b/protocols/skype/HACKING
index edca0a45..935856a7 100644
--- a/protocols/skype/HACKING
+++ b/protocols/skype/HACKING
@@ -17,10 +17,15 @@ python skyped.py -n -d
4) irssi
+
== Tests
The plugin is tested with a mocked IRC client and a mocked skyped.
+=== Requirements
+
+Python pexpect module is required to run the tests.
+
To run tests with bitlbee built in a development tree and not (the one)
installed in the system (e.g. /usr), make sure to specify --plugindir= option to
./configure script during the build process:
@@ -31,6 +36,30 @@ Otherwise bitlbee will try to load skype.so (among other things) from /usr/lib,
which is probably not what you want to test, or produce "Unknown protocol"
error.
+=== Running
+
+Tests can be run by running test.py script in this ("protocols/skype")
+directory.
+
+For more control over how/which tests are being run from there, use "python -m
+unittest" command:
+
+bitlbee/protocols/skype% python -m unittest test
+bitlbee/protocols/skype% python -m unittest -f test
+bitlbee/protocols/skype% python -m unittest test.Test.testMsg
+
+If bitlbee crashes during tests with SIGSEGV (segmentation fault), it's likely
+that there is some problem with skype.c plugin.
+To get a backtrace of such crash, use:
+
+bitlbee/protocols/skype% ATTACH_GDB=true python -m unittest test.Test.testMsg
+
+Example shows running "testMsg" test with gdb attached to bitlbee, which will
+produce full backtrace in "t/gdb-<pid>.log" files (see pid in pexpect error
+output of the test).
+
+=== Adding new tests
+
To add a new test, the following steps are necessary:
1) Add a new -skyped.mock file: just do the test manually, copy&paste the
diff --git a/protocols/skype/test.py b/protocols/skype/test.py
index f20039e2..b3f25f46 100755
--- a/protocols/skype/test.py
+++ b/protocols/skype/test.py
@@ -24,6 +24,20 @@ class Test(unittest.TestCase):
stdout=skyped_log, stderr=subprocess.STDOUT)
try:
bitlbee = pexpect.spawn('../../bitlbee', ['-d', 't/bitlbee'], logfile=pexpect_log)
+ if os.environ.get('ATTACH_GDB'):
+ subprocess.Popen(['gdb', '-batch-silent',
+ '-ex', 'set logging overwrite on',
+ '-ex', 'set logging file t/gdb-%s.log' % bitlbee.pid,
+ '-ex', 'set logging on',
+ '-ex', 'handle all pass nostop noprint',
+ '-ex', 'handle SIGSEGV pass stop print',
+ '-ex', 'set pagination 0',
+ '-ex', 'continue',
+ '-ex', 'backtrace full',
+ '-ex', 'info registers',
+ '-ex', 'thread apply all backtrace',
+ '-ex', 'quit',
+ '../../bitlbee', str(bitlbee.pid) ])
bitlbee_mock = open("t/%s-bitlbee.mock" % name)
for i in bitlbee_mock.readlines():
line = i.strip()