[Pharo-project] RPackage problem with obsolete classes
This test illustrate the problem: testMethodPackageFromObsoleteClass | pack method | pack := self createNewPackageNamed: 'P1'. foo := self createNewClassNamed: #FooForTest inPackage: pack. foo compileSilently: 'bar ^42'. method := foo>>#bar. foo removeFromSystem. self assert: (method packageFromOrganizer: pack organizer)equals: foo package. This seems to happen in non silent tests that - create a class/trait for test - sends an announcement with a compiled method instance (like, method recategorized) - remove the class/trait because they are for test only :) - then, since the announcements are handled asychronously, a method from an obsolete category reaches somewhere, and RPackage explodes. WIll open an issue. Guille
On Sat, May 26, 2012 at 3:02 PM, Guillermo Polito <guillermopolito@gmail.com
wrote:
This test illustrate the problem:
testMethodPackageFromObsoleteClass | pack method | pack := self createNewPackageNamed: 'P1'. foo := self createNewClassNamed: #FooForTest inPackage: pack. foo compileSilently: 'bar ^42'. method := foo>>#bar. foo removeFromSystem. self assert: (method packageFromOrganizer: pack organizer)equals: foo package.
This seems to happen in non silent tests that
- create a class/trait for test - sends an announcement with a compiled method instance (like, method recategorized) - remove the class/trait because they are for test only :) - then, since the announcements are handled asychronously, a method from an obsolete category reaches somewhere, and RPackage explodes.
This is *exactlly* the problem I faced when running Fuel tests in Pharo 2.0. I could have time to fix it, nor anyone else. Therefore, what I did is to realy fix Fuel to have ALL tests completly silent. And of course that fixed the problem. Nice that at least you could write a test :) -- Mariano http://marianopeck.wordpress.com
Hi mariano This afternoon we worked on improving the tests + the integration but this is more complex than it looks. Now I will continue to push RPackage. Stef On May 26, 2012, at 8:01 PM, Mariano Martinez Peck wrote:
On Sat, May 26, 2012 at 3:02 PM, Guillermo Polito <guillermopolito@gmail.com> wrote: This test illustrate the problem:
testMethodPackageFromObsoleteClass | pack method | pack := self createNewPackageNamed: 'P1'. foo := self createNewClassNamed: #FooForTest inPackage: pack. foo compileSilently: 'bar ^42'. method := foo>>#bar. foo removeFromSystem. self assert: (method packageFromOrganizer: pack organizer)equals: foo package.
This seems to happen in non silent tests that
- create a class/trait for test - sends an announcement with a compiled method instance (like, method recategorized) - remove the class/trait because they are for test only :) - then, since the announcements are handled asychronously, a method from an obsolete category reaches somewhere, and RPackage explodes.
This is *exactlly* the problem I faced when running Fuel tests in Pharo 2.0. I could have time to fix it, nor anyone else. Therefore, what I did is to realy fix Fuel to have ALL tests completly silent. And of course that fixed the problem. Nice that at least you could write a test :)
-- Mariano http://marianopeck.wordpress.com
participants (3)
-
Guillermo Polito -
Mariano Martinez Peck -
Stéphane Ducasse