]> granicus.if.org Git - python/commitdiff
Use unicode and add a "test" for syslog
authorNeal Norwitz <nnorwitz@gmail.com>
Sat, 25 Aug 2007 00:21:36 +0000 (00:21 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sat, 25 Aug 2007 00:21:36 +0000 (00:21 +0000)
Lib/test/test_syslog.py [new file with mode: 0644]
Modules/syslogmodule.c

diff --git a/Lib/test/test_syslog.py b/Lib/test/test_syslog.py
new file mode 100644 (file)
index 0000000..3f22c0d
--- /dev/null
@@ -0,0 +1,37 @@
+
+import syslog
+import unittest
+from test import test_support
+
+# XXX(nnorwitz): This test sucks.  I don't know of a platform independent way
+# to verify that the messages were really logged.
+# The only purpose of this test is to verify the code doesn't crash or leak.
+
+class Test(unittest.TestCase):
+
+    def test_openlog(self):
+        syslog.openlog('python')
+
+    def test_syslog(self):
+        syslog.openlog('python')
+        syslog.syslog('test message from python test_syslog')
+        syslog.syslog(syslog.LOG_ERR, 'test error from python test_syslog')
+
+    def test_closelog(self):
+        syslog.openlog('python')
+        syslog.closelog()
+
+    def test_setlogmask(self):
+        syslog.setlogmask(syslog.LOG_DEBUG)
+
+    def test_log_mask(self):
+        syslog.LOG_MASK(syslog.LOG_INFO)
+
+    def test_log_upto(self):
+        syslog.LOG_UPTO(syslog.LOG_INFO)
+
+def test_main():
+    test_support.run_unittest(__name__)
+
+if __name__ == "__main__":
+    test_main()
index 4a77916942ba40e98013f94685c5cc3922cb1dab..08e4a369d453b9172cc5605430a23dcf114410c6 100644 (file)
@@ -58,9 +58,10 @@ syslog_openlog(PyObject * self, PyObject * args)
        long logopt = 0;
        long facility = LOG_USER;
        PyObject *new_S_ident_o;
+       const char *ident;
 
        if (!PyArg_ParseTuple(args,
-                             "S|ll;ident string [, logoption [, facility]]",
+                             "U|ll;ident string [, logoption [, facility]]",
                              &new_S_ident_o, &logopt, &facility))
                return NULL;
 
@@ -71,7 +72,10 @@ syslog_openlog(PyObject * self, PyObject * args)
        S_ident_o = new_S_ident_o;
        Py_INCREF(S_ident_o);
 
-       openlog(PyString_AsString(S_ident_o), logopt, facility);
+       ident = PyUnicode_AsString(S_ident_o);
+       if (ident == NULL)
+               return NULL;
+       openlog(ident, logopt, facility);
 
        Py_INCREF(Py_None);
        return Py_None;
@@ -81,17 +85,21 @@ syslog_openlog(PyObject * self, PyObject * args)
 static PyObject * 
 syslog_syslog(PyObject * self, PyObject * args)
 {
-       char *message;
+       PyObject *message_object;
+       const char *message;
        int   priority = LOG_INFO;
 
-       if (!PyArg_ParseTuple(args, "is;[priority,] message string",
-                             &priority, &message)) {
+       if (!PyArg_ParseTuple(args, "iU;[priority,] message string",
+                             &priority, &message_objecct)) {
                PyErr_Clear();
-               if (!PyArg_ParseTuple(args, "s;[priority,] message string",
-                                     &message))
+               if (!PyArg_ParseTuple(args, "U;[priority,] message string",
+                                     &message_objecct))
                        return NULL;
        }
 
+       message = PyUnicode_AsString(message_object);
+       if (message == NULL)
+               return NULL;
        syslog(priority, "%s", message);
        Py_INCREF(Py_None);
        return Py_None;