Explanation how to use GT Debugger and GT SUnit Debugger with DarkThem in Pharo 4.0 [was] Using Re: Re: showing a diff on #assert:equals:

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Explanation how to use GT Debugger and GT SUnit Debugger with DarkThem in Pharo 4.0 [was] Using Re: Re: showing a diff on #assert:equals:

Mariano Martinez Peck
Andrei... you rock!!! It works. I copy paste it here so that others can take advantage too. 
Look also the attached screenshot :)
Doru...you were right..you THINK you don't need a any other tool, until someone comes with a little example as a debugger for test cases...wow... those are moldable tools!!!!


The code I used (with the hack of the override) is this: http://ws.stfx.eu/ME85BCYIPSU8
(of course, I published the code via the playground hahahha)

Thank you!



On Thu, Dec 3, 2015 at 3:53 PM, Andrei Chis <[hidden email]> wrote:
Ahh. Wrong order for loading packages in my previous instructions.
You should load first DebuggerExtensions and then the debuggers.

Cheers,
Andrei

On Thu, Dec 3, 2015 at 7:39 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Thu, Dec 3, 2015 at 1:15 PM, Andrei Chis <[hidden email]> wrote:
Hi Mariano,

To get it working in Pharo 4 you should:

- load GT-Debugger-AndreiChis.249 from AndreiChis/GTDebuggerPharo4
- load GT-SUnitDebugger-AndreiChis.18 from AndreiChis/GTDebuggerPharo4
- load DebuggerExtensions-AndreiChis.9 from Pharo/Debugger
- register the debuggers:
   - GTGenericStackDebugger registerExtraToolsOn: Smalltalk tools.
   - GTSUnitDebugger registerExtraToolsOn: Smalltalk tools

Like this the spec debugger is still the default one and you still have to start GTDebugger from the pre debug window.
You can register GTDebugger as the default one (GTGenericStackDebugger registerToolsOn: Smalltalk tools) but it will not switch to the SUnit extension automatically (that only works in Pharo 5). You'll need to switch to it from the context menu of the stack. 

Let me know how it goes.


Hi Andrei, 

I tried what you said with the following script in a virgin 4.0:

