== Tabs I use the following tabs during the development: 1) bitlbee-skype: vim, make, etc. 2) bitlbee: gdb --args ./bitlbee -v -n -D run 3) skyped: 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: bitlbee% ./configure --skype=1 --plugindir="$(realpath .)" 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-.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 skyped output and clean it up, so Alice talks to Bob. You can test the created mock file by starting skyped with the -m option, and testing it from an IRC client manually. 2) Add a new -bitlbee.mock file: do the test manually from irssi, and use: /connect -rawlog rawlog localhost Then clean up the rawlog: the input lines are parsed as matching patterns, so boring prefix/suffix text can be left out, non-interesting lines can be deleted. The output lines still have to be strict IRC commands, as usual. 3) Add the new test to test.py and run it! // vim: ft=asciidoc