Use async false, so test cases don't run concurrently. Some tests make changes to the file system and will break other tests that also rely on the file system.
Ensure the list of preprocessors is reset at the end of a test case so it doesn't affect the next test cases.
Add sleep to ensure the check for modified time works.