This file is indexed.

/usr/lib/python3/dist-packages/dbusmock/__main__.py is in python3-dbusmock 0.10.1-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
# coding: UTF-8
'''Main entry point for running mock server.'''

# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 3 of the License, or (at your option) any
# later version.  See http://www.gnu.org/copyleft/lgpl.html for the full text
# of the license.

__author__ = 'Martin Pitt'
__email__ = 'martin.pitt@ubuntu.com'
__copyright__ = '(c) 2012 Canonical Ltd.'
__license__ = 'LGPL 3+'

import argparse

import dbus.service

import dbusmock.mockobject
import dbusmock.testcase


def parse_args():
    parser = argparse.ArgumentParser(description='mock D-BUS object')
    parser.add_argument('-s', '--system', action='store_true',
                        help='put object(s) on system bus (default: session bus)')
    parser.add_argument('-l', '--logfile', metavar='PATH',
                        help='path of log file')
    parser.add_argument('-t', '--template', metavar='NAME',
                        help='template to load (instead of specifying name, path, interface)')
    parser.add_argument('name', metavar='NAME', nargs='?',
                        help='D-BUS name to claim (e. g. "com.example.MyService") (if not using -t)')
    parser.add_argument('path', metavar='PATH', nargs='?',
                        help='D-BUS object path for initial/main object (if not using -t)')
    parser.add_argument('interface', metavar='INTERFACE', nargs='?',
                        help='main D-BUS interface name for initial object (if not using -t)')
    parser.add_argument('-m', '--is-object-manager', action='store_true',
                        help='automatically implement the org.freedesktop.DBus.ObjectManager interface')

    args = parser.parse_args()

    if args.template:
        if args.name or args.path or args.interface:
            parser.error('--template and specifying NAME/PATH/INTERFACE are mutually exclusive')
    else:
        if not args.name or not args.path or not args.interface:
            parser.error('Not using a template, you must specify NAME, PATH, and INTERFACE')

    return args


if __name__ == '__main__':
    import dbus.mainloop.glib
    from gi.repository import GLib

    args = parse_args()
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

    if args.template:
        module = dbusmock.mockobject.load_module(args.template)
        args.name = module.BUS_NAME
        args.path = module.MAIN_OBJ
        args.system = module.SYSTEM_BUS

        if hasattr(module, 'IS_OBJECT_MANAGER'):
            args.is_object_manager = module.IS_OBJECT_MANAGER
        else:
            args.is_object_manager = False

        if args.is_object_manager and not hasattr(module, 'MAIN_IFACE'):
            args.interface = dbusmock.mockobject.OBJECT_MANAGER_IFACE
        else:
            args.interface = module.MAIN_IFACE

    main_loop = GLib.MainLoop()
    bus = dbusmock.testcase.DBusTestCase.get_dbus(args.system)

    # quit mock when the bus is going down
    bus.add_signal_receiver(main_loop.quit, signal_name='Disconnected',
                            path='/org/freedesktop/DBus/Local',
                            dbus_interface='org.freedesktop.DBus.Local')

    bus_name = dbus.service.BusName(args.name,
                                    bus,
                                    allow_replacement=True,
                                    replace_existing=True,
                                    do_not_queue=True)

    main_object = dbusmock.mockobject.DBusMockObject(bus_name, args.path,
                                                     args.interface, {},
                                                     args.logfile,
                                                     args.is_object_manager)

    if args.template:
        main_object.AddTemplate(args.template, None)

    dbusmock.mockobject.objects[args.path] = main_object
    main_loop.run()