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)