Gofer it
smalltalkhubUser: 'AndreiChis' project: 'GTDebuggerPharo4';
version: 'GT-Debugger-AndreiChis.250';
version: 'GT-SUnitDebugger-AndreiChis.19';
load.
Gofer it
smalltalkhubUser: 'Pharo' project: 'Debugger';
version: 'DebuggerExtensions-AndreiChis.9';
load.
(Smalltalk at: #GTGenericStackDebugger) registerExtraToolsOn: Smalltalk tools.
(Smalltalk at: #GTSUnitDebugger) registerExtraToolsOn: Smalltalk tools.


However, as soon as I try to debug something I get the following error. It seems I am missing the class GTSUnitActivationPredicate.


UndefinedObject(Object)>>doesNotUnderstand: #new
GTSUnitDebugSession class>>activationPredicate
GTSUnitDebugger class>>handlesContext:
[ :aPair | aPair key handlesContext: aContext ] in PharoCommonTools(ToolRegistry)>>debuggersWithRanksForContext: in Block: [ :aPair | aPair key handlesContext: aContext ]
OrderedCollection>>select:
PharoCommonTools(ToolRegistry)>>debuggersWithRanksForContext:
PharoCommonTools(ToolRegistry)>>debuggerDispatcherFor:
GTTemporaryPreDebugChangeDebuggerAction>>executeAction
GTTemporaryPreDebugChangeDebuggerAction(DebugAction)>>execute
....

Any idea?

Weird thing is that I am NOT opening a debugger of a SUnit.. but a regular debugger.
Maybe the registration part of your script is wrong?

Thanks in advance, 
 
Cheers,
Andrei

On Wed, Dec 2, 2015 at 5:37 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Wed, Dec 2, 2015 at 1:31 PM, Andrei Chis <[hidden email]> wrote:


On Wed, Dec 2, 2015 at 5:24 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Wed, Dec 2, 2015 at 1:02 PM, Andrei Chis <[hidden email]> wrote:
I think it's not straightforward to get it to work in Pharo 4.
I'm not sure you can load the latest version of GTools into Pharo 4.


That's what I was thinking :(
 
You can load just the packages for GT-Debugger, GT-SUnitDebugger and DebuggerExtensions, however, it would not work by default as there were some changes to the API of the debugger.  You'll also need to backport those changes, but that might be more work.
If you really want to use it I could make a version that uses the old API.


I don't want you loose much time if I am the only one wanting this. Personally, for my real client-paying job I won't be able to move to 5.0 until it's released. But then I can wait. 

However, I would like to at least give it a quick try to the dirty solution. As you said, maybe loading those 3 packages and bringing some slices (the ones of the debugger api might work). mmmmm but I guess this will break the Spec Debugger right? Unless the slides also updates that..
Do you remember which were the debugger changes?

There are 4 slices that you need to load 
I tried loading the first one (https://pharo.fogbugz.com/f/cases/17069) and my image hangs...

I'll see tomorrow if I can make a quick and dirty refactoring to get it to work just for Pharo 4.


Super !!!  Let us know! 
 
 

 
 

On Wed, Dec 2, 2015 at 4:07 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Wed, Dec 2, 2015 at 11:53 AM, Andrei Chis <[hidden email]> wrote:
I splitted the code pane into two to also show the setUp/tearDown code.
A button/checkbox to hide/show this pane could be next.


Coool!!! 
Andrei, let me ask, would this work in Pharo 4.0?  If true, then I should only load gt debugger or a new version of the whole GT suite ?


 
Cheers,
Andrei

On Wed, Dec 2, 2015 at 1:09 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Wed, Dec 2, 2015 at 9:02 AM, Juraj Kubelka <[hidden email]> wrote:
Hi,

On Dec 1, 2015, at 17:47, Andrei Chis <[hidden email]> wrote:

Hi Mariano

On Tue, Dec 1, 2015 at 12:59 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Tue, Dec 1, 2015 at 7:31 AM, Andrei Chis <[hidden email]> wrote:


On Tue, Dec 1, 2015 at 1:05 AM, Mariano Martinez Peck <[hidden email]> wrote:
Uhhh that's very cool. Quick question, what happens if the textual representation of the actual vs expected is the same yet the objects are not #= ?
It shows no diff and then I must go to see the inspector?

These textual representations can be customized per each object type, however if they are the same now it just shows the diff pane with no differences. 
Another idea would be to also show two inspectors side-by-side apart  from the diff.

A side-by-side inspector would be another really cool addition for when the string comparison won't work. 
 
Then even if you see or not a difference in the textual diff, you could use the inspector to look at differences between the state.
Also right now the diff is textual. Adding better diff widgets for specific data types would help. 


Oh yes. But I think that adding a side-by-side inspector would be a great second step in which you know you can always fall back no matter which kind of object. 

I added two side by side inspectors. I still need to improve/disable navigation in these embedded inspectors

<debugger.png>

 

BTW...since we are near Christmas... it would be terrific to have a button somewhere to show/hide the #setUp method besides the code representing the piece of stack you clicked. Sometimes when I am debugging test failures that had a setup I always have to open another window with the setup because I don't remember everything I did there and that's useful information to understand what a test could have failed.  There was a Nautilus plugin for that some time ago. 

Sounds like an useful feature. I'll give a try implementing it. Or if you are faster you can give it a try :)

I like the idea. Maybe having a ‘setUp tab; next to ‘Source’ tab whenever we browse a test case object in debugger? Or it could be part of the inspector the same way you did ‘Diff’ tab.


I think the MAIN point for me is to be able to see the setUp AT THE SAME time with the code of the failing error. If I have to click another tab to see the setup and then another click to go back to see my test, then I gain nothing. Maybe splitting (either vertically or horizontally) the area where now you see the method source (of the selected stack) in order to also see (fixed) the setUp ?  Or .. maybe a new tab in the below (expected vs current, etc)  called "setUp". That way, at least I can see the method and the setUp all together (Ok, I cannot see the expected vs current, but ok)

 
Cheers,
Juraj


Cheers,
Andrei
 

Cheers, 

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev

Screen Shot 2015-12-03 at 4.16.00 PM.png (225K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Explanation how to use GT Debugger and GT SUnit Debugger with DarkThem in Pharo 4.0 [was] Using Re: Re: showing a diff on #assert:equals:

Andrei Chis
Finally it works :)

Now this is a rather generic extension.
If you want to go one step further you can create an extension that shows more contextual information related to your application.

Cheers,
Andrei

On Thu, Dec 3, 2015 at 8:22 PM, Mariano Martinez Peck <[hidden email]> wrote:
Andrei... you rock!!! It works. I copy paste it here so that others can take advantage too. 
Look also the attached screenshot :)
Doru...you were right..you THINK you don't need a any other tool, until someone comes with a little example as a debugger for test cases...wow... those are moldable tools!!!!


The code I used (with the hack of the override) is this: http://ws.stfx.eu/ME85BCYIPSU8
(of course, I published the code via the playground hahahha)

Thank you!





_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Explanation how to use GT Debugger and GT SUnit Debugger with DarkThem in Pharo 4.0 [was] Using Re: Re: showing a diff on #assert:equals:

Mariano Martinez Peck


On Thu, Dec 3, 2015 at 6:02 PM, Andrei Chis <[hidden email]> wrote:
Finally it works :)

Now this is a rather generic extension.
If you want to go one step further you can create an extension that shows more contextual information related to your application.


I think I still have some generic possible feedback after playing with it for some hours that if you can implement that at some point it will be super awesome:

1) I want to use the SUnit debugger EVERY TIME I run tests...even if there is no #assert:equals:. Any error , any #assert:  etc, I do want the SUnit Debugger. Why? Because showing setUp and tearDown for example are interesting even if there is no #assert:equals:
2) Point 1 means that the SUnit debugger must support either displaying or not the current vs expected tabs ?  (or maybe a subclass used for #assert:equals: ?)
3) It would be nice to have a button to hide/show the setUp and tearDown. 
4) Would be nice to automatically show tearDown/setUp IF the implementation is NOT the one of TestCase (empty method) and automatically hide if  it is. 

