aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_scripts_base.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_scripts_base.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_scripts_base.py268
1 files changed, 0 insertions, 268 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_scripts_base.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_scripts_base.py
deleted file mode 100644
index 7d7d22de..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_scripts_base.py
+++ /dev/null
@@ -1,268 +0,0 @@
-# This file is part of Buildbot. Buildbot is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation, version 2.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright Buildbot Team Members
-
-from __future__ import with_statement
-
-import os
-import string
-import cStringIO
-import textwrap
-from twisted.trial import unittest
-from buildbot.scripts import base
-from buildbot.test.util import dirs, misc
-from twisted.python import usage, runtime
-
-class TestIBD(dirs.DirsMixin, misc.StdoutAssertionsMixin, unittest.TestCase):
-
- def setUp(self):
- self.setUpDirs('test')
- self.stdout = cStringIO.StringIO()
- self.setUpStdoutAssertions()
-
- def test_isBuildmasterDir_no_dir(self):
- self.assertFalse(base.isBuildmasterDir(os.path.abspath('test/nosuch')))
- self.assertInStdout('error reading')
- self.assertInStdout('invalid buildmaster directory')
-
- def test_isBuildmasterDir_no_file(self):
- self.assertFalse(base.isBuildmasterDir(os.path.abspath('test')))
- self.assertInStdout('error reading')
- self.assertInStdout('invalid buildmaster directory')
-
- def test_isBuildmasterDir_no_Application(self):
- with open(os.path.join('test', 'buildbot.tac'), 'w') as f:
- f.write("foo\nx = Application('buildslave')\nbar")
- self.assertFalse(base.isBuildmasterDir(os.path.abspath('test')))
- self.assertInStdout('unexpected content')
- self.assertInStdout('invalid buildmaster directory')
-
- def test_isBuildmasterDir_matches(self):
- with open(os.path.join('test', 'buildbot.tac'), 'w') as f:
- f.write("foo\nx = Application('buildmaster')\nbar")
- self.assertTrue(base.isBuildmasterDir(os.path.abspath('test')))
- self.assertWasQuiet()
-
-class TestTacFallback(dirs.DirsMixin, unittest.TestCase):
- """
- Tests for L{base.getConfigFileFromTac}.
- """
-
- def setUp(self):
- """
- Create a base directory.
- """
- self.basedir = os.path.abspath('basedir')
- return self.setUpDirs('basedir')
-
- def _createBuildbotTac(self, contents=None):
- """
- Create a C{buildbot.tac} that points to a given C{configfile}
- and create that file.
-
- @param configfile: Config file to point at and create.
- @type configfile: L{str}
- """
- if contents is None:
- contents = '#dummy'
- tacfile = os.path.join(self.basedir, "buildbot.tac")
- with open(tacfile, "wt") as f:
- f.write(contents)
- return tacfile
-
-
- def test_getConfigFileFromTac(self):
- """
- When L{getConfigFileFromTac} is passed a C{basedir}
- containing a C{buildbot.tac}, it reads the location
- of the config file from there.
- """
- self._createBuildbotTac("configfile='other.cfg'")
- foundConfigFile = base.getConfigFileFromTac(
- basedir=self.basedir)
- self.assertEqual(foundConfigFile, "other.cfg")
-
- def test_getConfigFileFromTac_fallback(self):
- """
- When L{getConfigFileFromTac} is passed a C{basedir}
- which doesn't contain a C{buildbot.tac},
- it returns C{master.cfg}
- """
- foundConfigFile = base.getConfigFileFromTac(
- basedir=self.basedir)
- self.assertEqual(foundConfigFile, 'master.cfg')
-
-
- def test_getConfigFileFromTac_tacWithoutConfigFile(self):
- """
- When L{getConfigFileFromTac} is passed a C{basedir}
- containing a C{buildbot.tac}, but C{buildbot.tac} doesn't
- define C{configfile}, L{getConfigFileFromTac} returns C{master.cfg}
- """
- self._createBuildbotTac()
- foundConfigFile = base.getConfigFileFromTac(
- basedir=self.basedir)
- self.assertEqual(foundConfigFile, 'master.cfg')
-
-
- def test_getConfigFileFromTac_usingFile(self):
- """
- Wehn L{getConfigFileFromTac} is passed a C{basedir}
- containing a C{buildbot.tac} which references C{__file__},
- that reference points to C{buildbot.tac}.
- """
- self._createBuildbotTac(textwrap.dedent("""
- from twisted.python.util import sibpath
- configfile = sibpath(__file__, "relative.cfg")
- """))
- foundConfigFile = base.getConfigFileFromTac(basedir=self.basedir)
- self.assertEqual(foundConfigFile, os.path.join(self.basedir, "relative.cfg"))
-
-
-
-class TestSubcommandOptions(unittest.TestCase):
-
- def fakeOptionsFile(self, **kwargs):
- self.patch(base.SubcommandOptions, 'loadOptionsFile',
- lambda self : kwargs.copy())
-
- def parse(self, cls, *args):
- self.opts = cls()
- self.opts.parseOptions(args)
- return self.opts
-
- class Bare(base.SubcommandOptions):
- optFlags = [ [ 'foo', 'f', 'Foo!' ] ]
-
- def test_bare_subclass(self):
- self.fakeOptionsFile()
- opts = self.parse(self.Bare, '-f')
- self.assertTrue(opts['foo'])
-
- class ParamsAndOptions(base.SubcommandOptions):
- optParameters = [ [ 'volume', 'v', '5', 'How Loud?' ] ]
- buildbotOptions = [ [ 'volcfg', 'volume' ] ]
-
- def test_buildbotOptions(self):
- self.fakeOptionsFile()
- opts = self.parse(self.ParamsAndOptions)
- self.assertEqual(opts['volume'], '5')
-
- def test_buildbotOptions_options(self):
- self.fakeOptionsFile(volcfg='3')
- opts = self.parse(self.ParamsAndOptions)
- self.assertEqual(opts['volume'], '3')
-
- def test_buildbotOptions_override(self):
- self.fakeOptionsFile(volcfg='3')
- opts = self.parse(self.ParamsAndOptions, '--volume', '7')
- self.assertEqual(opts['volume'], '7')
-
- class RequiredOptions(base.SubcommandOptions):
- optParameters = [ [ 'volume', 'v', None, 'How Loud?' ] ]
- requiredOptions = [ 'volume' ]
-
- def test_requiredOptions(self):
- self.fakeOptionsFile()
- self.assertRaises(usage.UsageError,
- lambda : self.parse(self.RequiredOptions))
-
-class TestLoadOptionsFile(dirs.DirsMixin, misc.StdoutAssertionsMixin,
- unittest.TestCase):
-
- def setUp(self):
- self.setUpDirs('test', 'home')
- self.opts = base.SubcommandOptions()
- self.dir = os.path.abspath('test')
- self.home = os.path.abspath('home')
- self.setUpStdoutAssertions()
-
- def tearDown(self):
- self.tearDownDirs()
-
- def do_loadOptionsFile(self, _here, exp):
- # only patch these os.path functions briefly, to
- # avoid breaking other parts of the test system
- patches = []
-
- if runtime.platformType == 'win32':
- from win32com.shell import shell
- patches.append(self.patch(shell, 'SHGetFolderPath',
- lambda *args : self.home))
- else:
- def expanduser(p):
- return p.replace('~/', self.home + '/')
- patches.append(self.patch(os.path, 'expanduser', expanduser))
-
- old_dirname = os.path.dirname
- def dirname(p):
- # bottom out at self.dir, rather than /
- if p == self.dir:
- return p
- return old_dirname(p)
- patches.append(self.patch(os.path, 'dirname', dirname))
-
- try:
- self.assertEqual(self.opts.loadOptionsFile(_here=_here), exp)
- finally:
- for p in patches:
- p.restore()
-
- def writeOptionsFile(self, dir, content, bbdir='.buildbot'):
- os.makedirs(os.path.join(dir, bbdir))
- with open(os.path.join(dir, bbdir, 'options'), 'w') as f:
- f.write(content)
-
- def test_loadOptionsFile_subdirs_not_found(self):
- subdir = os.path.join(self.dir, 'a', 'b')
- os.makedirs(subdir)
- self.do_loadOptionsFile(_here=subdir, exp={})
-
- def test_loadOptionsFile_subdirs_at_root(self):
- subdir = os.path.join(self.dir, 'a', 'b')
- os.makedirs(subdir)
- self.writeOptionsFile(self.dir, 'abc="def"')
- self.writeOptionsFile(self.home, 'abc=123') # not seen
- self.do_loadOptionsFile(_here=subdir, exp={'abc':'def'})
-
- def test_loadOptionsFile_subdirs_at_tip(self):
- subdir = os.path.join(self.dir, 'a', 'b')
- os.makedirs(subdir)
- self.writeOptionsFile(os.path.join(self.dir, 'a', 'b'), 'abc="def"')
- self.writeOptionsFile(self.dir, 'abc=123') # not seen
- self.do_loadOptionsFile(_here=subdir, exp={'abc':'def'})
-
- def test_loadOptionsFile_subdirs_at_homedir(self):
- subdir = os.path.join(self.dir, 'a', 'b')
- os.makedirs(subdir)
- # on windows, the subdir of the home (well, appdata) dir
- # is 'buildbot', not '.buildbot'
- self.writeOptionsFile(self.home, 'abc=123',
- 'buildbot' if runtime.platformType == 'win32' else '.buildbot')
- self.do_loadOptionsFile(_here=subdir, exp={'abc':123})
-
- def test_loadOptionsFile_syntax_error(self):
- self.writeOptionsFile(self.dir, 'abc=abc')
- self.assertRaises(NameError, lambda :
- self.do_loadOptionsFile(_here=self.dir, exp={}))
- self.assertInStdout('error while reading')
-
- def test_loadOptionsFile_toomany(self):
- subdir = os.path.join(self.dir, *tuple(string.lowercase))
- os.makedirs(subdir)
- self.do_loadOptionsFile(_here=subdir, exp={})
- self.assertInStdout('infinite glories')
-
- # NOTE: testing the ownership check requires patching os.stat, which causes
- # other problems since it is so heavily used.