[Seaside] Problems with WANoDuplicateUuidsTest and Magritte image

Lukas Renggli renggli at gmail.com
Mon Apr 16 07:05:26 UTC 2012


I believe the following replacement would test the same with much less
code and without falling into the infinite loop trap:

testNoDuplicateUuids
	| workingCopies versionAncestries uuidsToVersion |
	workingCopies := WADevelopment allPackages
		collect: [ :each | WADevelopment workingCopyFor: each ].
	versionAncestries := workingCopies
		gather: [ :each | each ancestry breadthFirstAncestors ].
	uuidsToVersion := Dictionary new: versionAncestries size.
	versionAncestries do: [ :version |
		(uuidsToVersion includesKey: version id name)
			ifTrue: [ self signalFailure: version name , ' and ' ,
(uuidsToVersion at: version id name) name , ' have duplicated UUIDs'
].
		uuidsToVersion at: version id name put: version ]

Lukas

On 16 April 2012 08:57, Philippe Marschall <philippe.marschall at gmail.com> wrote:
> On Mon, Apr 16, 2012 at 8:48 AM, Lukas Renggli <renggli at gmail.com> wrote:
>> Good catch!
>>
>> Normally this test is run directly after Seaside is loaded [1], where
>> it passes. It seems to loop on 'Magritte-Seaside' though. Looks like
>> the ancestry there is somehow broken :-(
>>
>> +philippe.marschall
>>
>> I wonder why this test duplicates the (complicated) logic to traverse
>> package ancestries instead of using #topologicalAncestors or
>> #withBreadthFirstAncestry? These two methods would work, even on the
>> broken 'Magritte-Seaside'.
>
> I'll have a look.
>
> Cheers
> Philippe



-- 
Lukas Renggli
www.lukas-renggli.ch


More information about the seaside mailing list