I think that's all for the moment. I am already enjoying it. 

OHH BTW... you said " it will not switch to the SUnit extension automatically (that only works in Pharo 5) ". 
Is there a quick dirty/hack/override/workaround/hardcode I can do to make that work in 4.0?  


Thanks in advance!!!

 
Cheers,
Andrei

On Thu, Dec 3, 2015 at 8:22 PM, Mariano Martinez Peck <[hidden email]> wrote:
Andrei... you rock!!! It works. I copy paste it here so that others can take advantage too. 
Look also the attached screenshot :)
Doru...you were right..you THINK you don't need a any other tool, until someone comes with a little example as a debugger for test cases...wow... those are moldable tools!!!!


The code I used (with the hack of the override) is this: http://ws.stfx.eu/ME85BCYIPSU8
(of course, I published the code via the playground hahahha)

Thank you!





_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Explanation how to use GT Debugger and GT SUnit Debugger with DarkThem in Pharo 4.0 [was] Using Re: Re: showing a diff on #assert:equals:

Andrei Chis


On Thu, Dec 3, 2015 at 10:25 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Thu, Dec 3, 2015 at 6:02 PM, Andrei Chis <[hidden email]> wrote:
Finally it works :)

Now this is a rather generic extension.
If you want to go one step further you can create an extension that shows more contextual information related to your application.


I think I still have some generic possible feedback after playing with it for some hours that if you can implement that at some point it will be super awesome:

1) I want to use the SUnit debugger EVERY TIME I run tests...even if there is no #assert:equals:. Any error , any #assert:  etc, I do want the SUnit Debugger. Why? Because showing setUp and tearDown for example are interesting even if there is no #assert:equals:
2) Point 1 means that the SUnit debugger must support either displaying or not the current vs expected tabs ?  (or maybe a subclass used for #assert:equals: ?)
3) It would be nice to have a button to hide/show the setUp and tearDown. 
4) Would be nice to automatically show tearDown/setUp IF the implementation is NOT the one of TestCase (empty method) and automatically hide if  it is. 

I'll add them to my todo list. Just I do not have too much time right now.
 

I think that's all for the moment. I am already enjoying it. 

OHH BTW... you said " it will not switch to the SUnit extension automatically (that only works in Pharo 5) ". 
Is there a quick dirty/hack/override/workaround/hardcode I can do to make that work in 4.0?  

Had a second look and hopefully made this work :). You'll need to load GT-Debugger-AndreiChis.251.
With this I also fixed the colors in the black theme so you do not need the hack.
Also you can just call #register now instead of #registerExtraToolOn:

Cheers,
Andrei 


Thanks in advance!!!

 
Cheers,
Andrei

On Thu, Dec 3, 2015 at 8:22 PM, Mariano Martinez Peck <[hidden email]> wrote:
Andrei... you rock!!! It works. I copy paste it here so that others can take advantage too. 
Look also the attached screenshot :)
Doru...you were right..you THINK you don't need a any other tool, until someone comes with a little example as a debugger for test cases...wow... those are moldable tools!!!!


The code I used (with the hack of the override) is this: http://ws.stfx.eu/ME85BCYIPSU8
(of course, I published the code via the playground hahahha)

Thank you!





_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Explanation how to use GT Debugger and GT SUnit Debugger with DarkThem in Pharo 4.0 [was] Using Re: Re: showing a diff on #assert:equals:

Mariano Martinez Peck


On Thu, Dec 3, 2015 at 7:29 PM, Andrei Chis <[hidden email]> wrote:


On Thu, Dec 3, 2015 at 10:25 PM, Mariano Martinez Peck <[hidden email]> wrote:


On Thu, Dec 3, 2015 at 6:02 PM, Andrei Chis <[hidden email]> wrote:
Finally it works :)

Now this is a rather generic extension.
If you want to go one step further you can create an extension that shows more contextual information related to your application.


I think I still have some generic possible feedback after playing with it for some hours that if you can implement that at some point it will be super awesome:

1) I want to use the SUnit debugger EVERY TIME I run tests...even if there is no #assert:equals:. Any error , any #assert:  etc, I do want the SUnit Debugger. Why? Because showing setUp and tearDown for example are interesting even if there is no #assert:equals:
2) Point 1 means that the SUnit debugger must support either displaying or not the current vs expected tabs ?  (or maybe a subclass used for #assert:equals: ?)
3) It would be nice to have a button to hide/show the setUp and tearDown. 
4) Would be nice to automatically show tearDown/setUp IF the implementation is NOT the one of TestCase (empty method) and automatically hide if  it is. 

I'll add them to my todo list. Just I do not have too much time right now.
 

Great! thanks. 
 

I think that's all for the moment. I am already enjoying it. 

OHH BTW... you said " it will not switch to the SUnit extension automatically (that only works in Pharo 5) ". 
Is there a quick dirty/hack/override/workaround/hardcode I can do to make that work in 4.0?  

Had a second look and hopefully made this work :). You'll need to load GT-Debugger-AndreiChis.251.
With this I also fixed the colors in the black theme so you do not need the hack.
Also you can just call #register now instead of #registerExtraToolOn:


Excellent. I just tried everything and it all worked. Thank you very much!
 
Cheers,
Andrei 


Thanks in advance!!!

 
Cheers,
Andrei

On Thu, Dec 3, 2015 at 8:22 PM, Mariano Martinez Peck <[hidden email]> wrote:
Andrei... you rock!!! It works. I copy paste it here so that others can take advantage too. 
Look also the attached screenshot :)
Doru...you were right..you THINK you don't need a any other tool, until someone comes with a little example as a debugger for test cases...wow... those are moldable tools!!!!


The code I used (with the hack of the override) is this: http://ws.stfx.eu/ME85BCYIPSU8
(of course, I published the code via the playground hahahha)

Thank you!





_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev




--

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev