[prev in list] [next in list] [prev in thread] [next in thread]
List: 9fans
Subject: Re: [9fans] acid question
From: Philippe Anel <xigh () bouyapop ! org>
Date: 2010-07-17 17:58:35
Message-ID: 4C41EF4B.300 () bouyapop ! org
[Download RAW message or body]
Not needed in my opinion. Acid can also helps.
If we decide that function marked for unit testing with a known regexp
such as ending by _Test ...
defn utest()
{
sl = symbols;
while sl do {
s = head sl;
if (regexp(".*_Test", s[0])) then {
call(s[2]);
}
sl = tail sl;
}
}
This would call every function whose name is ending with _Test.
Phil;
On 7/17/2010 7:23 PM, Skip Tavakkolian wrote:
> nice. i'll give it a try later.
>
> thinking outloud here; it seems that one could extend the capability
> of ?c for generating acid code to include creating call wrapper
> for any function that is marked for unit testing (perhaps another
> #pragma?)
>
>> This one sounds like to work (except it does not save registers) ...
>>
>> defn call(addr)
>> {
>> local pco;
>>
>> // we need stack space, and thus process stopped.
>> if status(pid) != "Stopped" then {
>> print("Waiting...\n");
>> stop(pid);
>> }
>>
>> // Backup orginal instruction
>> pco = fmt(*PC, bpfmt);
>>
>> // Put a temporary breakpoint
>> **PC = bpinst;
>>
>> // update stack pointer
>> *SP = *SP - 4;
>>
>> // make called function returning to this point
>> **SP = *PC;
>>
>> // set PC to function to call
>> *PC = addr;
>>
>> // do the call
>> startstop(pid);
>>
>> // restore original instruction
>> *PC = pco;
>> }
>>
>> Phil;
>
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic