About TDD and Pharo

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

Re: About TDD and Pharo

Stéphane Ducasse

On Jun 2, 2010, at 10:42 PM, Guillermo Polito wrote:

> Today's debugger (and all pharo indeed), is extremely dependant on the mouse...  I would love to do all the same with just the keyboard :(

me too.
Now if you want to help in this direction we should check the packages for keybindings and see what they are doing and how
we could integrate them.
The way this is done in the paragraph editor is not good. I spent hours on it for the botsinc book long time ago.

Stef

>
> On Wed, Jun 2, 2010 at 4:30 PM, Stéphane Ducasse <[hidden email]> wrote:
> Hi all
>
> Imagine that we would like to sell pharo (+ seaside) as THE agile platform for doing TDD.
> What would be the changes that we could do support it.
> I know that hernan did a package for that but not I would like to have a new list of items
> to support it.
>
> Stef
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Guillermo Polito
Where should I look? :D Is something written somewhere? :P

On Thu, Jun 3, 2010 at 1:22 PM, Stéphane Ducasse <[hidden email]> wrote:

On Jun 2, 2010, at 10:42 PM, Guillermo Polito wrote:

> Today's debugger (and all pharo indeed), is extremely dependant on the mouse...  I would love to do all the same with just the keyboard :(

me too.
Now if you want to help in this direction we should check the packages for keybindings and see what they are doing and how
we could integrate them.
The way this is done in the paragraph editor is not good. I spent hours on it for the botsinc book long time ago.

Stef

>
> On Wed, Jun 2, 2010 at 4:30 PM, Stéphane Ducasse <[hidden email]> wrote:
> Hi all
>
> Imagine that we would like to sell pharo (+ seaside) as THE agile platform for doing TDD.
> What would be the changes that we could do support it.
> I know that hernan did a package for that but not I would like to have a new list of items
> to support it.
>
> Stef
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Noury Bouraqadi-2
In reply to this post by Stéphane Ducasse

On 3 juin 2010, at 07:45, Stéphane Ducasse wrote:

>
> On Jun 2, 2010, at 11:22 PM, Germán Leiva wrote:
>
>> I'm thinking out load here ...
>>
>> In the debugger when a DNU is raised, for speeding up the programming in "TDD mode":
>> • The create button must add the method in the class of the receiver, the possibility to choose a superclass of the receiver must be optional (I don't like the recurrent asking...) in other button for example or having different shortcuts from the keyboard
> is it not already the case?
>
Only when the exception window shows up. Once you click on the debug button, you can't do it anymore.

>>
>> • In the creation of a new class through "define new class" it will be helpful to remember the last class category used
>> Some ToDo list supported from the environment and some facility for the creation of test.

I'd rather go for a bit more sophisticated system based on Scrum task board coupled with Monticello.
Tasks descriptions are organized in three collections Done, ToDo and inProgress.
Once we do a project snapshot, we got these descriptions referenced in the snapshot. So, when browsing the history of snapshot, one can more easily figure out what each version is about.

More features I'd like to have is in the refactoring browser :
-When renaming an instance variable, rename its accessors two
-Suggest to delete accessors when deleting an IV
-Be able to generate accessors for multiple IVs at the same time (like in eclipse!)
-Have a preference that automatically generate accessors on addition of IVs / class definition

Noury
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Lukas Renggli
> -Suggest to delete accessors when deleting an IV

You cannot delete an inst-var with the refactoring engine if there are
references.

> -Be able to generate accessors for multiple IVs at the same time (like in eclipse!)

This is built-in for several years now: refactor class | create accessors

> -Have a preference that automatically generate accessors on addition of IVs / class definition

I rarely use these accessor refactorings because I have to rewrite
each method by hand afterwards anyway to have a type-revealing
argument name and a comment.

Lukas

--
Lukas Renggli
www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Noury Bouraqadi-2
In reply to this post by Noury Bouraqadi-2
I'd like to add to my whishlist : an automated execution of lint when all tests are green.

Noury
On 3 juin 2010, at 21:07, Noury Bouraqadi wrote:

>
> On 3 juin 2010, at 07:45, Stéphane Ducasse wrote:
>
>>
>> On Jun 2, 2010, at 11:22 PM, Germán Leiva wrote:
>>
>>> I'm thinking out load here ...
>>>
>>> In the debugger when a DNU is raised, for speeding up the programming in "TDD mode":
>>> • The create button must add the method in the class of the receiver, the possibility to choose a superclass of the receiver must be optional (I don't like the recurrent asking...) in other button for example or having different shortcuts from the keyboard
>> is it not already the case?
>>
> Only when the exception window shows up. Once you click on the debug button, you can't do it anymore.
>
>>>
>>> • In the creation of a new class through "define new class" it will be helpful to remember the last class category used
>>> Some ToDo list supported from the environment and some facility for the creation of test.
>
> I'd rather go for a bit more sophisticated system based on Scrum task board coupled with Monticello.
> Tasks descriptions are organized in three collections Done, ToDo and inProgress.
> Once we do a project snapshot, we got these descriptions referenced in the snapshot. So, when browsing the history of snapshot, one can more easily figure out what each version is about.
>
> More features I'd like to have is in the refactoring browser :
> -When renaming an instance variable, rename its accessors two
> -Suggest to delete accessors when deleting an IV
> -Be able to generate accessors for multiple IVs at the same time (like in eclipse!)
> -Have a preference that automatically generate accessors on addition of IVs / class definition
>
> Noury


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

hernan.wilkinson
In reply to this post by Mariano Martinez Peck
Hi all,
 this is a cool thread! :-)

 What I did are changes to the tools to make more easy to run tests and implement what is needed. For example:

1) When you are in the browser writing a test method, you can press ctrl + t to save the method and run the test. If the test runs, it will show the green dot in the browser, if it does not, it popups the debugger directly on the error. So, this is a way to avoid pressing ctrl + s (save) then going to the method list, rigth click an select run test and if it fails select that you want to debug it.
I think this is really useful
2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo breakpoints dont show very well in the debuger (it highlights incorrect collaborations)
3) I removed the Notifier window, it directly opens the debugger
4) The debugger opens as a big window (so you dont have to resize it every time a test fails that is most of the time when doing tdd)
5) The debugger has an "Implement" button that does what German Lieva suggested
6) Removed all the questions the browser ask when saving a method that sends a message not implemented, etc. I left defined not declared class and variables.

I think there are more things that could be improved/implemented:
1) Provide a default implementation for methods that look like getter or setters (like German also suggested. VisualAge does that very nice)
2) Allow the "Implement" option to work also when the method has a "subclassResponsibility" Right now it only works with "DoesNotUnderstand"
3) Allow to define coding patterns easily and execute those coding patterns automatically when needed. For example, I have coding pattern form instance creation messages like this:
Attendee named: aName attending: aCollectionOfDates

   ^ self new initializeNamed: aName attending: aCollectionOfDates

