def setUp(self, _poll):
        _poll.return_value = self.DATA

        # def __init__(self, url, build ):

        self.b = mock.MagicMock()  # Build object
        self.b.__str__.return_value = 'FooBuild'
        self.rs = ResultSet('http://', self.b)
    def setUp(self, _poll):
        _poll.return_value = self.DATA

        # def __init__(self, url, build ):

        self.b = mock.MagicMock()  # Build object
        self.b.__str__.return_value = 'FooBuild'
        self.rs = ResultSet('http://', self.b)
Exemple #3
0
 def get_resultset(self):
     """
     Obtain detailed results for this build.
     """
     result_url = self.get_result_url()
     if self.STR_TOTALCOUNT not in self.get_actions():
         raise NoResults("%s does not have any published results" %
                         str(self))
     buildstatus = self.get_status()
     if not self.get_actions()[self.STR_TOTALCOUNT]:
         raise NoResults(self.STR_TPL_NOTESTS_ERR %
                         (str(self), buildstatus))
     obj_results = ResultSet(result_url, build=self)
     return obj_results
    def test_poll_cache(self, _poll):
        # only gets called once in interval
        rs = ResultSet('http://', self.b, poll_cache_timeout=1)
        for i in range(2):
            rs.poll()
        self.assertEquals(_poll.call_count, 1)
        rs.poll(True)  # test force poll
        self.assertEquals(_poll.call_count, 2)

        # ensure it gets called again after cache timeout
        _poll.reset_mock()
        time.sleep(1.1)
        rs.poll()
        self.assertTrue(_poll.called)

        # ensure it is disabled by default
        _poll.reset_mock()
        for i in range(2):
            self.rs.poll()
        self.assertEquals(_poll.call_count, 2)
        self.assertIsNone(self.rs.poll_cache_expires)
class TestResultSet(unittest.TestCase):

    DATA = {
        'duration':
        0.0,
        'failCount':
        2,
        'passCount':
        0,
        'skipCount':
        0,
        'suites': [{
            'cases': [{
                'age': 1,
                'className':
                '<nose.suite.ContextSuite context=jenkinsapi_tests',
                'duration': 0.0,
                'errorDetails':
                'Timeout error occured while waiting for Jenkins start.',
                'errorStackTrace':
                'Traceback (most recent call last):\n  File "/usr/lib/python2.7/dist-packages/nose/suite.py", line 208, in run\n    self.setUp()\n  File "/usr/lib/python2.7/dist-packages/nose/suite.py", line 291, in setUp\n    self.setupContext(ancestor)\n  File "/usr/lib/python2.7/dist-packages/nose/suite.py", line 314, in setupContext\n    try_run(context, names)\n  File "/usr/lib/python2.7/dist-packages/nose/util.py", line 478, in try_run\n    return func()\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/systests/__init__.py", line 54, in setUpPackage\n    launcher = JenkinsLauncher(update_war=True, launch=True)\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/systests/__init__.py", line 20, in __init__\n    self.launch()\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/systests/__init__.py", line 41, in launch\n    raise Timeout(\'Timeout error occured while waiting for Jenkins start.\')\nTimeout: Timeout error occured while waiting for Jenkins start.\n',
                'failedSince': 88,
                'name': 'systests>:setup',
                'skipped': False,
                'status': 'FAILED',
                'stderr': None,
                'stdout': None
            }, {
                'age': 1,
                'className': 'nose.failure.Failure',
                'duration': 0.0,
                'errorDetails': 'No module named mock',
                'errorStackTrace':
                'Traceback (most recent call last):\n  File "/usr/lib/python2.7/unittest/case.py", line 332, in run\n    testMethod()\n  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 390, in loadTestsFromName\n    addr.filename, addr.module)\n  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 39, in importFromPath\n    return self.importFromDir(dir_path, fqname)\n  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 86, in importFromDir\n    mod = load_module(part_fqname, fh, filename, desc)\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/unittests/test_build.py", line 1, in <module>\n    import mock\nImportError: No module named mock\n',
                'failedSince': 88,
                'name': 'runTest',
                'skipped': False,
                'status': 'FAILED',
                'stderr': None,
                'stdout': None
            }],
            'duration':
            0.0,
            'id':
            None,
            'name':
            'nosetests',
            'stderr':
            None,
            'stdout':
            None,
            'timestamp':
            None
        }]
    }

    @mock.patch.object(ResultSet, '_poll')
    def setUp(self, _poll):
        _poll.return_value = self.DATA

        # def __init__(self, url, build ):

        self.b = mock.MagicMock()  # Build object
        self.b.__str__.return_value = 'FooBuild'
        self.rs = ResultSet('http://', self.b)

    def testRepr(self):
        # Can we produce a repr string for this object
        repr(self.rs)

    def testName(self):
        with self.assertRaises(AttributeError):
            self.rs.id()

        self.assertEquals(self.rs.name, 'Test Result for FooBuild')

    def testBuildComponents(self):
        self.assertTrue(self.rs.items())
        for k, v in self.rs.items():
            self.assertIsInstance(k, str)
            self.assertIsInstance(v, Result)
            self.assertIsInstance(v.identifier(), str)
