------
* Faster! Dose waits just 10ms before spawning a test job, and
spawns only a single test job subprocess when multiple files are
modified at once.
Towards an event that triggers a new test job while another job
is running, the test job subprocess is killed immediately,
unless it happens during the first 50ms after spawning, where
the kill happens after that delay.
That avoids new test job runners as much as possible and it's faster
than spawning a runner for each event just to kill it afterwards, as
Dose used to do. The kill delay wasn't explicit, but it used
to have a 50ms polling loop querying for a spawned subprocess.
The 10ms pre-spawn delay is evaluated in a 1ms polling loop, and
simultaneous file modification events are joined together before
that. In other words, Dose can abort a test job as early as
possible.
* More compact logging, without information about the repeated/cyclic
file modification detection, and printing timestamps only for a
spawned test job.
* Revert file creation/deletion to trigger a test job. Any event on
a file (i.e., any file creation/modification/deletion) trigger a
test job. On the other hand, events on directories are ignored.
Actually, it's a bug fix. At least the file creation is required on
Mac OS X as some applications (e.g. vim) delete and create a file
instead of modifying it, w.r.t. the watchdog events.
* Bug fix: some calls were replaced by event messages to let the main
window be refreshed by the main thread (thread-safe) instead of a
test job runner thread or a watcher thread.
That refresh happens when dose toggles its green/yellow/red color
and when the watching stops due to some internal exception.
Updating the GUI from outside the wxPython event loop (main thread)
can cause a segmentation fault.
* Bug fix: multi-byte unicode characters have been being written to
the standard error with an ANSI escape code in between. For example,
it was printing ``çç`` (``u"\u00c3\u00a7"``, or
``b"\xc3\x83\xc2\xa7"`` encoded in UTF-8), instead of ``çç``
(``u"\u00e7"``, or ``b"\xc3\xa7"`` encoded in UTF-8). Now it reads
whole characters based on the terminal encoding.
* Bug fix: the "About..." was broken due to fragmentation, as the
metadata variables it requires were moved to another file. While
fixing it, the resulting about box was rebuilt to use the package
text files themselves instead of some hardcoded text to be
manually updated. Actually, that would require a direct setuptools_
installation (i.e., calling ``python2 setup.py install``) instead
of a pip installation to properly work, as the setuptools ``setup``
and its ``pkg_resources.resource_string`` don't use the
``sys.prefix`` as the shared resources root directory.
* Bug fix: use the watching directory as the working directory for
running the test command instead of the current working directory
whereby Dose was called.
* Internal exceptions from the test job runner thread can't be
handled, but the header was updated to be more informative::
[Dose] Error while trying to run the test job
And a traceback is print.
* Rename "Skip pattern" to "Ignore pattern" in the GUI.
* This release isn't natively compatible with Windows due to the lack
of a ``os.WNOHANG`` constant in the Python standard library,
required by Dose when it waits for its child process (the test job)
to be killed before running another one. For running on Windows,
this release requires Cygwin.