summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-12-16 21:05:38 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-03-12 12:26:51 -0400
commit5aab3fc3b41ca06e66463f66ed9cc936a03a18fd (patch)
tree2db6fca65738888b6e652125c5e943b3bc27f6c4
parent8921c79fb98e5e04c0e2f00813e9d8e015e4206e (diff)
downloadpython-systemd-5aab3fc3b41ca06e66463f66ed9cc936a03a18fd.tar.gz
tests: move login tests from doctest to separate file
This way we can skip ENOENT (which happens in containers). While at it, let's extend the tests a bit, so that we at least call all functions and check the type of the return value. Also, drop '.nspawn' from the machine name, nspawn doesn't use that suffix any more.
-rw-r--r--docs/login.rst6
-rw-r--r--setup.py4
-rw-r--r--systemd/test/test_login.py48
3 files changed, 54 insertions, 4 deletions
diff --git a/docs/login.rst b/docs/login.rst
index 2ee807c..23204e0 100644
--- a/docs/login.rst
+++ b/docs/login.rst
@@ -17,12 +17,12 @@ external event loop:
>>> import select
>>> from systemd import login
- >>> m = login.Monitor("machine")
+ >>> m = login.Monitor("machine") # doctest: +SKIP
>>> p = select.poll()
- >>> p.register(m, m.get_events())
+ >>> p.register(m, m.get_events()) # doctest: +SKIP
>>> login.machine_names() # doctest: +SKIP
[]
>>> p.poll() # doctest: +SKIP
[(3, 1)]
>>> login.machine_names() # doctest: +SKIP
- ['fedora-19.nspawn']
+ ['fedora-25']
diff --git a/setup.py b/setup.py
index 1acfbc5..70c2780 100644
--- a/setup.py
+++ b/setup.py
@@ -92,7 +92,9 @@ setup (name = 'systemd-python',
'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
],
py_modules = ['systemd.journal', 'systemd.daemon',
- 'systemd.test.test_daemon', 'systemd.test.test_journal'],
+ 'systemd.test.test_daemon',
+ 'systemd.test.test_journal',
+ 'systemd.test.test_login'],
ext_modules = [_journal,
_reader,
_daemon,
diff --git a/systemd/test/test_login.py b/systemd/test/test_login.py
new file mode 100644
index 0000000..afb5f45
--- /dev/null
+++ b/systemd/test/test_login.py
@@ -0,0 +1,48 @@
+from __future__ import print_function
+import select
+import contextlib
+import errno
+
+from systemd import login
+
+import pytest
+
+@contextlib.contextmanager
+def skip_oserror(code):
+ try:
+ yield
+ except (OSError, IOError) as e:
+ if e.errno == code:
+ pytest.skip()
+ raise
+
+def test_seats():
+ # just check that we get some sequence back
+ with skip_oserror(errno.ENOENT):
+ seats = login.seats()
+ assert len(seats) >= 0
+
+def test_sessions():
+ with skip_oserror(errno.ENOENT):
+ sessions = login.sessions()
+ assert len(sessions) >= 0
+
+def test_machine_names():
+ with skip_oserror(errno.ENOENT):
+ machine_names = login.machine_names()
+ assert len(machine_names) >= 0
+
+def test_uids():
+ with skip_oserror(errno.ENOENT):
+ uids = login.uids()
+ assert len(uids) >= 0
+
+def test_monitor():
+ p = select.poll()
+
+ with skip_oserror(errno.ENOENT):
+ m = login.Monitor("machine")
+ p.register(m, m.get_events())
+ login.machine_names()
+ p.poll(1)
+ login.machine_names()