Why is SystemChangeFileTest >> #testClassAdded failing (was: Re: [squeak-dev] Re: 4.3 Release Schedule: Feature freeze today)

Levente Uzonyi leves at elte.hu
Thu Dec 8 11:20:59 UTC 2011


On Mon, 5 Dec 2011, Alexander Lazarević wrote:

> 2011/11/19 Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>:
>>> SystemChangeFileTest>>#testClassAdded
>>
>> We should correct this one.

This is a tricky issue. The test is failing, because SmalltalkImage >> 
#event: doesn't log class additions, the code is commented out. The reason 
why it's commented out is (probably) because otherwise the class creation 
is logged twice. The reason for the double logging is that Browser >> 
#defineClass:notifying: forces logging while it evaluates the class 
definition, so a DoIt is also written to the changes file. Changing the 
evaluation code to

 	class := oldClass subclassDefinerClass
 		evaluate: defString
 		notifying: aController
 		logged: false.

solves this issue. But what will happen when you create a class in a 
workspace? It will be logged twice. Once by the class addition and once by 
the DoIt.

I think double logging is not a real issue. It may slow things down a 
bit when you're recovering from the changes, and make your changes file 
a bit larger, but it's better to log it twice, than none, which is the 
current case, when you create a class from code.

So, I suggest uncommenting the logging of class additions in 
SmalltalkImage >> #event:, then turning off logging in Browser >> 
#defineClass:notifying:. Any objections?


Levente

>
> I still have some bits that I hopefully find time tonight to commit. When
> was that codefreeze exactly?
>
>> Note that I don't much like the usage of file 'temp.changes', i
>> sometimes happen to have such files in use...
>
> True! That's already changed.
>
> Alex
>


More information about the Squeak-dev mailing list