Sebastian,
The module I'm testing has a lot of interconnected deps so I went about creating a standalone OOT module to test with. After spending about 30 minutes trying to figure out why it was hanging after getting to tearDown() I checked your E-Mail and realized that I had forgotten to put in self.tb.wait() after self.tb.stop(). At that point things worked just fine. I cannot test that change against the original module until Monday, but I have high hopes that I just forgot that one little bit.
I've included my test code for anyone who wants to know how to test PMT only blocks. I think this is the only way to do it since there appears to be no way to inject PMT messages to the module under test. So, I used the method described by Marcus (linked in one of my previous E-Mails) of creating a producer that gets triggered by a vector source and then a consumer that gathers output from the module under test. If anyone has a better method I'd love to hear it! The only other thing I could think of was a message strobe which doesn't give me control over timing of individual PMTs.
For those not well versed in C++, the foo_source block simply reads in a PMT that needs to be a dictionary containing the key 'bytes' and puts the value (a 64 bit unsigned int) into a vector (list for python folks). That vector is being read every 10 ms by a thread created by the foo_source block. When there are elements in the vector the thread will output X PMTs where X is the value from 'bytes'. There will be 10 ms between each PMT being output. It's meant to mimic the block I was having issues testing. I could have probably changed the class to inherit from gr.block instead of gr.sync_block, but meh. The test appears to work anyway :)
Thank you very much!
-Dave