It send the message new and the initializeXxx where Xxx is the same name of the instance creation message
We could provide default implementation for well know messages like #= or #hash (but this requires to generalize the implementation of #= and #hash using other objets...) 
4) Similar to the previous one but for classes. For example if I write:
InvalidNameException signalName: xxx
It could be inferred that we are creating an Exception, that the exception will have a class message that will signal the exception and  an instance creation message (#name:) to create instances, and an initialization message (#initializeName:) and an instance variable called name.
(Of course one could argue that if this can be automatize, the we can create an abstraction for that and then we would not need a class per exception... but that is another discussion :-) )
5) Change how the categorization of a method works. It should suggest a category based on the automatic categorization and it should not show so many options as it does right now (it is really annoying to see so many options)
6) Change the dialog for creating a class, it is too small 

I think that using TDD or BDD is another discussion... (for me there is no much different, that depends on what you understand with TDD...)
I don't know if I'd like the test to run automatically, never tried it, but it looks to me that it could be distractive...

Bye 
Hernan


2010/6/3 Mariano Martinez Peck <[hidden email]>
What Hernán did is here:   http://www.squeaksource.com/TDDFacilities.html

That was for Pharo 1.0.

For those that want to help in this subject I think the first step could be to load such package in a PharoCore1.1 and fix it in case it doesn't work.
Then, it can be integrated as part of PharoCore. Although it may be cool to have a preference to enable or disable all this changes (more TDD oriented), as we are not doing TDD all the time and sometimes we want the normal behavior.

Once we have that, we can start improving. For example, I would love also what Guille said: key bindings for the debugger. I would LOVE to have a Pharo less mouse oriented (I don't care who invented the mouse, I rather the keyboard).

So..open a bug ticket and start to play.

Cheers

Mariano
 
2010/6/3 Denis Kudriashov <[hidden email]>

Hello, No I dont. Who is it?

2010/6/3 Stéphane Ducasse <[hidden email]>

do you happen to know tim mckinnon?

Stef
On Jun 3, 2010, at 12:13 AM, Denis Kudriashov wrote:

> I use Mockery - my implementation SSpec idies. It is realy more powerfull, transparency and flexibility.
>
> With Mockery you dont need any special base classes for TestCases or mocks factory variables in code. You just use mocks where you want by Block creation scenarios:
>
> [:mock |
>   [sut doWith: mock] should lenient satisfy: [mock someMessage willReturn: #result]
> ] runScenario.
>
> State specs like "5 should be an instance of: Integer" can be easely added by pragmas.
>
> And Its work in Pharo 1.0.
>
> Of course, It's needs more good stuff. But now I dont have enough time.
> http://www.squeaksource.com/Mocketry.html
>
> 2010/6/3 Sean P. DeNigris <[hidden email]>
>
>
> Stéphane Ducasse wrote:
> >
> > Imagine that we would like to sell pharo (+ seaside) as THE agile platform
> > for doing TDD.
> > What would be the changes that we could do support it.
> >
>
> Coming from Ruby, it seemed like BDD was taking over the world, and was the
> next step in TDD evolution, but I found few mentions of it in the Squeak
> world.  For my own projects, I use SSpec (which I have been fixing as I go
> along).  I only use "tests" with SUnit assertions for community projects, as
> not to confuse or add additional dependencies.
>
> I think that core BDD support would be necessary to woo developers here,
> especially from Ruby, where all the passion and conversation is around BDD.
>
> Sean
> --
> View this message in context: http://forum.world.st/About-TDD-and-Pharo-tp2240686p2240877.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Simon Denier-3

That sounds great. Clearly on my to-try list

On 3 juin 2010, at 23:04, Hernan Wilkinson wrote:

Hi all,
 this is a cool thread! :-)

 What I did are changes to the tools to make more easy to run tests and implement what is needed. For example:

1) When you are in the browser writing a test method, you can press ctrl + t to save the method and run the test. If the test runs, it will show the green dot in the browser, if it does not, it popups the debugger directly on the error. So, this is a way to avoid pressing ctrl + s (save) then going to the method list, rigth click an select run test and if it fails select that you want to debug it.
I think this is really useful
2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo breakpoints dont show very well in the debuger (it highlights incorrect collaborations)
3) I removed the Notifier window, it directly opens the debugger
4) The debugger opens as a big window (so you dont have to resize it every time a test fails that is most of the time when doing tdd)
5) The debugger has an "Implement" button that does what German Lieva suggested
6) Removed all the questions the browser ask when saving a method that sends a message not implemented, etc. I left defined not declared class and variables.

I think there are more things that could be improved/implemented:
1) Provide a default implementation for methods that look like getter or setters (like German also suggested. VisualAge does that very nice)
2) Allow the "Implement" option to work also when the method has a "subclassResponsibility" Right now it only works with "DoesNotUnderstand"
3) Allow to define coding patterns easily and execute those coding patterns automatically when needed. For example, I have coding pattern form instance creation messages like this:
Attendee named: aName attending: aCollectionOfDates

   ^ self new initializeNamed: aName attending: aCollectionOfDates

It send the message new and the initializeXxx where Xxx is the same name of the instance creation message
We could provide default implementation for well know messages like #= or #hash (but this requires to generalize the implementation of #= and #hash using other objets...) 
4) Similar to the previous one but for classes. For example if I write:
InvalidNameException signalName: xxx
It could be inferred that we are creating an Exception, that the exception will have a class message that will signal the exception and  an instance creation message (#name:) to create instances, and an initialization message (#initializeName:) and an instance variable called name.
(Of course one could argue that if this can be automatize, the we can create an abstraction for that and then we would not need a class per exception... but that is another discussion :-) )
5) Change how the categorization of a method works. It should suggest a category based on the automatic categorization and it should not show so many options as it does right now (it is really annoying to see so many options)
6) Change the dialog for creating a class, it is too small 

I think that using TDD or BDD is another discussion... (for me there is no much different, that depends on what you understand with TDD...)
I don't know if I'd like the test to run automatically, never tried it, but it looks to me that it could be distractive...

Bye 
Hernan


2010/6/3 Mariano Martinez Peck <[hidden email]>
What Hernán did is here:   http://www.squeaksource.com/TDDFacilities.html

That was for Pharo 1.0.

For those that want to help in this subject I think the first step could be to load such package in a PharoCore1.1 and fix it in case it doesn't work.
Then, it can be integrated as part of PharoCore. Although it may be cool to have a preference to enable or disable all this changes (more TDD oriented), as we are not doing TDD all the time and sometimes we want the normal behavior.

