Skip to content

Commit

Permalink
move test_bot_Bot to test_bot, add a FakeRemote utility class
Browse files Browse the repository at this point in the history
  • Loading branch information
Dustin J. Mitchell committed Aug 16, 2010
1 parent 9b375f3 commit 404ae5d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
import shutil

from twisted.trial import unittest
from twisted.spread import pb
from twisted.internet import reactor, defer
from twisted.cred import checkers, portal
from twisted.internet import defer
from zope.interface import implements

import buildslave
from buildslave import bot
from buildslave.test.util import fakeremote

class TestBot(unittest.TestCase):

Expand All @@ -18,19 +17,15 @@ def setUp(self):
shutil.rmtree(self.basedir)
os.makedirs(self.basedir)

self.bot = bot.Bot(self.basedir, False)
self.bot.startService()
self.real_bot = bot.Bot(self.basedir, False)
self.real_bot.startService()

# patch on a callRemote method
def callRemote(meth, *args, **kwargs):
fn = getattr(self.bot, "remote_" + meth)
return defer.maybeDeferred(fn, *args, **kwargs)
self.bot.callRemote = callRemote
self.bot = fakeremote.FakeRemote(self.real_bot)

def tearDown(self):
d = defer.succeed(None)
if self.bot and self.bot.running:
d.addCallback(lambda _ : self.bot.stopService())
if self.real_bot and self.real_bot.running:
d.addCallback(lambda _ : self.real_bot.stopService())
if os.path.exists(self.basedir):
shutil.rmtree(self.basedir)
return d
Expand Down Expand Up @@ -68,3 +63,11 @@ def check(info):
self.assertEqual(info, {})
d.addCallback(check)
return d

def test_setBuilderList_empty(self):
d = self.bot.callRemote("setBuilderList", [])
def check(builders):
self.assertEqual(builders, {})
d.addCallback(check)
return d

13 changes: 13 additions & 0 deletions slave/buildslave/test/util/fakeremote.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from twisted.internet import defer

class FakeRemote:
"""
Wrap a local object to make it look like it's remote
"""
def __init__(self, original, method_prefix="remote_"):
self.original = original
self.method_prefix = method_prefix

def callRemote(self, meth, *args, **kwargs):
fn = getattr(self.original, self.method_prefix + meth)
return defer.maybeDeferred(fn, *args, **kwargs)

0 comments on commit 404ae5d

Please sign in to comment.