From 2b5c0175fc0cf9eddf570b743bf3c89ad7e0fd3a Mon Sep 17 00:00:00 2001 From: step6829 Date: Tue, 17 Nov 2015 22:28:57 +0000 Subject: [PATCH] Change to always parsing classes from test_id Currently only v1 correctly parses out the class information from the test_id. This changes the default behavior to always parse the class and module from test_id. Closes-Bug: #1517229 Change-Id: I6340797064f9289a7e861f853c42a763c5f5e2c2 --- os_testr/subunit2html.py | 6 +++--- os_testr/tests/test_subunit2html.py | 31 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 os_testr/tests/test_subunit2html.py diff --git a/os_testr/subunit2html.py b/os_testr/subunit2html.py index fd93ac7..c40909e 100755 --- a/os_testr/subunit2html.py +++ b/os_testr/subunit2html.py @@ -633,10 +633,10 @@ class HtmlOutput(testtools.TestResult): test = test.test if test.__class__ == subunit.RemotedTestCase: cl = test._RemotedTestCase__description.rsplit('.', 1)[0] - mod = cl.rsplit('.', 1)[0] - cls = ClassInfoWrapper(cl, mod) else: - cls = ClassInfoWrapper(str(test.__class__), str(test.__module__)) + cl = test.id().rsplit('.', 1)[0] + mod = cl.rsplit('.', 1)[0] + cls = ClassInfoWrapper(cl, mod) if not str(cls) in rmap: rmap[str(cls)] = [] classes.append(cls) diff --git a/os_testr/tests/test_subunit2html.py b/os_testr/tests/test_subunit2html.py new file mode 100644 index 0000000..f3196a5 --- /dev/null +++ b/os_testr/tests/test_subunit2html.py @@ -0,0 +1,31 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from ddt import data +from ddt import ddt +from subunit import RemotedTestCase +from testtools import PlaceHolder + +from os_testr import subunit2html +from os_testr.tests import base + + +@ddt +class TestSubunit2html(base.TestCase): + @data(RemotedTestCase, PlaceHolder) + def test_class_parsing(self, test_cls): + """Tests that the class paths are parsed for v1 & v2 tests""" + test_ = test_cls("example.path.to.test.method") + obj_ = subunit2html.HtmlOutput() + cls_ = [] + obj_._add_cls({}, cls_, test_, ()) + self.assertEqual("example.path.to.test", cls_[0].name)