Once we have that, we can start improving. For example, I would love also what Guille said: key bindings for the debugger. I would LOVE to have a Pharo less mouse oriented (I don't care who invented the mouse, I rather the keyboard).

So..open a bug ticket and start to play.

Cheers

Mariano
 
2010/6/3 Denis Kudriashov <[hidden email]>

Hello, No I dont. Who is it?

2010/6/3 Stéphane Ducasse <[hidden email]>

do you happen to know tim mckinnon?

Stef
On Jun 3, 2010, at 12:13 AM, Denis Kudriashov wrote:

> I use Mockery - my implementation SSpec idies. It is realy more powerfull, transparency and flexibility.
>
> With Mockery you dont need any special base classes for TestCases or mocks factory variables in code. You just use mocks where you want by Block creation scenarios:
>
> [:mock |
>   [sut doWith: mock] should lenient satisfy: [mock someMessage willReturn: #result]
> ] runScenario.
>
> State specs like "5 should be an instance of: Integer" can be easely added by pragmas.
>
> And Its work in Pharo 1.0.
>
> Of course, It's needs more good stuff. But now I dont have enough time.
> http://www.squeaksource.com/Mocketry.html
>
> 2010/6/3 Sean P. DeNigris <[hidden email]>
>
>
> Stéphane Ducasse wrote:
> >
> > Imagine that we would like to sell pharo (+ seaside) as THE agile platform
> > for doing TDD.
> > What would be the changes that we could do support it.
> >
>
> Coming from Ruby, it seemed like BDD was taking over the world, and was the
> next step in TDD evolution, but I found few mentions of it in the Squeak
> world.  For my own projects, I use SSpec (which I have been fixing as I go
> along).  I only use "tests" with SUnit assertions for community projects, as
> not to confuse or add additional dependencies.
>
> I think that core BDD support would be necessary to woo developers here,
> especially from Ruby, where all the passion and conversation is around BDD.
>
> Sean
> --
> View this message in context: http://forum.world.st/About-TDD-and-Pharo-tp2240686p2240877.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
 Simon




_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Mariano Abel Coca
On mine too...

Can't wait to try it.

Great work Hernan!

Cheers,

Mariano.


2010/6/3 Simon Denier <[hidden email]>

That sounds great. Clearly on my to-try list

On 3 juin 2010, at 23:04, Hernan Wilkinson wrote:

Hi all,
 this is a cool thread! :-)

 What I did are changes to the tools to make more easy to run tests and implement what is needed. For example:

1) When you are in the browser writing a test method, you can press ctrl + t to save the method and run the test. If the test runs, it will show the green dot in the browser, if it does not, it popups the debugger directly on the error. So, this is a way to avoid pressing ctrl + s (save) then going to the method list, rigth click an select run test and if it fails select that you want to debug it.
I think this is really useful
2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo breakpoints dont show very well in the debuger (it highlights incorrect collaborations)
3) I removed the Notifier window, it directly opens the debugger
4) The debugger opens as a big window (so you dont have to resize it every time a test fails that is most of the time when doing tdd)
5) The debugger has an "Implement" button that does what German Lieva suggested
6) Removed all the questions the browser ask when saving a method that sends a message not implemented, etc. I left defined not declared class and variables.

I think there are more things that could be improved/implemented:
1) Provide a default implementation for methods that look like getter or setters (like German also suggested. VisualAge does that very nice)
2) Allow the "Implement" option to work also when the method has a "subclassResponsibility" Right now it only works with "DoesNotUnderstand"
3) Allow to define coding patterns easily and execute those coding patterns automatically when needed. For example, I have coding pattern form instance creation messages like this:
Attendee named: aName attending: aCollectionOfDates

   ^ self new initializeNamed: aName attending: aCollectionOfDates

It send the message new and the initializeXxx where Xxx is the same name of the instance creation message
We could provide default implementation for well know messages like #= or #hash (but this requires to generalize the implementation of #= and #hash using other objets...) 
4) Similar to the previous one but for classes. For example if I write:
InvalidNameException signalName: xxx
It could be inferred that we are creating an Exception, that the exception will have a class message that will signal the exception and  an instance creation message (#name:) to create instances, and an initialization message (#initializeName:) and an instance variable called name.
(Of course one could argue that if this can be automatize, the we can create an abstraction for that and then we would not need a class per exception... but that is another discussion :-) )
5) Change how the categorization of a method works. It should suggest a category based on the automatic categorization and it should not show so many options as it does right now (it is really annoying to see so many options)
6) Change the dialog for creating a class, it is too small 

I think that using TDD or BDD is another discussion... (for me there is no much different, that depends on what you understand with TDD...)
I don't know if I'd like the test to run automatically, never tried it, but it looks to me that it could be distractive...

Bye 
Hernan


2010/6/3 Mariano Martinez Peck <[hidden email]>
What Hernán did is here:   http://www.squeaksource.com/TDDFacilities.html

That was for Pharo 1.0.

For those that want to help in this subject I think the first step could be to load such package in a PharoCore1.1 and fix it in case it doesn't work.
Then, it can be integrated as part of PharoCore. Although it may be cool to have a preference to enable or disable all this changes (more TDD oriented), as we are not doing TDD all the time and sometimes we want the normal behavior.

