def test_record_command_as_success(self, api_v2): project = get(Project) build_env = LocalBuildEnvironment( project=project, build={ 'id': 1, }, ) with build_env: build_env.run('false', record_as_success=True) self.assertEqual(len(build_env.commands), 1) command = build_env.commands[0] self.assertEqual(command.exit_code, 0) api_v2.command.post.assert_called_once_with({ 'build': mock.ANY, 'command': command.get_command(), 'output': command.output, 'exit_code': 0, 'start_time': command.start_time, 'end_time': command.end_time, })
def test_command_not_recorded(self, api_v2): build_env = LocalBuildEnvironment() with build_env: build_env.run('true', record=False) self.assertEqual(len(build_env.commands), 0) api_v2.command.post.assert_not_called()
def test_failing_execution(self): """Build in failing state.""" self.mocks.configure_mock( 'process', {'communicate.return_value': (b'This is not okay', '')}) type(self.mocks.process).returncode = PropertyMock(return_value=1) build_env = LocalBuildEnvironment( version=self.version, project=self.project, build={'id': DUMMY_BUILD_ID}, ) with build_env: build_env.run('echo', 'test') self.fail('This should be unreachable') self.assertTrue(self.mocks.process.communicate.called) self.assertTrue(build_env.done) self.assertTrue(build_env.failed) self.assertEqual(len(build_env.commands), 1) self.assertEqual(build_env.commands[0].output, u'This is not okay') # api() is not called anymore, we use api_v2 instead self.assertFalse(self.mocks.api()(DUMMY_BUILD_ID).put.called) self.mocks.mocks['api_v2.build']().put.assert_called_with({ 'id': DUMMY_BUILD_ID, 'version': self.version.pk, 'success': False, 'project': self.project.pk, 'setup_error': u'', 'length': mock.ANY, 'error': '', 'setup': u'', 'output': u'', 'state': u'finished', 'builder': mock.ANY, 'exit_code': 1, })
def test_failing_execution(self): """Build in failing state.""" self.mocks.configure_mock('process', { 'communicate.return_value': (b'This is not okay', '') }) type(self.mocks.process).returncode = PropertyMock(return_value=1) build_env = LocalBuildEnvironment( version=self.version, project=self.project, build={'id': DUMMY_BUILD_ID}, ) with build_env: build_env.run('echo', 'test') self.fail('This should be unreachable') self.assertTrue(self.mocks.process.communicate.called) self.assertTrue(build_env.done) self.assertTrue(build_env.failed) self.assertEqual(len(build_env.commands), 1) self.assertEqual(build_env.commands[0].output, u'This is not okay') # api() is not called anymore, we use api_v2 instead self.assertFalse(self.mocks.api()(DUMMY_BUILD_ID).put.called) self.mocks.mocks['api_v2.build']().put.assert_called_with({ 'id': DUMMY_BUILD_ID, 'version': self.version.pk, 'success': False, 'project': self.project.pk, 'setup_error': u'', 'length': mock.ANY, 'error': '', 'setup': u'', 'output': u'', 'state': u'finished', 'builder': mock.ANY, 'exit_code': 1, })