class TestResultSet(unittest.TestCase):

    DATA = {'duration': 0.0,
            'failCount': 2,
            'passCount': 0,
            'skipCount': 0,
            'suites': [{'cases': [{'age': 1,
                                   'className': '<nose.suite.ContextSuite context=jenkinsapi_tests',
                                   'duration': 0.0,
                                   'errorDetails': 'Timeout error occured while waiting for Jenkins start.',
                                   'errorStackTrace': 'Traceback (most recent call last):\n  File "/usr/lib/python2.7/dist-packages/nose/suite.py", line 208, in run\n    self.setUp()\n  File "/usr/lib/python2.7/dist-packages/nose/suite.py", line 291, in setUp\n    self.setupContext(ancestor)\n  File "/usr/lib/python2.7/dist-packages/nose/suite.py", line 314, in setupContext\n    try_run(context, names)\n  File "/usr/lib/python2.7/dist-packages/nose/util.py", line 478, in try_run\n    return func()\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/systests/__init__.py", line 54, in setUpPackage\n    launcher = JenkinsLauncher(update_war=True, launch=True)\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/systests/__init__.py", line 20, in __init__\n    self.launch()\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/systests/__init__.py", line 41, in launch\n    raise Timeout(\'Timeout error occured while waiting for Jenkins start.\')\nTimeout: Timeout error occured while waiting for Jenkins start.\n',
                                   'failedSince': 88,
                                   'name': 'systests>:setup',
                                   'skipped': False,
                                   'status': 'FAILED',
                                   'stderr': None,
                                   'stdout': None},
                                  {'age': 1,
                                   'className': 'nose.failure.Failure',
                                   'duration': 0.0,
                                   'errorDetails': 'No module named mock',
                                   'errorStackTrace': 'Traceback (most recent call last):\n  File "/usr/lib/python2.7/unittest/case.py", line 332, in run\n    testMethod()\n  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 390, in loadTestsFromName\n    addr.filename, addr.module)\n  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 39, in importFromPath\n    return self.importFromDir(dir_path, fqname)\n  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 86, in importFromDir\n    mod = load_module(part_fqname, fh, filename, desc)\n  File "/var/lib/jenkins/jobs/test_jenkinsapi/workspace/jenkinsapi/src/jenkinsapi_tests/unittests/test_build.py", line 1, in <module>\n    import mock\nImportError: No module named mock\n',
                                   'failedSince': 88,
                                   'name': 'runTest',
                                   'skipped': False,
                                   'status': 'FAILED',
                                   'stderr': None,
                                   'stdout': None}],
                        'duration': 0.0,
                        'id': None,
                        'name': 'nosetests',
                        'stderr': None,
                        'stdout': None,
                        'timestamp': None}],
            'childReports': [{
                "child": {
                    "number": 1915,
                    "url": "url1"
                },
                "result": None
            }, ]}

    @mock.patch.object(ResultSet, '_poll')
    def setUp(self, _poll):
        _poll.return_value = self.DATA

        # def __init__(self, url, build ):

        self.b = mock.MagicMock()  # Build object
        self.b.__str__.return_value = 'FooBuild'
        self.rs = ResultSet('http://', self.b)

    def testRepr(self):
        # Can we produce a repr string for this object
        repr(self.rs)

    def testName(self):
        with self.assertRaises(AttributeError):
            self.rs.id()

        self.assertEquals(self.rs.name, 'Test Result for FooBuild')

    def testBuildComponents(self):
        self.assertTrue(self.rs.items())
        for k, v in self.rs.items():
            self.assertIsInstance(k, str)
            self.assertIsInstance(v, Result)
            self.assertIsInstance(v.identifier(), str)