aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_buildstep.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_process_buildstep.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_buildstep.py272
1 files changed, 0 insertions, 272 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_buildstep.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_buildstep.py
deleted file mode 100644
index 62dff108..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_process_buildstep.py
+++ /dev/null
@@ -1,272 +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
-
-import re
-import mock
-from twisted.trial import unittest
-from twisted.internet import defer
-from twisted.python import log
-from buildbot.process import buildstep
-from buildbot.process.buildstep import regex_log_evaluator
-from buildbot.status.results import FAILURE, SUCCESS, WARNINGS, EXCEPTION
-from buildbot.test.fake import fakebuild, remotecommand
-from buildbot.test.util import config, steps, compat
-from buildbot.util.eventual import eventually
-
-class FakeLogFile:
- def __init__(self, text):
- self.text = text
-
- def getText(self):
- return self.text
-
-class FakeStepStatus:
- pass
-
-class TestRegexLogEvaluator(unittest.TestCase):
-
- def makeRemoteCommand(self, rc, stdout, stderr=''):
- cmd = remotecommand.FakeRemoteCommand('cmd', {})
- cmd.fakeLogData(self, 'stdio', stdout=stdout, stderr=stderr)
- cmd.rc = rc
- return cmd
-
- def test_find_worse_status(self):
- cmd = self.makeRemoteCommand(0, 'This is a big step')
- step_status = FakeStepStatus()
- r = [(re.compile("This is"), WARNINGS)]
- new_status = regex_log_evaluator(cmd, step_status, r)
- self.assertEqual(new_status, WARNINGS,
- "regex_log_evaluator returned %d, expected %d"
- % (new_status, WARNINGS))
-
- def test_multiple_regexes(self):
- cmd = self.makeRemoteCommand(0, "Normal stdout text\nan error")
- step_status = FakeStepStatus()
- r = [(re.compile("Normal stdout"), SUCCESS),
- (re.compile("error"), FAILURE)]
- new_status = regex_log_evaluator(cmd, step_status, r)
- self.assertEqual(new_status, FAILURE,
- "regex_log_evaluator returned %d, expected %d"
- % (new_status, FAILURE))
-
- def test_exception_not_in_stdout(self):
- cmd = self.makeRemoteCommand(0,
- "Completely normal output", "exception output")
- step_status = FakeStepStatus()
- r = [(re.compile("exception"), EXCEPTION)]
- new_status = regex_log_evaluator(cmd, step_status, r)
- self.assertEqual(new_status, EXCEPTION,
- "regex_log_evaluator returned %d, expected %d"
- % (new_status, EXCEPTION))
-
- def test_pass_a_string(self):
- cmd = self.makeRemoteCommand(0, "Output", "Some weird stuff on stderr")
- step_status = FakeStepStatus()
- r = [("weird stuff", WARNINGS)]
- new_status = regex_log_evaluator(cmd, step_status, r)
- self.assertEqual(new_status, WARNINGS,
- "regex_log_evaluator returned %d, expected %d"
- % (new_status, WARNINGS))
-
-
-class TestBuildStep(steps.BuildStepMixin, config.ConfigErrorsMixin, unittest.TestCase):
-
- class FakeBuildStep(buildstep.BuildStep):
- def start(self):
- eventually(self.finished, 0)
-
- def setUp(self):
- return self.setUpBuildStep()
-
- def tearDown(self):
- return self.tearDownBuildStep()
-
- # support
-
- def _setupWaterfallTest(self, hideStepIf, expect, expectedResult=SUCCESS):
- self.setupStep(TestBuildStep.FakeBuildStep(hideStepIf=hideStepIf))
- self.expectOutcome(result=expectedResult, status_text=["generic"])
- self.expectHidden(expect)
-
- # tests
-
- def test_nameIsntString(self):
- """
- When BuildStep is passed a name that isn't a string, it reports
- a config error.
- """
- self.assertRaisesConfigError("BuildStep name must be a string",
- lambda: buildstep.BuildStep(name=5))
-
- def test_unexpectedKeywordArgument(self):
- """
- When BuildStep is passed an unknown keyword argument, it reports
- a config error.
- """
- self.assertRaisesConfigError("__init__ got unexpected keyword argument(s) ['oogaBooga']",
- lambda: buildstep.BuildStep(oogaBooga=5))
-
-
- def test_getProperty(self):
- bs = buildstep.BuildStep()
- bs.build = fakebuild.FakeBuild()
- props = bs.build.build_status.properties = mock.Mock()
- bs.getProperty("xyz", 'b')
- props.getProperty.assert_called_with("xyz", 'b')
- bs.getProperty("xyz")
- props.getProperty.assert_called_with("xyz", None)
-
- def test_setProperty(self):
- bs = buildstep.BuildStep()
- bs.build = fakebuild.FakeBuild()
- props = bs.build.build_status.properties = mock.Mock()
- bs.setProperty("x", "y", "t")
- props.setProperty.assert_called_with("x", "y", "t", runtime=True)
- bs.setProperty("x", "abc", "test", runtime=True)
- props.setProperty.assert_called_with("x", "abc", "test", runtime=True)
-
- def test_hideStepIf_False(self):
- self._setupWaterfallTest(False, False)
- return self.runStep()
-
- def test_hideStepIf_True(self):
- self._setupWaterfallTest(True, True)
- return self.runStep()
-
- def test_hideStepIf_Callable_False(self):
- called = [False]
- def shouldHide(result, step):
- called[0] = True
- self.assertTrue(step is self.step)
- self.assertEquals(result, SUCCESS)
- return False
-
- self._setupWaterfallTest(shouldHide, False)
-
- d = self.runStep()
- d.addCallback(lambda _ : self.assertTrue(called[0]))
- return d
-
- def test_hideStepIf_Callable_True(self):
- called = [False]
- def shouldHide(result, step):
- called[0] = True
- self.assertTrue(step is self.step)
- self.assertEquals(result, SUCCESS)
- return True
-
- self._setupWaterfallTest(shouldHide, True)
-
- d = self.runStep()
- d.addCallback(lambda _ : self.assertTrue(called[0]))
- return d
-
- def test_hideStepIf_fails(self):
- # 0/0 causes DivideByZeroError, which should be flagged as an exception
- self._setupWaterfallTest(lambda : 0/0, False, expectedResult=EXCEPTION)
- return self.runStep()
-
- @compat.usesFlushLoggedErrors
- def test_hideStepIf_Callable_Exception(self):
- called = [False]
- def shouldHide(result, step):
- called[0] = True
- self.assertTrue(step is self.step)
- self.assertEquals(result, EXCEPTION)
- return True
-
- def createException(*args, **kwargs):
- raise RuntimeError()
-
- self.setupStep(self.FakeBuildStep(hideStepIf=shouldHide,
- doStepIf=createException))
- self.expectOutcome(result=EXCEPTION,
- status_text=['generic', 'exception'])
- self.expectHidden(True)
-
- d = self.runStep()
- d.addErrback(log.err)
- d.addCallback(lambda _ :
- self.assertEqual(len(self.flushLoggedErrors(defer.FirstError)), 1))
- d.addCallback(lambda _:
- self.assertEqual(len(self.flushLoggedErrors(RuntimeError)), 1))
- d.addCallback(lambda _ : self.assertTrue(called[0]))
- return d
-
-
-class TestLoggingBuildStep(unittest.TestCase):
-
- def makeRemoteCommand(self, rc, stdout, stderr=''):
- cmd = remotecommand.FakeRemoteCommand('cmd', {})
- cmd.fakeLogData(self, 'stdio', stdout=stdout, stderr=stderr)
- cmd.rc = rc
- return cmd
-
- def test_evaluateCommand_success(self):
- cmd = self.makeRemoteCommand(0, "Log text", "Log text")
- lbs = buildstep.LoggingBuildStep()
- status = lbs.evaluateCommand(cmd)
- self.assertEqual(status, SUCCESS, "evaluateCommand returned %d, should've returned %d" % (status, SUCCESS))
-
- def test_evaluateCommand_failed(self):
- cmd = self.makeRemoteCommand(23, "Log text", "")
- lbs = buildstep.LoggingBuildStep()
- status = lbs.evaluateCommand(cmd)
- self.assertEqual(status, FAILURE, "evaluateCommand returned %d, should've returned %d" % (status, FAILURE))
-
- def test_evaluateCommand_log_eval_func(self):
- cmd = self.makeRemoteCommand(0, "Log text")
- def eval(cmd, step_status):
- return WARNINGS
- lbs = buildstep.LoggingBuildStep(log_eval_func=eval)
- status = lbs.evaluateCommand(cmd)
- self.assertEqual(status, WARNINGS, "evaluateCommand didn't call log_eval_func or overrode its results")
-
-
-class FailingCustomStep(buildstep.LoggingBuildStep):
-
- def __init__(self, exception=buildstep.BuildStepFailed, *args, **kwargs):
- buildstep.LoggingBuildStep.__init__(self, *args, **kwargs)
- self.exception = exception
-
- @defer.inlineCallbacks
- def start(self):
- yield defer.succeed(None)
- raise self.exception()
-
-
-class TestCustomStepExecution(steps.BuildStepMixin, unittest.TestCase):
-
- def setUp(self):
- return self.setUpBuildStep()
-
- def tearDown(self):
- return self.tearDownBuildStep()
-
- def test_step_raining_buildstepfailed_in_start(self):
- self.setupStep(FailingCustomStep())
- self.expectOutcome(result=FAILURE, status_text=["generic"])
- return self.runStep()
-
- def test_step_raising_exception_in_start(self):
- self.setupStep(FailingCustomStep(exception=ValueError))
- self.expectOutcome(result=EXCEPTION, status_text=["generic", "exception"])
- d = self.runStep()
- @d.addCallback
- def cb(_):
- self.assertEqual(len(self.flushLoggedErrors(ValueError)), 1)
- return d
-