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