Kai Grossjohann <[EMAIL PROTECTED]> wrote: > I am trying to figure out whether a message is logged by syslog. > Not sure how I would do that except require the user to configure syslog > to log foo messages to the /var/log/foo file and to then check that > the message is written.
Well, I suppose that depends on what exactly it is that you're trying to test. Are you testing the operation of the syslog system itself, or are you testing that *your program* calls syslog at the appropriate time? If the latter, then you might consider writing your own test stub replacement for the syslog module that looks something like this: history = [] def clearHistory(): global history history = [] def syslog (arg1, args=None): history.append ((time.ctime(), arg1, arg2)) Arrange to have this module be found in your PYTHONPATH before the standard one. Have your setUp() method call clearHistory(). Each test case that should write something to syslog can interrogate syslog.history to see if the appropriate thing was added to the list. There is so much that can go wrong with syslog that it's hard to do any deterministic testing using it. The syslogd could crash. It could be configured wrong (or in a way which forwards all local syslog messages to another machine). Or, the UDP messages could just plain get dropped by the network without a trace. This is not the kind of stuff you want to be trusting for a unit test. > Why did you use the open/IOError combination, instead of > os.stat/OSError? I am using the latter. But I don't know what I'm doing... I simply tried opening a non-existent file and saw what exception I got: >>> open ("/dev/foo") Traceback (most recent call last): File "<stdin>", line 1, in ? IOError: [Errno 2] No such file or directory: '/dev/foo' >>> I suppose it would have been smarter to have read the docs, but I'm lazy. Larry Wall says that's a good thing in programmers :-) -- http://mail.python.org/mailman/listinfo/python-list