Once we have that, we can start improving. For example, I would love also what Guille said: key bindings for the debugger. I would LOVE to have a Pharo less mouse oriented (I don't care who invented the mouse, I rather the keyboard).

So..open a bug ticket and start to play.

Cheers

Mariano
 
2010/6/3 Denis Kudriashov <[hidden email]>

Hello, No I dont. Who is it?

2010/6/3 Stéphane Ducasse <[hidden email]>

do you happen to know tim mckinnon?

Stef
On Jun 3, 2010, at 12:13 AM, Denis Kudriashov wrote:

> I use Mockery - my implementation SSpec idies. It is realy more powerfull, transparency and flexibility.
>
> With Mockery you dont need any special base classes for TestCases or mocks factory variables in code. You just use mocks where you want by Block creation scenarios:
>
> [:mock |
>   [sut doWith: mock] should lenient satisfy: [mock someMessage willReturn: #result]
> ] runScenario.
>
> State specs like "5 should be an instance of: Integer" can be easely added by pragmas.
>
> And Its work in Pharo 1.0.
>
> Of course, It's needs more good stuff. But now I dont have enough time.
> http://www.squeaksource.com/Mocketry.html
>
> 2010/6/3 Sean P. DeNigris <[hidden email]>
>
>
> Stéphane Ducasse wrote:
> >
> > Imagine that we would like to sell pharo (+ seaside) as THE agile platform
> > for doing TDD.
> > What would be the changes that we could do support it.
> >
>
> Coming from Ruby, it seemed like BDD was taking over the world, and was the
> next step in TDD evolution, but I found few mentions of it in the Squeak
> world.  For my own projects, I use SSpec (which I have been fixing as I go
> along).  I only use "tests" with SUnit assertions for community projects, as
> not to confuse or add additional dependencies.
>
> I think that core BDD support would be necessary to woo developers here,
> especially from Ruby, where all the passion and conversation is around BDD.
>
> Sean
> --
> View this message in context: http://forum.world.st/About-TDD-and-Pharo-tp2240686p2240877.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
 Simon




_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Tudor Girba
The list is quite promising.

How exactly do I load it?

Cheers,
Doru


On 3 Jun 2010, at 23:34, Mariano Abel Coca wrote:

> On mine too...
>
> Can't wait to try it.
>
> Great work Hernan!
>
> Cheers,
>
> Mariano.
>
>
> 2010/6/3 Simon Denier <[hidden email]>
>
> That sounds great. Clearly on my to-try list
>
> On 3 juin 2010, at 23:04, Hernan Wilkinson wrote:
>
>> Hi all,
>>  this is a cool thread! :-)
>>
>>  What I did are changes to the tools to make more easy to run tests  
>> and implement what is needed. For example:
>>
>> 1) When you are in the browser writing a test method, you can press  
>> ctrl + t to save the method and run the test. If the test runs, it  
>> will show the green dot in the browser, if it does not, it popups  
>> the debugger directly on the error. So, this is a way to avoid  
>> pressing ctrl + s (save) then going to the method list, rigth click  
>> an select run test and if it fails select that you want to debug it.
>> I think this is really useful
>> 2) Same as ctrl + t but ctrl + r to directly debug the test. It  
>> saves the method, puts a breakpoint in it and debugs it.  
>> Unfortunaly, in Pharo breakpoints dont show very well in the  
>> debuger (it highlights incorrect collaborations)
>> 3) I removed the Notifier window, it directly opens the debugger
>> 4) The debugger opens as a big window (so you dont have to resize  
>> it every time a test fails that is most of the time when doing tdd)
>> 5) The debugger has an "Implement" button that does what German  
>> Lieva suggested
>> 6) Removed all the questions the browser ask when saving a method  
>> that sends a message not implemented, etc. I left defined not  
>> declared class and variables.
>>
>> I think there are more things that could be improved/implemented:
>> 1) Provide a default implementation for methods that look like  
>> getter or setters (like German also suggested. VisualAge does that  
>> very nice)
>> 2) Allow the "Implement" option to work also when the method has a  
>> "subclassResponsibility" Right now it only works with  
>> "DoesNotUnderstand"
>> 3) Allow to define coding patterns easily and execute those coding  
>> patterns automatically when needed. For example, I have coding  
>> pattern form instance creation messages like this:
>> Attendee named: aName attending: aCollectionOfDates
>>
>>    ^ self new initializeNamed: aName attending: aCollectionOfDates
>>
>> It send the message new and the initializeXxx where Xxx is the same  
>> name of the instance creation message
>> We could provide default implementation for well know messages like  
>> #= or #hash (but this requires to generalize the implementation of  
>> #= and #hash using other objets...)
>> 4) Similar to the previous one but for classes. For example if I  
>> write:
>> InvalidNameException signalName: xxx
>> It could be inferred that we are creating an Exception, that the  
>> exception will have a class message that will signal the exception  
>> and  an instance creation message (#name:) to create instances, and  
>> an initialization message (#initializeName:) and an instance  
>> variable called name.
>> (Of course one could argue that if this can be automatize, the we  
>> can create an abstraction for that and then we would not need a  
>> class per exception... but that is another discussion :-) )
>> 5) Change how the categorization of a method works. It should  
>> suggest a category based on the automatic categorization and it  
>> should not show so many options as it does right now (it is really  
>> annoying to see so many options)
>> 6) Change the dialog for creating a class, it is too small
>>
>> I think that using TDD or BDD is another discussion... (for me  
>> there is no much different, that depends on what you understand  
>> with TDD...)
>> I don't know if I'd like the test to run automatically, never tried  
>> it, but it looks to me that it could be distractive...
>>
>> Bye
>> Hernan
>>
>>
>> 2010/6/3 Mariano Martinez Peck <[hidden email]>
>> What Hernán did is here:   http://www.squeaksource.com/TDDFacilities.html
>>
>> That was for Pharo 1.0.
>>
>> For those that want to help in this subject I think the first step  
>> could be to load such package in a PharoCore1.1 and fix it in case  
>> it doesn't work.
>> Then, it can be integrated as part of PharoCore. Although it may be  
>> cool to have a preference to enable or disable all this changes  
>> (more TDD oriented), as we are not doing TDD all the time and  
>> sometimes we want the normal behavior.
>>
>> Once we have that, we can start improving. For example, I would  
>> love also what Guille said: key bindings for the debugger. I would  
>> LOVE to have a Pharo less mouse oriented (I don't care who invented  
>> the mouse, I rather the keyboard).
>>
>> So..open a bug ticket and start to play.
>>
>> Cheers
>>
>> Mariano
>>
>> 2010/6/3 Denis Kudriashov <[hidden email]>
>>
>> Hello, No I dont. Who is it?
>>
>> 2010/6/3 Stéphane Ducasse <[hidden email]>
>>
>> do you happen to know tim mckinnon?
>>
>> Stef
>> On Jun 3, 2010, at 12:13 AM, Denis Kudriashov wrote:
>>
>> > I use Mockery - my implementation SSpec idies. It is realy more  
>> powerfull, transparency and flexibility.
>> >
>> > With Mockery you dont need any special base classes for TestCases  
>> or mocks factory variables in code. You just use mocks where you  
>> want by Block creation scenarios:
>> >
>> > [:mock |
>> >   [sut doWith: mock] should lenient satisfy: [mock someMessage  
>> willReturn: #result]
>> > ] runScenario.
>> >
>> > State specs like "5 should be an instance of: Integer" can be  
>> easely added by pragmas.
>> >
>> > And Its work in Pharo 1.0.
>> >
>> > Of course, It's needs more good stuff. But now I dont have enough  
>> time.
>> > http://www.squeaksource.com/Mocketry.html
>> >
>> > 2010/6/3 Sean P. DeNigris <[hidden email]>
>> >
>> >
>> > Stéphane Ducasse wrote:
>> > >
>> > > Imagine that we would like to sell pharo (+ seaside) as THE  
>> agile platform
>> > > for doing TDD.
>> > > What would be the changes that we could do support it.
>> > >
>> >
>> > Coming from Ruby, it seemed like BDD was taking over the world,  
>> and was the
>> > next step in TDD evolution, but I found few mentions of it in the  
>> Squeak
>> > world.  For my own projects, I use SSpec (which I have been  
>> fixing as I go
>> > along).  I only use "tests" with SUnit assertions for community  
>> projects, as
>> > not to confuse or add additional dependencies.
>> >
>> > I think that core BDD support would be necessary to woo  
>> developers here,
>> > especially from Ruby, where all the passion and conversation is  
>> around BDD.
>> >
>> > Sean
>> > --
>> > View this message in context: http://forum.world.st/About-TDD-and-Pharo-tp2240686p2240877.html
>> > Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>> >
>> > _______________________________________________
>> > Pharo-project mailing list
>> > [hidden email]
>> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>> >
>> > _______________________________________________
>> > Pharo-project mailing list
>> > [hidden email]
>> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> --
>  Simon
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
www.tudorgirba.com

"We are all great at making mistakes."






_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Denis Kudriashov
In reply to this post by Denis Kudriashov
Tim Mckinnon is creator SMock for Dolphin. I see his work. And his work will be stimul for me to implement mock-famework in VW and squeak (that I used) with more user friendly and powerfull features.

2010/6/3 Denis Kudriashov <[hidden email]>
Hello, No I dont. Who is it?

2010/6/3 Stéphane Ducasse <[hidden email]>

do you happen to know tim mckinnon?

Stef
On Jun 3, 2010, at 12:13 AM, Denis Kudriashov wrote:

> I use Mockery - my implementation SSpec idies. It is realy more powerfull, transparency and flexibility.
>
> With Mockery you dont need any special base classes for TestCases or mocks factory variables in code. You just use mocks where you want by Block creation scenarios:
>
> [:mock |
>   [sut doWith: mock] should lenient satisfy: [mock someMessage willReturn: #result]
> ] runScenario.
>
> State specs like "5 should be an instance of: Integer" can be easely added by pragmas.
>
> And Its work in Pharo 1.0.
>
> Of course, It's needs more good stuff. But now I dont have enough time.
> http://www.squeaksource.com/Mocketry.html
>
> 2010/6/3 Sean P. DeNigris <[hidden email]>
>
>
> Stéphane Ducasse wrote:
> >
> > Imagine that we would like to sell pharo (+ seaside) as THE agile platform
> > for doing TDD.
> > What would be the changes that we could do support it.
> >
>
> Coming from Ruby, it seemed like BDD was taking over the world, and was the
> next step in TDD evolution, but I found few mentions of it in the Squeak
> world.  For my own projects, I use SSpec (which I have been fixing as I go
> along).  I only use "tests" with SUnit assertions for community projects, as
> not to confuse or add additional dependencies.
>
> I think that core BDD support would be necessary to woo developers here,
> especially from Ruby, where all the passion and conversation is around BDD.
>
> Sean
> --
> View this message in context: http://forum.world.st/About-TDD-and-Pharo-tp2240686p2240877.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project



_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

hernan.wilkinson
In reply to this post by hernan.wilkinson
more thoughts about this...
I think that the Smalltalk debugger is the best tool we have, the tool that allow us to be really "dynamic" (or agile, depending on the buzz you like the most :-)) and that we should take more advantage of when doing tdd (and not only tdd). People used to use other languages can not believe things we do in the debugger like implementing methods while running the tests, creating classes, adding inst vars, retrying contexts, etc.
Basically what I'm saying is that when you are doing tdd, the real programming happens on the debugger, so taking advantage of the execution context is something we can improve on the debugger... make the debugger not only a debugging tool but a programming tool. For example, ocompletion could take advantage of that, is you want to send a message to an object referenced by a variable, ocompletion could show only the messages that object understands, of if you write "aCollection size " then it could suggest messages that an integer understand (I'm assuming aCollection is a collection :-) ) This last idea could generate "second effects", so having a "transactional image" could help to avoid that...
We should think about other things that we could improve on the debugger having real objects and not just text... other crazy/not so sure ideas:
1) when writing a printOn: message, I always see how the contents of the stream ends up being... we could see that directly moving the mouse over the stream variable for example, like a quick preview
2) when sending a select: or detect: or reject: or do: etc message, it could take one element of the collection to infer the messages we can send to the block parameter
3) when an exception is signal, we could select a context and say, "Help me implement the handler" and therefore the debugger adds the [ ] around the selected code and puts the "on: theRealExceptionClass do: [ :....]" (where theRealExceptonClass is the class of the exception not handled and it knows it because it was just signaled"
 
I think the pattern to follow and discover other things we could improve are: "What do you have to think, to try on your mind, when you are programming in the debugger?"... then see if those things you "try" in your mind can be done by the debugger... I think this could lead us to un-think tools yet

On Thu, Jun 3, 2010 at 5:04 PM, Hernan Wilkinson <[hidden email]> wrote:
Hi all,
 this is a cool thread! :-)

 What I did are changes to the tools to make more easy to run tests and implement what is needed. For example:

