Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
valuesportinglog [2022/01/31 19:49]
christian [FileIn 6 - Tests]
valuesportinglog [2022/02/27 13:34] (current)
christian [FileIn 6 - Tests]
Line 12: Line 12:
  ^PackageChange new</code>  ^PackageChange new</code>
  
 +If you don't have VisualWorks and cannot create the fileOut yourself, all versions are on GitHub.
 +
 +The fileOut of this configuration is [[https://github.com/PortingPDFtalk/SqueakValues/releases/tag/3.0.0.2|here]].
 ===== First FileIn ===== ===== First FileIn =====
  
 File out from VW with  File out from VW with 
 <code Smalltalk>Squeak fileOutValues</code> <code Smalltalk>Squeak fileOutValues</code>
-Start squeak, open the Transcript and file in "Values.Squeak.stwith+Start squeak, open the Transcript and file in [[https://github.com/PortingPDFtalk/SqueakValues/blob/43f7e61d7dfc2ffac9063a4b3636fc2b1f3559ef/Values.Squeak.st|Values.Squeak.st]] with
  
 <code Smalltalk>FileStream fileIn: 'C:\Users\Christian\Documents\image\Values.Squeak.st'</code> <code Smalltalk>FileStream fileIn: 'C:\Users\Christian\Documents\image\Values.Squeak.st'</code>
Line 56: Line 59:
 ===== FileIn 2 ===== ===== FileIn 2 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/89f46631c98e54aa7e4ca101826e15ceb626091a/Values.Squeak.st|Values.Squeak.st]] into a fresh Squeak image.
  
 Loads about 80% until it hits the error that ColorValue is not defined. Loads about 80% until it hits the error that ColorValue is not defined.
Line 118: Line 121:
 ===== FileIn 3 ===== ===== FileIn 3 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/77bd6a94b7b0ca5f2844f0feab17414454e55c93/Values.Squeak.st|Values.Squeak.st]] into a fresh Squeak image.
  
 Loads about 85% until it hits the error that GeneralBindingReference is not defined. Loads about 85% until it hits the error that GeneralBindingReference is not defined.
Line 146: Line 149:
 ===== FileIn 4 ===== ===== FileIn 4 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/6f52f46cef184aa47b2bd48896417b6eb2d3b6d3/Values.Squeak.st|Values.Squeak.st]] into a fresh Squeak image.
  
 Loads about 97% until it hits the error that Timestamp is not defined. Loads about 97% until it hits the error that Timestamp is not defined.
Line 178: Line 181:
 ===== FileIn 5 ===== ===== FileIn 5 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/084fcf08b7fee76e4534b57a8e4fe6336f5bc986/Values.Squeak.st|Values.Squeak.st]] into a fresh Squeak image.
  
 Loads without errors or warnings!. Loads without errors or warnings!.
  
-First milestome achieved: fileIn without errors.+<HTML> 
 +First milestone<span style="background-color:yellow;font-size:150%;border:2px solid lightgray;">Clean fileIn without errors or warnings!</span><br><br> 
 +</HTML>
  
 Next step: fileIn the tests. Next step: fileIn the tests.
Line 188: Line 193:
 ===== FileIn 6 - Tests ===== ===== FileIn 6 - Tests =====
  
-Added Squeak class methods #fileOutValuesTesting with the transformation:+Added Squeak class method ''#fileOutValuesTesting'' analog to ''#fileOutValues'': 
 + 
 +<code Smalltalk>fileOutValuesTesting 
 + self 
 + write: ('.' asFilename construct: 'ValuesTesting.Squeak.st'
 + pundles: (Array with: (Store.Registry packageNamed: #'Values Testing')) 
 + package: #'Values-Testing' 
 + prerequisites: nil 
 + packageChanges: (Valuemap with: 'Values Testing' -> self ValuesTestingTransform) 
 +</code> 
 + 
 +with the standard transformation for Value classes:
  
 <code Smalltalk> <code Smalltalk>
Line 198: Line 214:
  
 FileOut from VW with: FileOut from VW with:
 +
 <code Smalltalk>Squeak fileOutValuesTesting</code> <code Smalltalk>Squeak fileOutValuesTesting</code>
-then fileIn into a Squeak image  with Values loaded.+ 
 +then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/084fcf08b7fee76e4534b57a8e4fe6336f5bc986/ValuesTesting.Squeak.st|ValuesTesting.Squeak.st]] into a Squeak image with Values loaded.
  
 Loads without errors. Loads without errors.
Line 215: Line 233:
 ValuemapTests>>testRemoving (NotFoundError is Undeclared)  ValuemapTests>>testRemoving (NotFoundError is Undeclared) 
 </code> </code>
 +
 +The VW error classes are not known in Squeak. We define a rewrite of the three test methods:
 +
 +<code Smalltalk>
 +ValuesTestingTransform
 + ^PackageChange
 + hierarchyChanges: (Array with: (ClassChange
 + classReference: #{Smalltalk.Value}
 + classChanges: (Array with: (Rewrite method: #localSpecification rule: #replaceLiteralBindingWithPath))))
 + localChanges: (Array with: (ClassChange
 + classReference: #{Smalltalk.ValuemapTests}
 + instanceChanges: ((OrderedCollection new)
 + add: (Rewrite method: #testIndexedAccess rule: #replaceSqueakErrorClasses);
 + add: (Rewrite method: #testKeyedAccess rule: #replaceSqueakErrorClasses);
 + add: (Rewrite method: #testRemoving rule: #replaceSqueakErrorClasses);
 + yourself)))
 +</code>
 +
 +The rule ''#replaceSqueakErrorClasses'' in class ''ParseTreeRewriter'' (analog to ''#replaceGemstoneErrorClasses'') replaces the Error classes by string replacement:
 +
 +<code Smalltalk>
 +replaceSqueakErrorClasses
 + ^(self new)
 + replace: SubscriptOutOfBoundsError name asString with: #Error asString;
 + replace: NonIntegerIndexError name asString with: #Error asString;
 + replace: NotFoundError name asString with: #NotFound asString;
 + yourself
 +</code>
 +
 +Published as **[Squeak Fileout PDFtalk] (3.0.0.7,chaider)** with the updated transformation.
 +===== FileIn 7 - Tests =====
 +
 +FileOut [Values] and [Values Testing], then fileIn into a fresh Squeak image.
 +
 +Loads without errors or warnings!
 +
 +<HTML>
 +2. milestone: <span style="background-color:yellow;font-size:150%;border:2px solid lightgray;">Clean fileIn of the tests without errors or warnings!</span><br><br>
 +</HTML>
 +
 +Test results:
 +25 run in 0:00:00:00, 0 passes, 0 expected failures, 1 failures, 24 errors, 0 unexpected passes
 +
 +{{:values:2022-02-01_values.squeak.zip |This Squeak fileOut (2022-02-01)}} contains the current ''Values.Squeak.st'' and ''ValuesTesting.Squeak.st''.
 +
 +The next step must be done in Squeak: fix the implementation to make the tests pass and modify the transformation so that the next fileOut contains the right code. If you don't have access to VW, please send a change file.
  • valuesportinglog.1643654989.txt.gz
  • Last modified: 2022/01/31 19:49
  • by christian