Hack to name unit tests?

Robert Fraser fraserofthenight at gmail.com
Fri Nov 30 05:10:12 PST 2007


Don Clugston wrote:
> Robert Fraser wrote:
>> I'm creating a Flectioned-based way to run unit tests individually 
>> (it'll be hooked into a front-end, so you can run test suites, repeat 
>> only failed tests after a code change, etc.)
>>
>> However, I have run into a problem: unit tests can't be named. Right 
>> now I have a signature system, but I was wondering if there's any 
>> hackish way to predictably insert a string into the generated object 
>> file in a way that users can name unittests. That is to say, given a 
>> function pointer, is there any way I can scan the code to see if a 
>> name has been given to the unit test, and if so extract that name at 
>> runtime?
>>
>> Ideally, it'd be as easy for the user as something like:
>>
>> unittest
>> {
>>    assert(":testName:");
>>    // Rest of test goes here...
>> }
> 
> I think this is possible, but tricky. If your unit test has a local 
> variable, and you instantiate a template using that local variable as an 
> alias parameter, the module and the number of the unit test gets 
> included into the mangled name.
> This means that it's possible for code to know which unit test it is 
> inside.
> By making the template a class, you could to walk the RTTI list and make 
> a lookup table to associate test numbers with their names. If you can 
> get the list  of unittest numbers from flectioned, you can join it
> 
> BUT... that's all pretty hairy. Maybe there's a less convoluted way of 
> doing it.
OK; _that's_ what I was looking for, since the test doesn't need to be 
run that way... time to get hacking!



More information about the Digitalmars-d mailing list