1) When you are in the browser writing a test method, you can press ctrl + t to save the method and run the test. If the test runs, it will show the green dot in the browser, if it does not, it popups the debugger directly on the error. So, this is a way to avoid pressing ctrl + s (save) then going to the method list, rigth click an select run test and if it fails select that you want to debug it.
I think this is really useful
2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo breakpoints dont show very well in the debuger (it highlights incorrect collaborations)
3) I removed the Notifier window, it directly opens the debugger
4) The debugger opens as a big window (so you dont have to resize it every time a test fails that is most of the time when doing tdd)
5) The debugger has an "Implement" button that does what German Lieva suggested
6) Removed all the questions the browser ask when saving a method that sends a message not implemented, etc. I left defined not declared class and variables.

I think there are more things that could be improved/implemented:
1) Provide a default implementation for methods that look like getter or setters (like German also suggested. VisualAge does that very nice)
2) Allow the "Implement" option to work also when the method has a "subclassResponsibility" Right now it only works with "DoesNotUnderstand"
3) Allow to define coding patterns easily and execute those coding patterns automatically when needed. For example, I have coding pattern form instance creation messages like this:
Attendee named: aName attending: aCollectionOfDates

   ^ self new initializeNamed: aName attending: aCollectionOfDates

It send the message new and the initializeXxx where Xxx is the same name of the instance creation message
We could provide default implementation for well know messages like #= or #hash (but this requires to generalize the implementation of #= and #hash using other objets...) 
4) Similar to the previous one but for classes. For example if I write:
InvalidNameException signalName: xxx
It could be inferred that we are creating an Exception, that the exception will have a class message that will signal the exception and  an instance creation message (#name:) to create instances, and an initialization message (#initializeName:) and an instance variable called name.
(Of course one could argue that if this can be automatize, the we can create an abstraction for that and then we would not need a class per exception... but that is another discussion :-) )
5) Change how the categorization of a method works. It should suggest a category based on the automatic categorization and it should not show so many options as it does right now (it is really annoying to see so many options)
6) Change the dialog for creating a class, it is too small 

I think that using TDD or BDD is another discussion... (for me there is no much different, that depends on what you understand with TDD...)
I don't know if I'd like the test to run automatically, never tried it, but it looks to me that it could be distractive...

Bye 
Hernan


2010/6/3 Mariano Martinez Peck <[hidden email]>

What Hernán did is here:   http://www.squeaksource.com/TDDFacilities.html

That was for Pharo 1.0.

For those that want to help in this subject I think the first step could be to load such package in a PharoCore1.1 and fix it in case it doesn't work.
Then, it can be integrated as part of PharoCore. Although it may be cool to have a preference to enable or disable all this changes (more TDD oriented), as we are not doing TDD all the time and sometimes we want the normal behavior.

Once we have that, we can start improving. For example, I would love also what Guille said: key bindings for the debugger. I would LOVE to have a Pharo less mouse oriented (I don't care who invented the mouse, I rather the keyboard).

So..open a bug ticket and start to play.

Cheers

Mariano
 
2010/6/3 Denis Kudriashov <[hidden email]>

Hello, No I dont. Who is it?

2010/6/3 Stéphane Ducasse <[hidden email]>

do you happen to know tim mckinnon?

Stef
On Jun 3, 2010, at 12:13 AM, Denis Kudriashov wrote:

> I use Mockery - my implementation SSpec idies. It is realy more powerfull, transparency and flexibility.
>
> With Mockery you dont need any special base classes for TestCases or mocks factory variables in code. You just use mocks where you want by Block creation scenarios:
>
> [:mock |
>   [sut doWith: mock] should lenient satisfy: [mock someMessage willReturn: #result]
> ] runScenario.
>
> State specs like "5 should be an instance of: Integer" can be easely added by pragmas.
>
> And Its work in Pharo 1.0.
>
> Of course, It's needs more good stuff. But now I dont have enough time.
> http://www.squeaksource.com/Mocketry.html
>
> 2010/6/3 Sean P. DeNigris <[hidden email]>
>
>
> Stéphane Ducasse wrote:
> >
> > Imagine that we would like to sell pharo (+ seaside) as THE agile platform
> > for doing TDD.
> > What would be the changes that we could do support it.
> >
>
> Coming from Ruby, it seemed like BDD was taking over the world, and was the
> next step in TDD evolution, but I found few mentions of it in the Squeak
> world.  For my own projects, I use SSpec (which I have been fixing as I go
> along).  I only use "tests" with SUnit assertions for community projects, as
> not to confuse or add additional dependencies.
>
> I think that core BDD support would be necessary to woo developers here,
> especially from Ruby, where all the passion and conversation is around BDD.
>
> Sean
> --
> View this message in context: http://forum.world.st/About-TDD-and-Pharo-tp2240686p2240877.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project



_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

hernan.wilkinson
In reply to this post by Tudor Girba
Hi Doru!
 if you are asking about the package I wrote, just install the latest version of TDDFacilities on a pharo 1.0 image and then evaluate:
OBTextMorphEditorWithShout initialize
 
Bye!,
Hernan.

On Thu, Jun 3, 2010 at 5:39 PM, Tudor Girba <[hidden email]> wrote:
The list is quite promising.

How exactly do I load it?

Cheers,
Doru



On 3 Jun 2010, at 23:34, Mariano Abel Coca wrote:

On mine too...

Can't wait to try it.

Great work Hernan!

Cheers,

Mariano.


2010/6/3 Simon Denier <[hidden email]>

That sounds great. Clearly on my to-try list

On 3 juin 2010, at 23:04, Hernan Wilkinson wrote:

Hi all,
 this is a cool thread! :-)

 What I did are changes to the tools to make more easy to run tests and implement what is needed. For example:

1) When you are in the browser writing a test method, you can press ctrl + t to save the method and run the test. If the test runs, it will show the green dot in the browser, if it does not, it popups the debugger directly on the error. So, this is a way to avoid pressing ctrl + s (save) then going to the method list, rigth click an select run test and if it fails select that you want to debug it.
I think this is really useful
2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo breakpoints dont show very well in the debuger (it highlights incorrect collaborations)
3) I removed the Notifier window, it directly opens the debugger
4) The debugger opens as a big window (so you dont have to resize it every time a test fails that is most of the time when doing tdd)
5) The debugger has an "Implement" button that does what German Lieva suggested
6) Removed all the questions the browser ask when saving a method that sends a message not implemented, etc. I left defined not declared class and variables.

I think there are more things that could be improved/implemented:
1) Provide a default implementation for methods that look like getter or setters (like German also suggested. VisualAge does that very nice)
2) Allow the "Implement" option to work also when the method has a "subclassResponsibility" Right now it only works with "DoesNotUnderstand"
3) Allow to define coding patterns easily and execute those coding patterns automatically when needed. For example, I have coding pattern form instance creation messages like this:
Attendee named: aName attending: aCollectionOfDates

  ^ self new initializeNamed: aName attending: aCollectionOfDates

It send the message new and the initializeXxx where Xxx is the same name of the instance creation message
We could provide default implementation for well know messages like #= or #hash (but this requires to generalize the implementation of #= and #hash using other objets...)
4) Similar to the previous one but for classes. For example if I write:
InvalidNameException signalName: xxx
It could be inferred that we are creating an Exception, that the exception will have a class message that will signal the exception and  an instance creation message (#name:) to create instances, and an initialization message (#initializeName:) and an instance variable called name.
(Of course one could argue that if this can be automatize, the we can create an abstraction for that and then we would not need a class per exception... but that is another discussion :-) )
5) Change how the categorization of a method works. It should suggest a category based on the automatic categorization and it should not show so many options as it does right now (it is really annoying to see so many options)
6) Change the dialog for creating a class, it is too small

I think that using TDD or BDD is another discussion... (for me there is no much different, that depends on what you understand with TDD...)
I don't know if I'd like the test to run automatically, never tried it, but it looks to me that it could be distractive...

Bye
Hernan


2010/6/3 Mariano Martinez Peck <[hidden email]>
What Hernán did is here:   http://www.squeaksource.com/TDDFacilities.html

That was for Pharo 1.0.

For those that want to help in this subject I think the first step could be to load such package in a PharoCore1.1 and fix it in case it doesn't work.
Then, it can be integrated as part of PharoCore. Although it may be cool to have a preference to enable or disable all this changes (more TDD oriented), as we are not doing TDD all the time and sometimes we want the normal behavior.

