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)