aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--skype/skyped.py23
-rw-r--r--skype/t/irssi/skype-call.test13
2 files changed, 34 insertions, 2 deletions
diff --git a/skype/skyped.py b/skype/skyped.py
index 8ce35777..f15245ed 100644
--- a/skype/skyped.py
+++ b/skype/skyped.py
@@ -37,9 +37,12 @@ import ssl
__version__ = "0.1.1"
def eh(type, value, tb):
+ global options
+
if type != KeyboardInterrupt:
print_exception(type, value, tb)
gobject.MainLoop().quit()
+ options.conn.close()
# shut down client if it's running
try:
skype.skype.Client.Shutdown()
@@ -74,11 +77,26 @@ def skype_idle_handler(skype):
dprint("Warning, pinging Skype failed (%s)." % (s))
return True
+def send(sock, txt):
+ from time import sleep
+ count = 1
+ done = False
+ while (not done) and (count < 10):
+ try:
+ sock.send(txt)
+ done = True
+ except Exception, s:
+ count += 1
+ dprint("Warning, sending '%s' failed (%s). count=%d" % (txt, s, count))
+ sleep(1)
+ if not done:
+ options.conn.close()
+
def bitlbee_idle_handler(skype):
if options.conn:
try:
e = "PING"
- options.conn.send("%s\n" % e)
+ send(options.conn, "%s\n" % e)
except Exception, s:
dprint("Warning, sending '%s' failed (%s)." % (e, s))
options.conn.close()
@@ -136,6 +154,7 @@ def dprint(msg):
if options.debug:
print now + ": " + msg
+ sys.stdout.flush()
if options.log:
sock = open(options.log, "a")
sock.write("%s: %s\n" % (now, msg))
@@ -171,7 +190,7 @@ class SkypeApi:
dprint('<< ' + e)
if options.conn:
try:
- options.conn.send(e + "\n")
+ send(options.conn, e + "\n")
except Exception, s:
dprint("Warning, sending '%s' failed (%s)." % (e, s))
options.conn.close()
diff --git a/skype/t/irssi/skype-call.test b/skype/t/irssi/skype-call.test
new file mode 100644
index 00000000..8f502a59
--- /dev/null
+++ b/skype/t/irssi/skype-call.test
@@ -0,0 +1,13 @@
+TESTNEEDEDVARS="TEST_SKYPE_ID TEST_SKYPE_PASSWORD"
+TESTDURATION=60
+TESTCHECKRESULT="grep '\[Test Passed\]' status.log"
+TESTLOGIN="$TEST_SKYPE_ID"
+TESTPASSWORD="$TEST_SKYPE_PASSWORD"
+### Test receiving call output
+/expectbee 'Welcome to the BitlBee' -command 'msg $$C register testing'
+/expectbee 'Account successfully created' -command 'msg $$C account add skype @LOGIN@ @PASSWORD@'
+/expectbee 'Account successfully added' -command 'msg $$C account 0 set test_join true'
+/expectbee 'test_join' -command 'msg $$C account 0 on'
+/expectjoin echo123 -command 'ctcp echo123 call'
+/expectbee 'You are currently ringing the user' -command 'ctcp echo123 hangup'
+/expectbee '(You cancelled the call|You finished the call)' -command 'quit Test Passed'