- Timestamp:
- 2013-01-13T12:06:01Z (12 years ago)
- Branches:
- master
- Children:
- 75bda8b
- Parents:
- 4cb21b7 (diff), 650d2b4 (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. - Location:
- protocols/skype
- Files:
-
- 9 added
- 10 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/skype/HACKING
r4cb21b7 r35571fb 17 17 18 18 4) irssi 19 20 == Tests 21 22 The plugin is tested with a mocked IRC client and a mocked skyped. To add a new 23 test, the following steps are necessary: 24 25 1) Add a new -skyped.mock file: just do the test manually, copy&paste the 26 skyped output and clean it up, so Alice talks to Bob. You can test the created 27 mock file by starting skyped with the -m option, and testing it from an IRC 28 client manually. 29 30 2) Add a new -bitlbee.mock file: do the test manually from irssi, and use: 31 32 /connect -rawlog rawlog localhost 33 34 Then clean up the rawlog: the input lines are parsed as matching patterns, so 35 boring prefix/suffix text can be left out, non-interesting lines can be 36 deleted. The output lines still have to be strict IRC commands, as usual. 37 38 3) Add the new test to test.py and run it! 39 40 // vim: ft=asciidoc -
protocols/skype/Makefile
r4cb21b7 r35571fb 24 24 25 25 test: all 26 $(MAKE) -C t/ all26 ./test.py 27 27 28 28 doc: $(MANPAGES) -
protocols/skype/skype.c
r4cb21b7 r35571fb 2 2 * skype.c - Skype plugin for BitlBee 3 3 * 4 * Copyright (c) 2007-2013 by Miklos Vajna <vmiklos@ frugalware.org>4 * Copyright (c) 2007-2013 by Miklos Vajna <vmiklos@vmiklos.hu> 5 5 * 6 6 * This program is free software; you can redistribute it and/or modify -
protocols/skype/skyped.py
r4cb21b7 r35571fb 3 3 # skyped.py 4 4 # 5 # Copyright (c) 2007 , 2008, 2009, 2010, 2011 by Miklos Vajna <vmiklos@frugalware.org>5 # Copyright (c) 2007-2013 by Miklos Vajna <vmiklos@vmiklos.hu> 6 6 # 7 7 # This program is free software; you can redistribute it and/or modify … … 276 276 sock.close() 277 277 278 class MockedSkype: 279 """Mock class for Skype4Py.Skype(), in case the -m option is used.""" 280 def __init__(self, mock): 281 sock = open(mock) 282 self.lines = sock.readlines() 283 284 def SendCommand(self, c): 285 pass 286 287 def Command(self, msg, Block): 288 if msg == "PING": 289 return ["PONG"] 290 line = self.lines[0].strip() 291 if not line.startswith(">> "): 292 raise Exception("Corrupted mock input") 293 line = line[3:] 294 if line != msg: 295 raise Exception("'%s' != '%s'" % (line, msg)) 296 self.lines = self.lines[1:] # drop the expected incoming line 297 ret = [] 298 while True: 299 # and now send back all the following lines, up to the next expected incoming line 300 if len(self.lines) == 0: 301 break 302 if self.lines[0].startswith(">> "): 303 break 304 if not self.lines[0].startswith("<< "): 305 raise Exception("Corrupted mock input") 306 ret.append(self.lines[0][3:].strip()) 307 self.lines = self.lines[1:] 308 return ret 309 278 310 class SkypeApi: 279 def __init__(self): 280 self.skype = Skype4Py.Skype() 281 self.skype.OnNotify = self.recv 282 self.skype.Client.Start() 311 def __init__(self, mock): 312 if not mock: 313 self.skype = Skype4Py.Skype() 314 self.skype.OnNotify = self.recv 315 self.skype.Client.Start() 316 else: 317 self.skype = MockedSkype(mock) 283 318 284 319 def recv(self, msg_text): … … 335 370 c = self.skype.Command(e, Block=True) 336 371 self.skype.SendCommand(c) 337 self.recv(c.Reply) 372 if hasattr(c, "Reply"): 373 self.recv(c.Reply) # Skype4Py answer 374 else: 375 for i in c: # mock may return multiple iterable answers 376 self.recv(i) 338 377 except Skype4Py.SkypeError: 339 378 pass … … 360 399 # this will be read first by the input handler 361 400 self.buf = None 401 self.mock = None 362 402 363 403 … … 422 462 options = Options() 423 463 try: 424 opts, args = getopt.getopt(sys.argv[1:], "c:dhH:l: np:v", ["config=", "debug", "help", "host=", "log=", "nofork", "port=", "version"])464 opts, args = getopt.getopt(sys.argv[1:], "c:dhH:l:m:np:v", ["config=", "debug", "help", "host=", "log=", "mock=", "nofork", "port=", "version"]) 425 465 except getopt.GetoptError: 426 466 options.usage(1) … … 436 476 elif opt in ("-l", "--log"): 437 477 options.log = arg 478 elif opt in ("-m", "--mock"): 479 options.mock = arg 438 480 elif opt in ("-n", "--nofork"): 439 481 options.daemon = False … … 486 528 server(options.host, options.port) 487 529 try: 488 skype = SkypeApi( )530 skype = SkypeApi(options.mock) 489 531 except Skype4Py.SkypeAPIError, s: 490 532 sys.exit("%s. Are you sure you have started Skype?" % s) -
protocols/skype/skyped.txt
r4cb21b7 r35571fb 39 39 Set the log file in background mode (default: none) 40 40 41 -m, --mock=<file>:: 42 Mock mode: replay session from file, instead of connecting to Skype. 43 41 44 -n, --nofork:: 42 45 Don't run as daemon in the background … … 50 53 == AUTHOR 51 54 52 Written by Miklos Vajna <vmiklos@ frugalware.org>55 Written by Miklos Vajna <vmiklos@vmiklos.hu>
Note: See TracChangeset
for help on using the changeset viewer.