def test_extract_basedir_unicode(self): tacfile = textwrap.dedent("""\ # AUTOMATICALLY GENERATED - DO NOT MODIFY # generated: Tue Feb 8 16:32:01 2011 on euclid.r.igoro.us from twisted.application import service from buildbot.slave.bot import BuildSlave from twisted.python.logfile import LogFile from twisted.python.log import ILogObserver, FileLogObserver maxdelay = 300 buildmaster_host = None passwd = None maxRotatedFiles = None basedir = u'/builds/slave' umask = 002 slavename = 'linux-ix-slave01' usepty = 1 rotateLength = 1000000 port = None keepalive = None application = service.Application('buildslave') logfile = LogFile.fromFullPath("twistd.log", rotateLength=rotateLength, maxRotatedFiles=maxRotatedFiles) application.setComponent(ILogObserver, FileLogObserver(logfile).emit) s = BuildSlave(buildmaster_host, port, slavename, passwd, basedir, keepalive, usepty, umask=umask, maxdelay=maxdelay) s.setServiceParent(application)""") bt = runslave.BuildbotTac(self.make_options()) self.assertEqual(bt.extract_basedir(tacfile), '/builds/slave')
def test_guess_basedir_known_basedirs(self): bt = runslave.BuildbotTac(self.make_options()) for basedir in self.known_basedirs: self.patch_os_path_exists(basedir) # pass a bogus hostname, so it falls back to os.path.exists self.assertEqual(bt.guess_basedir('randombox'), basedir, "guess for %s" % basedir)
def test_extract_basedir_raw(self): tacfile = textwrap.dedent("""\ keepalive = None basedir = r'c:\\talos-slave' s.setServiceParent(application)""") bt = runslave.BuildbotTac(self.make_options()) self.assertEqual(bt.extract_basedir(tacfile), r'c:\talos-slave')
def test_extract_basedir_dblquote(self): tacfile = textwrap.dedent("""\ keepalive = None basedir = "/builds/slave" s.setServiceParent(application)""") bt = runslave.BuildbotTac(self.make_options()) self.assertEqual(bt.extract_basedir(tacfile), '/builds/slave')
def test_get_basedir_cached(self): # if there are no options and extraction fails, use a guess bt = runslave.BuildbotTac(self.make_options()) bt.extract_basedir = lambda page: None bt.guess_basedir = lambda slavename: '/guessed/basedir' self.assertEqual(bt.get_basedir(), '/guessed/basedir') bt.guess_basedir = lambda slavename: 'SHOULD NOT BE CALLED' self.assertEqual(bt.get_basedir(), '/guessed/basedir')
def test_download_good_result_extract_basedir(self): bt = runslave.BuildbotTac(self.make_options(slavename='slave13')) bt.get_basedir = lambda : self.basedir self.patch_urlopen('http://allocator/slave13', textwrap.dedent("""\ # AUTOMATICALLY GENERATED - DO NOT MODIFY basedir = %r """ % self.basedir)) self.assertTrue(bt.download()) self.assertTrue(os.path.exists(os.path.join(self.basedir, 'buildbot.tac')))
def test_get_basedir_failure(self): # and if we completely strike out, raise an exception bt = runslave.BuildbotTac(self.make_options()) bt.extract_basedir = lambda page: None bt.guess_basedir = lambda slavename: None self.assertRaises(runslave.NoBasedirError, lambda: bt.get_basedir())
def test_get_basedir_extract(self): # extraction is used if the basedir option is not set bt = runslave.BuildbotTac(self.make_options()) bt.extract_basedir = lambda page: '/extracted/basedir' bt.guess_basedir = lambda slavename: '/guessed/basedir' self.assertEqual(bt.get_basedir(), '/extracted/basedir')
def test_get_basedir_options(self): # options are preferred bt = runslave.BuildbotTac(self.make_options(basedir='/given/basedir')) bt.extract_basedir = lambda page: '/extracted/basedir' bt.guess_basedir = lambda slavename: '/guessed/basedir' self.assertEqual(bt.get_basedir(), '/given/basedir')
def test_download_bad_result(self): bt = runslave.BuildbotTac(self.make_options(slavename='slave13')) self.patch_urlopen('http://allocator/slave13', "this is not a tac") self.assertFalse(bt.download())
def test_download_exception(self): bt = runslave.BuildbotTac(self.make_options(slavename='slave13')) self.patch_urlopen('http://allocator/slave13', raise_exc=True) self.assertFalse(bt.download())
def test_guess_basedir_known_hostnames(self): bt = runslave.BuildbotTac(self.make_options()) for hostname, basedir in self.known_hostname.iteritems(): self.assertEqual(bt.guess_basedir(hostname), basedir)