From 57fda43b4e8d9b25c23828b27e796045c76794a5 Mon Sep 17 00:00:00 2001 From: enkore Date: Tue, 25 Nov 2014 22:34:55 +0100 Subject: [PATCH] Add uname module --- i3pystatus/uname.py | 35 +++++++++++++++++++++++++++++++++++ tests/test_uname.py | 16 ++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 i3pystatus/uname.py create mode 100644 tests/test_uname.py diff --git a/i3pystatus/uname.py b/i3pystatus/uname.py new file mode 100644 index 0000000..9ce5afe --- /dev/null +++ b/i3pystatus/uname.py @@ -0,0 +1,35 @@ +import os + +from i3pystatus import Module + + +class Uname(Module): + """ + uname(1) like module. + + Formatters: + + - {sysname}: operating system name + - {nodename}: name of machine on network (implementation-defined) + - {release}: operating system release + - {version}: operating system version + - {machine}: hardware identifier + """ + + format = "{sysname} {release}" + settings = ( + ("format", "format string used for output"), + ) + + def init(self): + uname_result = os.uname() + fdict = { + "sysname": uname_result.sysname, + "nodename": uname_result.nodename, + "release": uname_result.release, + "version": uname_result.version, + "machine": uname_result.machine, + } + self.output = { + "full_text": self.format.format(**fdict), + } diff --git a/tests/test_uname.py b/tests/test_uname.py new file mode 100644 index 0000000..6ab6c76 --- /dev/null +++ b/tests/test_uname.py @@ -0,0 +1,16 @@ + +import os + +from i3pystatus import uname + + +def test_uname(): + KEYS = ("sysname", "nodename", "release", "version", "machine") + + uref = os.uname() + + for key in KEYS: + um = uname.Uname(format="{" + key + "}") + um.init() + assert um.output["full_text"] == getattr(uref, key) +