Failure to find layers should not pass silently =============================================== This is a regression test for the following bug: you try to run several test layers using subprocesses (e.g. because you used bin/test -j99), and the child process somehow is unable to find the layer it was supposed to be running. This is a serious problem that should not pass silently. Instead of setting up the conditions for this problem to actually occur in practice we'll simulate the subprocess invocation using --resume-layer. >>> import os.path, sys >>> directory_with_tests = os.path.join(this_directory, 'testrunner-ex') >>> defaults = [ ... '--path', directory_with_tests, ... '--tests-pattern', '^sampletestsf?$', ... ] The test runner does some funky stuff in this case, specifically, it closes sys.stdout, which makes doctest unhappy, so we stub the close method out. >>> sys.stdout.close = lambda: None >>> from six import StringIO >>> orig_stderr = sys.stderr >>> sys.stderr = fake_stderr = StringIO() >>> sys.argv = 'test --resume-layer NoSuchLayer 0'.split() >>> from zope import testrunner >>> testrunner.run_internal(defaults) ********************************************************************** Cannot find layer NoSuchLayer ********************************************************************** Total: 0 tests, 0 failures, 1 errors and 0 skipped in 0.000 seconds. True It also prints to stderr to communicate with the parent process >>> print(fake_stderr.getvalue(), end='') 0 0 1 subprocess failed for NoSuchLayer Cleanup >>> del sys.stdout.close >>> sys.stderr = orig_stderr