for Windows I'm not 100% sure (Sidney, could you please test that everything still works?)
No, there are two problems:
1) In spamd/SATest.pm remove line 264
$spamdargs =~ tr,/,\\, if $RUNNING_ON_WINDOWS;
The command line set up in $spamdargs invokes a cygwin executable and has unix style arguments. There isn't any way to second guess things here ... If somebody sets up SPAMD_SCRIPT to invoke spamd in some way, they'll just have to make sure that whatever they set up can handle unix format pathnames if there are any. SATest can't force it to Windows style for them the way it has to when it invokes spamc.
The effect of this bug is that spamd doesn't run at all during the tests because the spamd pathname argument to cygwin perl is changed to Windows format.
2) You removed the --stdout option to spamd and left the system call in the original style system ("$spamdargs > log/$testname.spamd 2>&1 &");
As we discussed, the redirection doesn't work when you use the "start" command to background the process. I didn't explain how it doesn't work: Windows redirects the output of the start command, not the command that is being started, and offers no syntax for doing the latter. As a result that command writes an empty output to the log file and spamd's output appears in a console window. stop_spamd depends on the output from spamd being written into the log file, where it can be read to extract the pid to be killed.
So you have to find a way to get the output into the log file under Windows. The way I did it was to implement the --stdout option to spamd, add it to the arguments, and to change the system call to be system("$spamdargs"). If you really want to you can make that conditional on running under Windows.
The effect of this bug is that the spamd process is not killed when the test tries to kill it.
-- sidney
