[squeak-dev] The Inbox: KernelTests-ul.400.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Apr 14 10:21:17 UTC 2021


Levente Uzonyi uploaded a new version of KernelTests to project The Inbox:
http://source.squeak.org/inbox/KernelTests-ul.400.mcz

==================== Summary ====================

Name: KernelTests-ul.400
Author: ul
Time: 14 April 2021, 12:14:51.757056 pm
UUID: 6234d088-bf14-4d00-8734-dde043b756ba
Ancestors: KernelTests-nice.399

WriteBarrierTest changes:
- removed symbol mutator methods
	- both #testMutateByteSymbolUsingPrivateAtPut and #testMutateWideSymbolUsingPrivateAtPut reference a non-existent #privateAt:put: method, and make the accessed symbol permanently writeable
	- with the removal of #pvtAt:put: from ByteSymbol and WideSymbol, the tests seem to be unnecessary (see Collections-ul.939)
- fix copy-paste error in #testMutateObjectInstVarUsingBasicAtPut: test #basicAt:put: instead of #at:put:
- avoid having MirrorPrimitives in Undeclared by removing direct references to it in WriteBarrierTest. Perhaps MirrorPrimitives should be moved to the Trunk from VMMaker


- use temporaries in CompiledMethodComparisonTest >> #testHash to improve legibility

=============== Diff against KernelTests-nice.399 ===============

Item was changed:
  ----- Method: CompiledMethodComparisonTest>>testHash (in category 'tests') -----
  testHash
  	<timeout: 120>
  	
  	| ai |
  	ai := CompiledMethod allInstances.
  	"We assume here that if two CompiledMethods are equal then they have the same size and header."
  	(ai groupBy: [ :method | { method size. method header } ]) values
  		replace: [ :each | each asArray ];
  		do: [ :methods |
  			1 to: methods size do: [ :i |
+ 				| firstMethod |
+ 				firstMethod := methods at: i.
  				i to: methods size do: [ :j |
+ 					| secondMethod |
+ 					secondMethod := methods at: j.
+ 					firstMethod = secondMethod ifTrue: [
+ 						self assert: firstMethod hash equals: secondMethod hash ] ] ] ]
- 					(methods at: i) = (methods at: j) ifTrue: [
- 						self assert: (methods at: i) hash equals: (methods at: j) hash ] ] ] ]
  		displayingProgress: 'Testing hashes'.
  	self assert: (ai collect: [ :cm | cm hash ] as: Set) size * 2 >= ai asSet size!

Item was changed:
  ----- Method: WriteBarrierTest>>expectedFailures (in category 'expected failures') -----
  expectedFailures
  	Smalltalk supportsReadOnlyObjects ifFalse:
  		[^self class testSelectors].
  	^#( testMutateByteArrayUsingDoubleAtPut testMutateByteArrayUsingFloatAtPut ),
+ 	  (self mirrorPrimitives
- 	  ((Smalltalk classNamed: #MirrorPrimitives)
  		ifNil: [#(testBasicProxyReadOnly testBasicProxyWritable testSetIsReadOnlySuccessProxy)]
  		ifNotNil: [#()])!

Item was added:
+ ----- Method: WriteBarrierTest>>mirrorPrimitives (in category 'tests - helper') -----
+ mirrorPrimitives
+ 
+ 	^Smalltalk classNamed: #MirrorPrimitives!

Item was changed:
  ----- Method: WriteBarrierTest>>testBasicProxyReadOnly (in category 'tests - proxy') -----
  testBasicProxyReadOnly
  	self alwaysReadOnlyObjects do: [ :each |
+ 		self assert: (self mirrorPrimitives isObjectReadOnly: each) equals: true ]!
- 		self assert: (MirrorPrimitives isObjectReadOnly: each) equals: true ]!

Item was changed:
  ----- Method: WriteBarrierTest>>testBasicProxyWritable (in category 'tests - proxy') -----
  testBasicProxyWritable
  	self alwaysWritableObjects , self maybeReadOnlyObjects do: [ :each |
+ 		self assert: (self mirrorPrimitives isObjectReadOnly: each) equals: false ]!
- 		self assert: (MirrorPrimitives isObjectReadOnly: each) equals: false ]!

Item was removed:
- ----- Method: WriteBarrierTest>>testMutateByteSymbolUsingPrivateAtPut (in category 'tests - object') -----
- testMutateByteSymbolUsingPrivateAtPut
- 	| guineaPig |
- 	[guineaPig := #hello.
- 	 guineaPig beReadOnlyObject.
- 	
- 	 self 
- 		should: ((guineaPig class includesSelector: #pvtAt:put:)
- 					ifTrue: [[ guineaPig perform: #pvtAt:put: with: 1 with: $q ]] "Squeak refuses to compile non-self sends of pvt* selectors."
- 					ifFalse: [[ guineaPig privateAt: 1 put: $q ]])
- 		raise: ModificationForbidden ]
- 	ensure:
- 		[ guineaPig beWritableObject ].
- 	
- 	self assert: guineaPig first equals: $h!

Item was changed:
  ----- Method: WriteBarrierTest>>testMutateObjectInstVarUsingBasicAtPut (in category 'tests - object') -----
  testMutateObjectInstVarUsingBasicAtPut
  	| guineaPig |
  	guineaPig := Array new: 5.
  	guineaPig beReadOnlyObject.
  	
  	self 
  		should: [ guineaPig basicAt: 1 put: #test  ]
  		raise: ModificationForbidden.
  		
+ 	[ guineaPig basicAt: 1 put: #test ] 
- 	[ guineaPig at: 1 put: #test ] 
  		on: ModificationForbidden 
  		do: [:modification | 
  			self assert: modification fieldIndex equals: 1.
  			modification object beWritableObject.
  			modification retryModification ].
  
  	self assert: guineaPig first equals: #test!

Item was removed:
- ----- Method: WriteBarrierTest>>testMutateWideSymbolUsingPrivateAtPut (in category 'tests - object') -----
- testMutateWideSymbolUsingPrivateAtPut
- 	| guineaPig |
- 	[ guineaPig := ('hello', (Character codePoint: 8002) asString) asSymbol.
- 	guineaPig beReadOnlyObject.
- 	
- 	self 
- 		should: ((guineaPig class includesSelector: #pvtAt:put:)
- 					ifTrue: [[ guineaPig perform: #pvtAt:put: with: 1 with: $A ]] "Squeak refuses to compile non-self sends of pvt* selectors."
- 					ifFalse: [[ guineaPig privateAt: 1 put: $A ]])
- 		raise: ModificationForbidden ]
- 		ensure: [ guineaPig beWritableObject ].
- 
- 	self assert: guineaPig first  equals: $h!

Item was changed:
  ----- Method: WriteBarrierTest>>testProxyObject:initialState:tuples: (in category 'tests - helper') -----
  testProxyObject: object initialState: initialState tuples: tuples
  	self 
  		testObject: object 
  		initialState: initialState 
  		tuples: tuples 
  		setReadOnlyBlock: [ :value | 
+ 			self mirrorPrimitives makeObject: object readOnly: value ]!
- 			MirrorPrimitives makeObject: object readOnly: value ]!



More information about the Squeak-dev mailing list