I think this one only didn't work with discovery by accident: the only change necessary to make discovery pass was to make _TestPoll match all other _Test* classes by inheriting from BaseTestCase instead of unittest.TestCase. The remainder of the changes are to eliminate test_main by converting it instead to setUpModule. setUpModule is, I think, necessary on this one due to a failing test in WithProcessesTestLogging when the initial call to multiprocessing.get_logger().setLevel() (originally in test_main) is moved to top-level code.
Hmmm, it looks a couple of things have gone wrong. First, I didn't try the patch on 3.3, whose test_multiprocessing is significantly different than default's. This appears to be due largely to dd5e98ddcd39, but there have been other changes to only default since then as well. As it turns out, 3.3 passes default's test_multiprocessing, so is there any reason not to backport all of the changes to 3.3 to keep the two the same? FTR, the changesets not backported are (in order): dd5e98ddcd39, 7d69d04522e3, 2dc08789ad3e, and 2966e5a55396. Secondly, the patch doesn't apply to default because a new test was added shortly after I submitted the patch. The only real change to my patch to deal with this is the line numbers of hunk 2, and the removed testcases_other has an extra line removed. Here's a new version of the patch which applies cleanly to default. I'll leave 3.3 for now until it's decided whether or not to backport changes to it.
Since there's been another test added since the last version of this patch, here's a new patch again. I'll also be attaching a patch to 3.3, which includes backports of the 4 changesets mentioned in my last message, as well as the changes for this issue.