2010/6/28 Mariano Martinez Peck <marianopeck@gmail.com>
just in case...in http://www.squeaksource.com/ObjectMetaTools
you have interesting packages like MethodWrappers. It sohuld be working in pharo.
Thanks, I will have a look. I've commited a (experimental) version of Autotest which counts hit on the modified method and displays it in the dashboard. It was quite tricky to develop it with unit tests & threads but fun. This sort of code you write and say "waouh this is really cool !". Thank you all ! I really like the hit count in the dashboard, brings confidence. Laurent Laffont http://pharocasts.blogspot.com/ http://magaloma.blogspot.com/
cheers
mariano
2010/6/27 laurent laffont <laurent.laffont@gmail.com>
2010/6/27 Benoit St-Jean <bstjean@hotmail.ca>
Hi Laurent,
Perhaps I am missing something but you only need 2 conditions to detect what you are looking for:
1) changed method is a test (and defined in a subclass of TestCase) 2) changed method has a sender that is a test method
First Autotest versions have these two heuristics. Then I feel the need to add: - change method is a setUp or tearDown -> run all tests of TestCase - and now when there's no senders of changed method in a TestCase (a private method for example) -> try to find tests of the changed method class (I think it can be better but I have no other solution yet)
Indeed, using Autotest I feel the need to be sure that the method I've changed has been called. I would like to see a warning if it's not the case.
Cheers
Laurent
----------------- Benoit St-Jean A standpoint is an intellectual horizon of radius zero. (Albert Einstein)
------------------------------ From: laurent.laffont@gmail.com Date: Sun, 27 Jun 2010 17:33:53 +0200 To: pharo-project@lists.gforge.inria.fr Subject: [Pharo-project] Xtreme Pharo hacker needed :)
Hi,
I struggle for a functionality I want to add on Autotest. Suppose a class with two methods A and B, such as A senders of B
Zork>>methodA self methodB
And unit tests:
ZorkTest>>testSomething ..... Zork new methodA ... self assert: ....
If I change methodA, Autotest detects it, search all senders of methodA in tests and run. As ZorkTest>>testSomething is sender of Zork>>methodA, it will find and run it.
Now if I change methodB and there's no senders in tests, the previous heuristic won't work. So I added as last heuristic: if no method found, search all TestCases that references the changed method class and run. So here it will find ZorkTest and run all its tests. The problem is that I don't really know if the method I've changed has been actually "hit" by the tests. I just see that tests has been run. I don't know if my method has been called when running the tests.
So I want to detect this.
One way of doing this seems to use MethodContext>>runSimulated:contextAtEachStep:. I've found this looking at MessageTally. Is it the best solution ?
So in Autotest>>findRunAndShowTestsOf: I try something like this
Autotest>>findRunAndShowTestsOf:changedMethod | testMethods aTestResult methodHit | "Finds the test related to changedMethod, run them and tell the view to update" testMethods := search methodsFor: changedMethod. methodHit := false. thisContext sender runSimulated: [aTestResult := runner run: testMethods] contextAtEachStep: [:current| (current method = changedMethod) "<--- here I detect if changedMethod has been hit" ifTrue: [methodHit := true]]. .....
but using this debugger opens with "SimulationGuardException: triggered by BlockClosure>>newProcess" in MethodContext>>doPrimitive:method:receiver:args:
As I don't (yet :) understand all this stuff, I want to know if it's the right way to do it and what should I check.
Thanks
Laurent Laffont
http://pharocasts.blogspot.com/ http://magaloma.blogspot.com/
------------------------------ Enter for a chance to get your town photo on Bing.ca! Submit a Photo Now! <http://go.microsoft.com/?linkid=9734379>
_______________________________________________ Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project