Proposed fix for #297
authorSalim Fadhley <sal@stodge.org>
Wed, 30 Jul 2014 23:33:59 +0000 (00:33 +0100)
committerSalim Fadhley <sal@stodge.org>
Wed, 30 Jul 2014 23:33:59 +0000 (00:33 +0100)
jenkinsapi/result_set.py
jenkinsapi_tests/unittests/test_result_set.py

index 15090c44287cd31c2443639dcc326230297467a1..6962c0778a13643ea12eba8815c4c3910af25c48 100644 (file)
@@ -42,10 +42,11 @@ class ResultSet(JenkinsBase):
                 yield result.identifier(), result
 
         for report_set in self._data.get("childReports", []):
-            for suite in report_set["result"]["suites"]:
-                for case in suite["cases"]:
-                    result = Result(**case)
-                    yield result.identifier(), result
+            if report_set["result"]:
+                for suite in report_set["result"]["suites"]:
+                    for case in suite["cases"]:
+                        result = Result(**case)
+                        yield result.identifier(), result
 
     def __len__(self):
         return len(self.items())
index 9aa310e484999a612c83e35805aeab08e0d148af..32fd3ec3ff2af61722cd2d6021c3d3782e6e27cd 100644 (file)
@@ -16,33 +16,40 @@ class TestResultSet(unittest.TestCase):
             '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}],
+                                   '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}]}
+                        'timestamp': None}],
+            'childReports': [{
+                "child": {
+                    "number": 1915,
+                    "url": "url1"
+                },
+                "result": None
+            }, ]}
 
     @mock.patch.object(ResultSet, '_poll')
     def setUp(self, _poll):
@@ -70,3 +77,6 @@ class TestResultSet(unittest.TestCase):
             self.assertIsInstance(k, str)
             self.assertIsInstance(v, Result)
             self.assertIsInstance(v.identifier(), str)
+            
+if __name__ == '__main__':
+    unittest.main()