1
#!/usr/bin/python3 -bbI
2
# -*- after-save-hook: (lambda () (let ((command (if (fboundp 'file-local-name) (file-local-name (buffer-file-name)) (or (file-remote-p (buffer-file-name) 'localname) (buffer-file-name))))) (if (= (progn (if (get-buffer "*Test*") (kill-buffer "*Test*")) (process-file-shell-command (format "%s --check" (shell-quote-argument command)) nil "*Test*")) 0) (let ((w (get-buffer-window "*Test*"))) (if w (delete-window w))) (progn (with-current-buffer "*Test*" (compilation-mode)) (display-buffer "*Test*" '(display-buffer-in-side-window)))))); coding: utf-8 -*-
2
# -*- after-save-hook: (lambda () (let ((command (if (fboundp 'file-local-name) (file-local-name (buffer-file-name)) (or (file-remote-p (buffer-file-name) 'localname) (buffer-file-name))))) (if (= (progn (if (get-buffer "*Test*") (kill-buffer "*Test*")) (process-file-shell-command (format "%s --test" (shell-quote-argument command)) nil "*Test*")) 0) (let ((w (get-buffer-window "*Test*"))) (if w (delete-window w))) (progn (with-current-buffer "*Test*" (compilation-mode)) (display-buffer "*Test*" '(display-buffer-in-side-window)))))); coding: utf-8 -*-
4
4
# Mandos Monitor - Control and monitor the Mandos server
76
72
logging.captureWarnings(True) # Show warnings via the logging system
78
74
if sys.version_info.major == 2:
80
77
io.StringIO = StringIO.StringIO
82
79
locale.setlocale(locale.LC_ALL, "")
253
250
def rfc3339_duration_to_delta(duration):
254
251
"""Parse an RFC 3339 "duration" and return a datetime.timedelta
256
>>> rfc3339_duration_to_delta("P7D") == datetime.timedelta(7)
258
>>> rfc3339_duration_to_delta("PT60S") == datetime.timedelta(0, 60)
260
>>> rfc3339_duration_to_delta("PT60M") == datetime.timedelta(hours=1)
263
>>> rfc3339_duration_to_delta("P60M") == datetime.timedelta(1680)
265
>>> rfc3339_duration_to_delta("PT24H") == datetime.timedelta(1)
267
>>> rfc3339_duration_to_delta("P1W") == datetime.timedelta(7)
269
>>> rfc3339_duration_to_delta("PT5M30S") == datetime.timedelta(0, 330)
271
>>> rfc3339_duration_to_delta("P1DT3M20S") == datetime.timedelta(1, 200)
253
>>> rfc3339_duration_to_delta("P7D")
254
datetime.timedelta(7)
255
>>> rfc3339_duration_to_delta("PT60S")
256
datetime.timedelta(0, 60)
257
>>> rfc3339_duration_to_delta("PT60M")
258
datetime.timedelta(0, 3600)
259
>>> rfc3339_duration_to_delta("P60M")
260
datetime.timedelta(1680)
261
>>> rfc3339_duration_to_delta("PT24H")
262
datetime.timedelta(1)
263
>>> rfc3339_duration_to_delta("P1W")
264
datetime.timedelta(7)
265
>>> rfc3339_duration_to_delta("PT5M30S")
266
datetime.timedelta(0, 330)
267
>>> rfc3339_duration_to_delta("P1DT3M20S")
268
datetime.timedelta(1, 200)
273
269
>>> # Can not be empty:
274
270
>>> rfc3339_duration_to_delta("")
275
271
Traceback (most recent call last):
385
381
"""Parse an interval string as documented by Mandos before 1.6.1,
386
382
and return a datetime.timedelta
388
>>> parse_pre_1_6_1_interval('7d') == datetime.timedelta(days=7)
390
>>> parse_pre_1_6_1_interval('60s') == datetime.timedelta(0, 60)
392
>>> parse_pre_1_6_1_interval('60m') == datetime.timedelta(hours=1)
394
>>> parse_pre_1_6_1_interval('24h') == datetime.timedelta(days=1)
396
>>> parse_pre_1_6_1_interval('1w') == datetime.timedelta(days=7)
398
>>> parse_pre_1_6_1_interval('5m 30s') == datetime.timedelta(0, 330)
400
>>> parse_pre_1_6_1_interval('') == datetime.timedelta(0)
384
>>> parse_pre_1_6_1_interval('7d')
385
datetime.timedelta(7)
386
>>> parse_pre_1_6_1_interval('60s')
387
datetime.timedelta(0, 60)
388
>>> parse_pre_1_6_1_interval('60m')
389
datetime.timedelta(0, 3600)
390
>>> parse_pre_1_6_1_interval('24h')
391
datetime.timedelta(1)
392
>>> parse_pre_1_6_1_interval('1w')
393
datetime.timedelta(7)
394
>>> parse_pre_1_6_1_interval('5m 30s')
395
datetime.timedelta(0, 330)
396
>>> parse_pre_1_6_1_interval('')
397
datetime.timedelta(0)
402
398
>>> # Ignore unknown characters, allow any order and repetitions
403
>>> parse_pre_1_6_1_interval('2dxy7zz11y3m5m') == datetime.timedelta(2, 480, 18000)
399
>>> parse_pre_1_6_1_interval('2dxy7zz11y3m5m')
400
datetime.timedelta(2, 480, 18000)
584
580
self.client_interface, key,
583
class SilenceLogger(object):
588
584
"Simple context manager to silence a particular logger"
589
585
def __init__(self, loggername):
590
586
self.logger = logging.getLogger(loggername)
714
class command(object):
719
715
"""A namespace for command classes"""
722
718
"""Abstract base class for commands"""
723
719
def run(self, clients, bus=None):
724
720
"""Normal commands should implement run_on_one_client(),
1314
1310
class Test_dbus_python_adapter_SystemBus(TestCaseWithAssertLogs):
1316
1312
def MockDBusPython_func(self, func):
1317
class mock_dbus_python:
1313
class mock_dbus_python(object):
1318
1314
"""mock dbus-python module"""
1315
class exceptions(object):
1320
1316
"""Pseudo-namespace"""
1321
1317
class DBusException(Exception):
1319
class SystemBus(object):
1325
1321
def get_object(busname, objectpath):
1326
1322
DBusObject = collections.namedtuple(
1558
1554
self.call_method(bus, "methodname", "busname",
1559
1555
"objectpath", "interface")
1561
class fake_dbus_python_raises_exception_on_connect:
1557
class fake_dbus_python_raises_exception_on_connect(object):
1562
1558
"""fake dbus-python module"""
1559
class exceptions(object):
1564
1560
"""Pseudo-namespace"""
1565
1561
class DBusException(Exception):
1576
1572
class Test_dbus_python_adapter_CachingBus(unittest.TestCase):
1577
class mock_dbus_python:
1573
class mock_dbus_python(object):
1578
1574
"""mock dbus-python modules"""
1575
class SystemBus(object):
1581
1577
def get_object(busname, objectpath):
1582
1578
return Unique()
1628
1624
class Test_pydbus_adapter_SystemBus(TestCaseWithAssertLogs):
1630
1626
def Stub_pydbus_func(self, func):
1627
class stub_pydbus(object):
1632
1628
"""stub pydbus module"""
1629
class SystemBus(object):
1635
1631
def get(busname, objectpath):
1636
1632
DBusObject = collections.namedtuple(
1682
1678
self.call_method(bus, "methodname", "busname",
1683
1679
"objectpath", "interface")
1685
class fake_pydbus_raises_exception_on_connect:
1681
class fake_pydbus_raises_exception_on_connect(object):
1686
1682
"""fake dbus-python module"""
1688
1684
def SystemBus(cls):
1692
1688
return Bus(get=get)
1694
1690
def test_set_property_uses_setattr(self):
1691
class Object(object):
1694
class pydbus_spy(object):
1695
class SystemBus(object):
1701
1697
def get(busname, objectpath):
1702
1698
return {"interface": obj}
1709
1705
def test_get_suppresses_xml_deprecation_warning(self):
1710
1706
if sys.version_info.major >= 3:
1712
class stub_pydbus_get:
1708
class stub_pydbus_get(object):
1709
class SystemBus(object):
1715
1711
def get(busname, objectpath):
1716
1712
warnings.warn_explicit(
2007
2003
def test_manual_page_example_1(self):
2008
self.assert_command_from_args("",
2004
self.assert_command_from_args("--verbose".split(),
2009
2005
command.PrintTable,
2013
2009
def test_manual_page_example_2(self):
2014
2010
self.assert_command_from_args(