Once we have that, we can start improving. For example, I would love also what Guille said: key bindings for the debugger. I would LOVE to have a Pharo less mouse oriented (I don't care who invented the mouse, I rather the keyboard).

So..open a bug ticket and start to play.

Cheers

Mariano

2010/6/3 Denis Kudriashov <[hidden email]>

Hello, No I dont. Who is it?

2010/6/3 Stéphane Ducasse <[hidden email]>

do you happen to know tim mckinnon?

Stef
On Jun 3, 2010, at 12:13 AM, Denis Kudriashov wrote:

> I use Mockery - my implementation SSpec idies. It is realy more powerfull, transparency and flexibility.
>
> With Mockery you dont need any special base classes for TestCases or mocks factory variables in code. You just use mocks where you want by Block creation scenarios:
>
> [:mock |
>   [sut doWith: mock] should lenient satisfy: [mock someMessage willReturn: #result]
> ] runScenario.
>
> State specs like "5 should be an instance of: Integer" can be easely added by pragmas.
>
> And Its work in Pharo 1.0.
>
> Of course, It's needs more good stuff. But now I dont have enough time.
> http://www.squeaksource.com/Mocketry.html
>
> 2010/6/3 Sean P. DeNigris <[hidden email]>
>
>
> Stéphane Ducasse wrote:
> >
> > Imagine that we would like to sell pharo (+ seaside) as THE agile platform
> > for doing TDD.
> > What would be the changes that we could do support it.
> >
>
> Coming from Ruby, it seemed like BDD was taking over the world, and was the
> next step in TDD evolution, but I found few mentions of it in the Squeak
> world.  For my own projects, I use SSpec (which I have been fixing as I go
> along).  I only use "tests" with SUnit assertions for community projects, as
> not to confuse or add additional dependencies.
>
> I think that core BDD support would be necessary to woo developers here,
> especially from Ruby, where all the passion and conversation is around BDD.
>
> Sean
> --
> View this message in context: http://forum.world.st/About-TDD-and-Pharo-tp2240686p2240877.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
 Simon




_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
www.tudorgirba.com

"We are all great at making mistakes."







_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

hernan.wilkinson
In reply to this post by Noury Bouraqadi-2
We run the lint tests (and other we wrote like "are the visitor patterns implemented correctly?", "is the code you wrote following the design and coding conventions?" etc. before sending the package to integrate of making a new version of it... 
When doing tdd, having all test green does not mean you are done with the development and I think those type of test have to be run when development is done...

On Thu, Jun 3, 2010 at 3:41 PM, Noury Bouraqadi <[hidden email]> wrote:
I'd like to add to my whishlist : an automated execution of lint when all tests are green.

Noury
On 3 juin 2010, at 21:07, Noury Bouraqadi wrote:

>
> On 3 juin 2010, at 07:45, Stéphane Ducasse wrote:
>
>>
>> On Jun 2, 2010, at 11:22 PM, Germán Leiva wrote:
>>
>>> I'm thinking out load here ...
>>>
>>> In the debugger when a DNU is raised, for speeding up the programming in "TDD mode":
>>>     • The create button must add the method in the class of the receiver, the possibility to choose a superclass of the receiver must be optional (I don't like the recurrent asking...) in other button for example or having different shortcuts from the keyboard
>> is it not already the case?
>>
> Only when the exception window shows up. Once you click on the debug button, you can't do it anymore.
>
>>>
>>>     • In the creation of a new class through "define new class" it will be helpful to remember the last class category used
>>> Some ToDo list supported from the environment and some facility for the creation of test.
>
> I'd rather go for a bit more sophisticated system based on Scrum task board coupled with Monticello.
> Tasks descriptions are organized in three collections Done, ToDo and inProgress.
> Once we do a project snapshot, we got these descriptions referenced in the snapshot. So, when browsing the history of snapshot, one can more easily figure out what each version is about.
>
> More features I'd like to have is in the refactoring browser :
> -When renaming an instance variable, rename its accessors two
> -Suggest to delete accessors when deleting an IV
> -Be able to generate accessors for multiple IVs at the same time (like in eclipse!)
> -Have a preference that automatically generate accessors on addition of IVs / class definition
>
> Noury


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Lukas Renggli
In reply to this post by hernan.wilkinson
OBSUnitIntegration is already providing some of those:

> 1) When you are in the browser writing a test method, you can press ctrl + t
> to save the method and run the test. If the test runs, it will show the
> green dot in the browser, if it does not, it popups the debugger directly on
> the error. So, this is a way to avoid pressing ctrl + s (save) then going to
> the method list, rigth click an select run test and if it fails select that
> you want to debug it.

Ctrl+T does not save, but it runs the tests and shows the debugger. I
don't think that I like the two things to be combined :-)

> 2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the
> method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo
> breakpoints dont show very well in the debuger (it highlights incorrect
> collaborations)

Ctrl+D opens a full debugger on the first line of the selected test,
no matter if the test fails or not. It doesn't use breakpoints. And I
use it all the time :-)

So maybe we could combine some of that code?

Lukas


--
Lukas Renggli
www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Jorge Ressia
I've been using TDDFacilities in Pharo since it was first released. It
is precisely what I needed to achieve real TDD while developing my
tools.
New features in the New Compiler and TextLint (from scratch) were
developed using this tool.

Doru, if you want I can give you a short demo of it.

I think that what Hernan is proposing is very important. The debugger
is the tool that TDD developers use the most, we should concentrate on
it first and then try to find out other potential improvements in
other tools.

I think we should invest some time into this.

Cheers,

Jorge

On Fri, Jun 4, 2010 at 7:36 AM, Lukas Renggli <[hidden email]> wrote:

> OBSUnitIntegration is already providing some of those:
>
>> 1) When you are in the browser writing a test method, you can press ctrl + t
>> to save the method and run the test. If the test runs, it will show the
>> green dot in the browser, if it does not, it popups the debugger directly on
>> the error. So, this is a way to avoid pressing ctrl + s (save) then going to
>> the method list, rigth click an select run test and if it fails select that
>> you want to debug it.
>
> Ctrl+T does not save, but it runs the tests and shows the debugger. I
> don't think that I like the two things to be combined :-)
>
>> 2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the
>> method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo
>> breakpoints dont show very well in the debuger (it highlights incorrect
>> collaborations)
>
> Ctrl+D opens a full debugger on the first line of the selected test,
> no matter if the test fails or not. It doesn't use breakpoints. And I
> use it all the time :-)
>
> So maybe we could combine some of that code?
>
> Lukas
>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Mariano Martinez Peck
In reply to this post by Lukas Renggli


On Fri, Jun 4, 2010 at 7:36 AM, Lukas Renggli <[hidden email]> wrote:
OBSUnitIntegration is already providing some of those:

> 1) When you are in the browser writing a test method, you can press ctrl + t
> to save the method and run the test. If the test runs, it will show the
> green dot in the browser, if it does not, it popups the debugger directly on
> the error. So, this is a way to avoid pressing ctrl + s (save) then going to
> the method list, rigth click an select run test and if it fails select that
> you want to debug it.

Ctrl+T does not save, but it runs the tests and shows the debugger. I
don't think that I like the two things to be combined :-)


That's what I don't like, ctrl + t runs all the tests of the class, not only the method were you are.
I would love ctrl + t to run only the test where I am and if I want to run all the test of the class, then I select the class and then ctrl + t.

This was discussed with Adrian Kuhn and he integrated this change in his package. I don't know where is it neither if it was integrated or not.

Cheers

Mariano

 
> 2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the
> method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo
> breakpoints dont show very well in the debuger (it highlights incorrect
> collaborations)

Ctrl+D opens a full debugger on the first line of the selected test,
no matter if the test fails or not. It doesn't use breakpoints. And I
use it all the time :-)

So maybe we could combine some of that code?

Lukas


--
Lukas Renggli
www.lukas-renggli.ch

_______________________________________________


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Michael Roberts-2
In reply to this post by Jorge Ressia
With a few sprints coming and such enthusiasm for our tools this is an  
opportune thread to remind folks the debugger itself needs some  
serious work on it. I would suggest doing this first before adding  
features to it. Any volunteers?

