def testStopBuildWaitingForStepLocks(self): b = self.build slavebuilder = Mock() l = SlaveLock('lock') lock_access = l.access('counting') l.access = lambda mode: lock_access real_lock = b.builder.botmaster.getLockByID(l).getLock(slavebuilder) step = LoggingBuildStep(locks=[lock_access]) b.setStepFactories([FakeStepFactory(step)]) real_lock.claim(Mock(), l.access('counting')) gotLocks = [False] def acquireLocks(res=None): gotLocks[0] = True retval = LoggingBuildStep.acquireLocks(step, res) self.assert_(b.currentStep is step) b.stopBuild('stop it') return retval step.acquireLocks = acquireLocks step.setStepStatus = Mock() step._step_status = Mock() step.step_status.addLog().chunkSize = 10 step.step_status.getLogs.return_value = [] b.startBuild(FakeBuildStatus(), None, slavebuilder) self.assertEqual(gotLocks, [True]) self.assert_(('stepStarted', (), {}) in step.step_status.method_calls) self.assertEqual(b.result, EXCEPTION)
def testStopBuildWaitingForStepLocks(self): b = self.build lock = WorkerLock('lock') lock_access = lock.access('counting') lock.access = lambda mode: lock_access real_lock = b.builder.botmaster.getLockByID(lock) \ .getLock(self.workerforbuilder.worker) step = LoggingBuildStep(locks=[lock_access]) b.setStepFactories([FakeStepFactory(step)]) real_lock.claim(Mock(), lock.access('counting')) gotLocks = [False] def acquireLocks(res=None): gotLocks[0] = True retval = LoggingBuildStep.acquireLocks(step, res) self.assertTrue(b.currentStep is step) b.stopBuild('stop it') return retval step.acquireLocks = acquireLocks b.startBuild(FakeBuildStatus(), self.workerforbuilder) self.assertEqual(gotLocks, [True]) self.assertEqual(b.results, CANCELLED)
def test_evaluateCommand_success(self): cmd = FakeCmd("Log text", "Log text") lbs = LoggingBuildStep() status = lbs.evaluateCommand(cmd) self.assertEqual( status, SUCCESS, "evaluateCommand returned %d, should've returned %d" % (status, SUCCESS))
def test_evaluateCommand_failed(self): cmd = FakeCmd("Log text", "", 23) lbs = 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 = FakeCmd("Log text", "") def eval(cmd, step_status): return WARNINGS lbs = LoggingBuildStep(log_eval_func=eval) status = lbs.evaluateCommand(cmd) self.assertEqual( status, WARNINGS, "evaluateCommand didn't call log_eval_func or overrode its results" )