This file is indexed.

/usr/lib/python3/dist-packages/logging_tree/tests/test_format.py is in python3-logging-tree 1.4-1.

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
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
"""Tests for the `logging_tree.format` module."""

import logging
import logging.handlers
import unittest
import sys
from logging_tree.format import build_description, printout
from logging_tree.tests.case import LoggingTestCase
if sys.version_info >= (3,):
    from io import StringIO
else:
    from StringIO import StringIO


class FakeFile(StringIO):
    def __init__(self, filename, mode, encoding=None):
        self.filename = filename
        StringIO.__init__(self)

    def __repr__(self):
        return '<file %r>' % self.filename

    def fileno(self):
        return 0


class FormatTests(LoggingTestCase):

    def setUp(self):
        # Prevent logging file handlers from trying to open real files.
        # (The keyword delay=1, which defers any actual attempt to open
        # a file, did not appear until Python 2.6.)
        logging.open = FakeFile
        super(FormatTests, self).setUp()

    def tearDown(self):
        del logging.open
        super(FormatTests, self).tearDown()

    def test_printout(self):
        stdout, sys.stdout = sys.stdout, StringIO()
        printout()
        self.assertEqual(sys.stdout.getvalue(), '<--""\n   Level WARNING\n')
        sys.stdout = stdout

    def test_simple_tree(self):
        logging.getLogger('a')
        logging.getLogger('a.b').setLevel(logging.DEBUG)
        logging.getLogger('x.c')
        self.assertEqual(build_description(), '''\
<--""
   Level WARNING
   |
   o<--"a"
   |   Level NOTSET so inherits level WARNING
   |   |
   |   o<--"a.b"
   |       Level DEBUG
   |
   o<--[x]
       |
       o<--"x.c"
           Level NOTSET so inherits level WARNING
''')

    def test_fancy_tree(self):
        logging.getLogger('').setLevel(logging.DEBUG)

        log = logging.getLogger('db')
        log.setLevel(logging.INFO)
        log.propagate = False
        log.disabled = 1
        log.addFilter(MyFilter())

        handler = logging.StreamHandler()
        log.addHandler(handler)
        handler.addFilter(logging.Filter('db.errors'))

        logging.getLogger('db.errors')
        logging.getLogger('db.stats')

        log = logging.getLogger('www.status')
        log.setLevel(logging.DEBUG)
        log.addHandler(logging.FileHandler('/foo/log.txt'))
        log.addHandler(MyHandler())

        self.assertEqual(build_description(), '''\
<--""
   Level DEBUG
   |
   o   "db"
   |   Level INFO
   |   Propagate OFF
   |   Disabled
   |   Filter <MyFilter>
   |   Handler Stream %r
   |     Filter name='db.errors'
   |   |
   |   o<--"db.errors"
   |   |   Level NOTSET so inherits level INFO
   |   |
   |   o<--"db.stats"
   |       Level NOTSET so inherits level INFO
   |
   o<--[www]
       |
       o<--"www.status"
           Level DEBUG
           Handler File '/foo/log.txt'
           Handler <MyHandler>
''' % (sys.stderr,))

    def test_most_handlers(self):
        ah = logging.getLogger('').addHandler
        ah(logging.handlers.RotatingFileHandler(
                '/bar/one.txt', maxBytes=10000, backupCount=3))
        ah(logging.handlers.SocketHandler('server.example.com', 514))
        ah(logging.handlers.DatagramHandler('server.example.com', 1958))
        ah(logging.handlers.SysLogHandler())
        ah(logging.handlers.SMTPHandler(
                'mail.example.com', 'Server', 'Sysadmin', 'Logs!'))
        # ah(logging.handlers.NTEventLogHandler())
        ah(logging.handlers.HTTPHandler('api.example.com', '/logs', 'POST'))
        ah(logging.handlers.BufferingHandler(20000))
        sh = logging.StreamHandler()
        ah(logging.handlers.MemoryHandler(30000, target=sh))
        self.assertEqual(build_description(), '''\
<--""
   Level WARNING
   Handler RotatingFile '/bar/one.txt' maxBytes=10000 backupCount=3
   Handler Socket server.example.com 514
   Handler Datagram server.example.com 1958
   Handler SysLog ('localhost', 514) facility=1
   Handler SMTP via mail.example.com to ['Sysadmin']
   Handler HTTP POST to http://api.example.com//logs
   Handler Buffering capacity=20000
   Handler Memory capacity=30000 dumping to:
     Handler Stream %r
''' % (sh.stream,))
        logging.getLogger('').handlers[3].socket.close()  # or Python 3 warning

    def test_2_dot_5_handlers(self):
        if sys.version_info < (2, 5):
            return
        ah = logging.getLogger('').addHandler
        ah(logging.handlers.TimedRotatingFileHandler('/bar/two.txt'))
        self.assertEqual(build_description(), '''\
<--""
   Level WARNING
   Handler TimedRotatingFile '/bar/two.txt' when='H' interval=3600 backupCount=0
''')

    def test_2_dot_6_handlers(self):
        if sys.version_info < (2, 6):
            return
        ah = logging.getLogger('').addHandler
        ah(logging.handlers.WatchedFileHandler('/bar/three.txt'))
        self.assertEqual(build_description(), '''\
<--""
   Level WARNING
   Handler WatchedFile '/bar/three.txt'
''')

    def test_nested_handlers(self):
        h1 = logging.StreamHandler()

        h2 = logging.handlers.MemoryHandler(30000, target=h1)
        h2.addFilter(logging.Filter('worse'))

        h3 = logging.handlers.MemoryHandler(30000, target=h2)
        h3.addFilter(logging.Filter('bad'))

        logging.getLogger('').addHandler(h3)

        self.assertEqual(build_description(), '''\
<--""
   Level WARNING
   Handler Memory capacity=30000 dumping to:
     Filter name='bad'
     Handler Memory capacity=30000 dumping to:
       Filter name='worse'
       Handler Stream %r
''' % (h1.stream,))


class MyFilter(object):
    def __repr__(self):
        return '<MyFilter>'


class MyHandler(object):
    def __repr__(self):
        return '<MyHandler>'


if __name__ == '__main__':  # for Python <= 2.4
    unittest.main()