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
Last revision Both sides next revision
valuesportinglog [2022/01/31 19:49]
christian [FileIn 6 - Tests]
valuesportinglog [2022/02/27 13:33]
christian [FileIn 5]
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 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.txt
  • Last modified: 2022/02/27 13:34
  • by christian