1) pressing send does not always change the highlighted context. You  
often press send twice to achieve what you want and then sometimes  
over step. I have debugged into this and in one example it does  
simulate the bytecode but the debugger does not change. I am trying to  
write a test for it. See below.

2) highlighting is badly broken.

To this end I am trying to write some tests that demonstrate the  
problems. I am finding it quite hard to write a test harness since  
debugging it is sometimes a challenge and I get caught out by the  
simulation guard. Any help/suggestions on the best way to invoke the  
debugger in this context would be appreciated. It requires quite a  
deep understanding of the execution machinery...

At the moment I create a new process that is suspended and then open  
the debugger in it using the no suspend api but I am not sure this is  
the best approach. There are subtleties in the opening protocol which  
I don't fully understand surrounding what happens to the active  
process. There is an existing test case that uses semaphores but I  
have found that approach problematic in what I am trying to do.

My basic goal is this and could easily be expressed in a table with  
columns
1) method source
The string of an exactly formatted method
2)
Debugger commands
Send,send,send,send,
3)highlight interval before
1:14,5:8,12:34 etc


The debugger would then be created on the fly invoked on the method  
and then the sequence of commands replayed and positions checked.

Once basic highlighting could be checked I would enhance it to check  
step, step into block and asserting the top context and other things.


Cheers
Mike

On 4 Jun 2010, at 07:38, Jorge Ressia <[hidden email]> wrote:

> I've been using TDDFacilities in Pharo since it was first released. It
> is precisely what I needed to achieve real TDD while developing my
> tools.
> New features in the New Compiler and TextLint (from scratch) were
> developed using this tool.
>
> Doru, if you want I can give you a short demo of it.
>
> I think that what Hernan is proposing is very important. The debugger
> is the tool that TDD developers use the most, we should concentrate on
> it first and then try to find out other potential improvements in
> other tools.
>
> I think we should invest some time into this.
>
> Cheers,
>
> Jorge
>
> On Fri, Jun 4, 2010 at 7:36 AM, Lukas Renggli <[hidden email]>  
> wrote:
>> OBSUnitIntegration is already providing some of those:
>>
>>> 1) When you are in the browser writing a test method, you can  
>>> press ctrl + t
>>> to save the method and run the test. If the test runs, it will  
>>> show the
>>> green dot in the browser, if it does not, it popups the debugger  
>>> directly on
>>> the error. So, this is a way to avoid pressing ctrl + s (save)  
>>> then going to
>>> the method list, rigth click an select run test and if it fails  
>>> select that
>>> you want to debug it.
>>
>> Ctrl+T does not save, but it runs the tests and shows the debugger. I
>> don't think that I like the two things to be combined :-)
>>
>>> 2) Same as ctrl + t but ctrl + r to directly debug the test. It  
>>> saves the
>>> method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo
>>> breakpoints dont show very well in the debuger (it highlights  
>>> incorrect
>>> collaborations)
>>
>> Ctrl+D opens a full debugger on the first line of the selected test,
>> no matter if the test fails or not. It doesn't use breakpoints. And I
>> use it all the time :-)
>>
>> So maybe we could combine some of that code?
>>
>> Lukas
>>
>>
>> --
>> Lukas Renggli
>> www.lukas-renggli.ch
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Lukas Renggli
In reply to this post by Mariano Martinez Peck
>> > 1) When you are in the browser writing a test method, you can press ctrl
>> > + t
>> > to save the method and run the test. If the test runs, it will show the
>> > green dot in the browser, if it does not, it popups the debugger
>> > directly on
>> > the error. So, this is a way to avoid pressing ctrl + s (save) then
>> > going to
>> > the method list, rigth click an select run test and if it fails select
>> > that
>> > you want to debug it.
>>
>> Ctrl+T does not save, but it runs the tests and shows the debugger. I
>> don't think that I like the two things to be combined :-)
>
> That's what I don't like, ctrl + t runs all the tests of the class, not only
> the method were you are.

No, this is not the case.

> This was discussed with Adrian Kuhn and he integrated this change in his
> package. I don't know where is it neither if it was integrated or not.

Yes, I integrated that a year ago or so :-)

Lukas

--
Lukas Renggli
www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

Mariano Martinez Peck


On Fri, Jun 4, 2010 at 10:40 AM, Lukas Renggli <[hidden email]> wrote:
>> > 1) When you are in the browser writing a test method, you can press ctrl
>> > + t
>> > to save the method and run the test. If the test runs, it will show the
>> > green dot in the browser, if it does not, it popups the debugger
>> > directly on
>> > the error. So, this is a way to avoid pressing ctrl + s (save) then
>> > going to
>> > the method list, rigth click an select run test and if it fails select
>> > that
>> > you want to debug it.
>>
>> Ctrl+T does not save, but it runs the tests and shows the debugger. I
>> don't think that I like the two things to be combined :-)
>
> That's what I don't like, ctrl + t runs all the tests of the class, not only
> the method were you are.

No, this is not the case.

Ups...spoke faster than speaking. It's true, Pharo 1.1 with the latests OB it works as expected.
Can we just change the label "run tests" to "run test"  ?

Thanks lukas

mariano

 

> This was discussed with Adrian Kuhn and he integrated this change in his
> package. I don't know where is it neither if it was integrated or not.

Yes, I integrated that a year ago or so :-)

Lukas

--
Lukas Renggli
www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: About TDD and Pharo

hernan.wilkinson
In reply to this post by Lukas Renggli
cool! I did not know about it... 
I have some questions... if you are writting a test in the browser and want to run it (just test), if you press ctr+t, does it run that test or all the tests? and also, if it does not save the method, how does it run the test you just wrote ?

I did the ctrl+t do the save before running because I found myself saving then running, saving then running, etc, all the time... and if you want to run the test you have to save it before... why do you think you would not like the two things combined? do you see something that could bother or be wrong about it?



On Fri, Jun 4, 2010 at 1:36 AM, Lukas Renggli <[hidden email]> wrote:
OBSUnitIntegration is already providing some of those:

> 1) When you are in the browser writing a test method, you can press ctrl + t
> to save the method and run the test. If the test runs, it will show the
> green dot in the browser, if it does not, it popups the debugger directly on
> the error. So, this is a way to avoid pressing ctrl + s (save) then going to
> the method list, rigth click an select run test and if it fails select that
> you want to debug it.

Ctrl+T does not save, but it runs the tests and shows the debugger. I
don't think that I like the two things to be combined :-)

> 2) Same as ctrl + t but ctrl + r to directly debug the test. It saves the
> method, puts a breakpoint in it and debugs it. Unfortunaly, in Pharo
> breakpoints dont show very well in the debuger (it highlights incorrect
> collaborations)

Ctrl+D opens a full debugger on the first line of the selected test,
no matter if the test fails or not. It doesn't use breakpoints. And I
use it all the time :-)

So maybe we could combine some of that code?

Lukas


--
Lukas Renggli
www.lukas-renggli.ch

_______________________________________________


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
123