This file is indexed.

/usr/lib/python3/dist-packages/os_testr/tests/test_subunit2html.py is in python3-os-testr 1.0.0-0ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# 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.

import sys

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)

    @data(RemotedTestCase, PlaceHolder)
    def test_result_sorting(self, test_cls):
        tests = []
        for i in range(9):
            tests.append(test_cls('example.path.to.test%d.method' % i))
        # addFailure, addError, and addSkip need the real exc_info
        try:
            raise Exception('fake')
        except Exception:
            err = sys.exc_info()
        obj = subunit2html.HtmlOutput()
        obj.addSuccess(tests[3])
        obj.addSuccess(tests[1])
        # example.path.to.test2 has a failure
        obj.addFailure(tests[2], err)
        obj.addSkip(tests[0], err)
        obj.addSuccess(tests[8])
        # example.path.to.test5 has a failure (error)
        obj.addError(tests[5], err)
        # example.path.to.test4 has a failure
        obj.addFailure(tests[4], err)
        obj.addSuccess(tests[7])
        # example.path.to.test6 has a success, a failure, and a success
        obj.addSuccess(tests[6])
        obj.addFailure(tests[6], err)
        obj.addSuccess(tests[6])
        sorted_result = obj._sortResult(obj.result)
        # _sortResult returns a list of results of format:
        #   [(class, [test_result_tuple, ...]), ...]
        # sorted by str(class)
        #
        # Classes with failures (2, 4, 5, and 6) should be sorted separately
        # at the top. The rest of the classes should be in sorted order after.
        expected_class_order = ['example.path.to.test2',
                                'example.path.to.test4',
                                'example.path.to.test5',
                                'example.path.to.test6',
                                'example.path.to.test0',
                                'example.path.to.test1',
                                'example.path.to.test3',
                                'example.path.to.test7',
                                'example.path.to.test8']
        for i, r in enumerate(sorted_result):
            self.assertEqual(expected_class_order[i], str(r[0]))