The Trunk: System-mt.1123.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: System-mt.1123.mcz

commits-2
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1123.mcz

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

Name: System-mt.1123
Author: mt
Time: 19 November 2019, 12:05:29.547265 pm
UUID: 084b44a2-c237-c445-b14c-c84158296a4c
Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112

Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet.

=============== Diff against System-mt.1121 ===============

Item was added:
+ ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') -----
+ removeEmptyChangeSets
+ "Remove all change sets that are empty
+ and which are not nailed down by belonging to a Project."
+ "ChangeSet removeEmptyChangeSets"
+ | toGo |
+ toGo := self allChangeSets
+ select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]]
+ thenDo: [:cs | self removeChangeSet: cs].
+ self inform: toGo size printString, ' change set(s) removed.'!

Item was changed:
  Object subclass: #MethodReference
  instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment'
  classVariableNames: 'InvalidReference'
  poolDictionaries: ''
  category: 'System-Tools'!
 
+ !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0!
+ A MethodReference is is a lightweight proxy for a CompiledMethod.  Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools.
- !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0!
- A MethodReference is is a lightweight proxy for a CompiledMethod.  Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools.
 
  Instance Variables
+ classIsMeta: Boolean class vs. instance
- classIsMeta:     Boolean class vs. instance
  classSymbol: Symbol for method's class (without class keyword if meta)
+ methodSymbol: Symbol for method's selector
- methodSymbol: Symbol for method's selector
  stringVersion: 'Class>>selector:' format
 
  !

Item was changed:
  ----- Method: Project>>okToChange (in category 'release') -----
  okToChange
  "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation"
 
  | answer |
  (self isCurrentProject and: [self isTopProject]) ifTrue: [
  self inform: 'You cannot close the top project.'.
  ^ false].
 
  (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name}))
  ifFalse: [^ false].
 
  self subProjects ifNotEmpty: [:sp |
  answer := Project uiManager
  chooseFrom: #(
  "1" 'Lift all sub-projects'
  "2" 'Discard all sub-projects (NO UNDO!!)'
  "3 or 0" 'Cancel')
  lines: #(2)
  title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}).
 
  (answer = 0 or: [answer = 3]) ifTrue: [^ false].
  answer = 1 ifTrue: [self liftSubProjects. ^ true].
+ answer = 2 ifTrue: [^ sp allSatisfy: [:ea |
+ [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]].
- answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]].
 
  ^ true!

Item was changed:
  ----- Method: Project>>previewImageForm (in category 'displaying') -----
  previewImageForm
 
+ ^ self imageForm scaledToSize: self viewSize!
- ^ self imageForm!

Item was removed:
- ----- Method: Project>>setViewSize: (in category 'accessing') -----
- setViewSize: aPoint
- viewSize := aPoint!

Item was added:
+ ----- Method: Project>>transcript (in category 'accessing') -----
+ transcript
+
+ ^ transcript!

Item was added:
+ ----- Method: Project>>viewSize: (in category 'accessing') -----
+ viewSize: aPoint
+ viewSize := aPoint!

Item was changed:
+ ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') -----
  add: aClass toList: startUpOrShutDownList after: predecessor
  "Add the name of aClass to the startUp or shutDown list.
  Add it after the name of predecessor"
 
  (Smalltalk globals includes: aClass)
  ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
 
  "Add after predecessor, moving it if already there."
  (Smalltalk globals includes: predecessor)  
  ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.'].
  (startUpOrShutDownList includes: predecessor name)
  ifFalse: [self error: predecessor name , ' cannot be found in the list.'].
  startUpOrShutDownList remove: aClass name ifAbsent:[].
  startUpOrShutDownList add: aClass name after: predecessor name!

Item was changed:
+ ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') -----
  add: aClass toList: startUpOrShutDownList before: successor
  "Add the name of aClass to the startUp or shutDown list.
  Add it before the name of successor"
 
  (Smalltalk globals includes: aClass)
  ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
 
  "Add before successor, moving it if already there."
  (Smalltalk globals includes: successor)  
  ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.'].
  (startUpOrShutDownList includes: successor name)
  ifFalse: [self error: successor name , ' cannot be found in the list.'].
  startUpOrShutDownList remove: aClass name ifAbsent: [].
  startUpOrShutDownList add: aClass name before: successor name.!

Item was changed:
+ ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') -----
  addToShutDownList: aClass
  "This will add a ref to this class at the BEGINNING of the shutDown list."
  "No-op if already in the list."
 
  (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]!

Item was changed:
+ ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') -----
  addToShutDownList: aClass before: predecessor
 
  self add: aClass toList: ShutDownList before: predecessor!

Item was changed:
+ ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') -----
  addToStartUpList: aClass
  "This will add a ref to this class at the END of the startUp list."
  "No-op if already in the list."
 
  (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]!

Item was changed:
+ ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') -----
  addToStartUpList: aClass before: predecessor
 
  self add: aClass toList: StartUpList before: predecessor!

Item was added:
+ ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') -----
+ at: key ifPresent: aBlock ifAbsent: anotherBlock
+ "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result."
+
+ ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock!

Item was changed:
+ ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') -----
  removeFromShutDownList: aClass
 
  ShutDownList remove: aClass name ifAbsent: []!

Item was changed:
+ ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') -----
- ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') -----
  removeFromStartUpList: aClass
 
  StartUpList remove: aClass name ifAbsent: []!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-mt.1123.mcz

David T. Lewis
I think there is a problem somewhere in this update. After loading
System-mt.1123, I can no longer open a new MVC project. Reverting to
System-mt.1121 fixes it. The issue seems to be in Project>>previewImageForm
which calls Project>>viewSize, but the viewSize for the (MVC) project
is nil when looking at it from Morphic.

I tried changing to this, which seems to fix the initial failure:

  Project>>previewImageForm
    ^ self imageForm scaledToSize: Project current viewSize

But that leads to another error in ProjectViewMorph>>enter when
entering the MVC project.

I don't have time to look at it further right now, but I'll do so
later if no one gets to it first.

Dave.


On Tue, Nov 19, 2019 at 11:05:37AM +0000, [hidden email] wrote:

> Marcel Taeumel uploaded a new version of System to project The Trunk:
> http://source.squeak.org/trunk/System-mt.1123.mcz
>
> ==================== Summary ====================
>
> Name: System-mt.1123
> Author: mt
> Time: 19 November 2019, 12:05:29.547265 pm
> UUID: 084b44a2-c237-c445-b14c-c84158296a4c
> Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112
>
> Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet.
>
> =============== Diff against System-mt.1121 ===============
>
> Item was added:
> + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') -----
> + removeEmptyChangeSets
> + "Remove all change sets that are empty
> + and which are not nailed down by belonging to a Project."
> + "ChangeSet removeEmptyChangeSets"
> + | toGo |
> + toGo := self allChangeSets
> + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]]
> + thenDo: [:cs | self removeChangeSet: cs].
> + self inform: toGo size printString, ' change set(s) removed.'!
>
> Item was changed:
>   Object subclass: #MethodReference
>   instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment'
>   classVariableNames: 'InvalidReference'
>   poolDictionaries: ''
>   category: 'System-Tools'!
>  
> + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0!
> + A MethodReference is is a lightweight proxy for a CompiledMethod.  Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools.
> - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0!
> - A MethodReference is is a lightweight proxy for a CompiledMethod.  Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools.
>  
>   Instance Variables
> + classIsMeta: Boolean class vs. instance
> - classIsMeta:     Boolean class vs. instance
>   classSymbol: Symbol for method's class (without class keyword if meta)
> + methodSymbol: Symbol for method's selector
> - methodSymbol: Symbol for method's selector
>   stringVersion: 'Class>>selector:' format
>  
>   !
>
> Item was changed:
>   ----- Method: Project>>okToChange (in category 'release') -----
>   okToChange
>   "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation"
>  
>   | answer |
>   (self isCurrentProject and: [self isTopProject]) ifTrue: [
>   self inform: 'You cannot close the top project.'.
>   ^ false].
>  
>   (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name}))
>   ifFalse: [^ false].
>  
>   self subProjects ifNotEmpty: [:sp |
>   answer := Project uiManager
>   chooseFrom: #(
>   "1" 'Lift all sub-projects'
>   "2" 'Discard all sub-projects (NO UNDO!!)'
>   "3 or 0" 'Cancel')
>   lines: #(2)
>   title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}).
>  
>   (answer = 0 or: [answer = 3]) ifTrue: [^ false].
>   answer = 1 ifTrue: [self liftSubProjects. ^ true].
> + answer = 2 ifTrue: [^ sp allSatisfy: [:ea |
> + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]].
> - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]].
>  
>   ^ true!
>
> Item was changed:
>   ----- Method: Project>>previewImageForm (in category 'displaying') -----
>   previewImageForm
>  
> + ^ self imageForm scaledToSize: self viewSize!
> - ^ self imageForm!
>
> Item was removed:
> - ----- Method: Project>>setViewSize: (in category 'accessing') -----
> - setViewSize: aPoint
> - viewSize := aPoint!
>
> Item was added:
> + ----- Method: Project>>transcript (in category 'accessing') -----
> + transcript
> +
> + ^ transcript!
>
> Item was added:
> + ----- Method: Project>>viewSize: (in category 'accessing') -----
> + viewSize: aPoint
> + viewSize := aPoint!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') -----
>   add: aClass toList: startUpOrShutDownList after: predecessor
>   "Add the name of aClass to the startUp or shutDown list.
>   Add it after the name of predecessor"
>  
>   (Smalltalk globals includes: aClass)
>   ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>  
>   "Add after predecessor, moving it if already there."
>   (Smalltalk globals includes: predecessor)  
>   ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.'].
>   (startUpOrShutDownList includes: predecessor name)
>   ifFalse: [self error: predecessor name , ' cannot be found in the list.'].
>   startUpOrShutDownList remove: aClass name ifAbsent:[].
>   startUpOrShutDownList add: aClass name after: predecessor name!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') -----
>   add: aClass toList: startUpOrShutDownList before: successor
>   "Add the name of aClass to the startUp or shutDown list.
>   Add it before the name of successor"
>  
>   (Smalltalk globals includes: aClass)
>   ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>  
>   "Add before successor, moving it if already there."
>   (Smalltalk globals includes: successor)  
>   ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.'].
>   (startUpOrShutDownList includes: successor name)
>   ifFalse: [self error: successor name , ' cannot be found in the list.'].
>   startUpOrShutDownList remove: aClass name ifAbsent: [].
>   startUpOrShutDownList add: aClass name before: successor name.!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') -----
>   addToShutDownList: aClass
>   "This will add a ref to this class at the BEGINNING of the shutDown list."
>   "No-op if already in the list."
>  
>   (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') -----
>   addToShutDownList: aClass before: predecessor
>  
>   self add: aClass toList: ShutDownList before: predecessor!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') -----
>   addToStartUpList: aClass
>   "This will add a ref to this class at the END of the startUp list."
>   "No-op if already in the list."
>  
>   (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') -----
>   addToStartUpList: aClass before: predecessor
>  
>   self add: aClass toList: StartUpList before: predecessor!
>
> Item was added:
> + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') -----
> + at: key ifPresent: aBlock ifAbsent: anotherBlock
> + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result."
> +
> + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') -----
>   removeFromShutDownList: aClass
>  
>   ShutDownList remove: aClass name ifAbsent: []!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') -----
>   removeFromStartUpList: aClass
>  
>   StartUpList remove: aClass name ifAbsent: []!
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-mt.1123.mcz

marcel.taeumel
Hi, all.

Sorry! Just fixed that oversight in Trunk:

System-mt.1124
Morphic-mt.1589
ST80-mt.243

Best,
Marcel

Am 20.11.2019 13:31:08 schrieb David T. Lewis <[hidden email]>:

I think there is a problem somewhere in this update. After loading
System-mt.1123, I can no longer open a new MVC project. Reverting to
System-mt.1121 fixes it. The issue seems to be in Project>>previewImageForm
which calls Project>>viewSize, but the viewSize for the (MVC) project
is nil when looking at it from Morphic.

I tried changing to this, which seems to fix the initial failure:

Project>>previewImageForm
^ self imageForm scaledToSize: Project current viewSize

But that leads to another error in ProjectViewMorph>>enter when
entering the MVC project.

I don't have time to look at it further right now, but I'll do so
later if no one gets to it first.

Dave.


On Tue, Nov 19, 2019 at 11:05:37AM +0000, [hidden email] wrote:
> Marcel Taeumel uploaded a new version of System to project The Trunk:
> http://source.squeak.org/trunk/System-mt.1123.mcz
>
> ==================== Summary ====================
>
> Name: System-mt.1123
> Author: mt
> Time: 19 November 2019, 12:05:29.547265 pm
> UUID: 084b44a2-c237-c445-b14c-c84158296a4c
> Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112
>
> Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet.
>
> =============== Diff against System-mt.1121 ===============
>
> Item was added:
> + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') -----
> + removeEmptyChangeSets
> + "Remove all change sets that are empty
> + and which are not nailed down by belonging to a Project."
> + "ChangeSet removeEmptyChangeSets"
> + | toGo |
> + toGo := self allChangeSets
> + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]]
> + thenDo: [:cs | self removeChangeSet: cs].
> + self inform: toGo size printString, ' change set(s) removed.'!
>
> Item was changed:
> Object subclass: #MethodReference
> instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment'
> classVariableNames: 'InvalidReference'
> poolDictionaries: ''
> category: 'System-Tools'!
>
> + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0!
> + A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools.
> - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0!
> - A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools.
>
> Instance Variables
> + classIsMeta: Boolean class vs. instance
> - classIsMeta: Boolean class vs. instance
> classSymbol: Symbol for method's class (without class keyword if meta)
> + methodSymbol: Symbol for method's selector
> - methodSymbol: Symbol for method's selector
> stringVersion: 'Class>>selector:' format
>
> !
>
> Item was changed:
> ----- Method: Project>>okToChange (in category 'release') -----
> okToChange
> "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation"
>
> | answer |
> (self isCurrentProject and: [self isTopProject]) ifTrue: [
> self inform: 'You cannot close the top project.'.
> ^ false].
>
> (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name}))
> ifFalse: [^ false].
>
> self subProjects ifNotEmpty: [:sp |
> answer := Project uiManager
> chooseFrom: #(
> "1" 'Lift all sub-projects'
> "2" 'Discard all sub-projects (NO UNDO!!)'
> "3 or 0" 'Cancel')
> lines: #(2)
> title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}).
>
> (answer = 0 or: [answer = 3]) ifTrue: [^ false].
> answer = 1 ifTrue: [self liftSubProjects. ^ true].
> + answer = 2 ifTrue: [^ sp allSatisfy: [:ea |
> + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]].
> - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]].
>
> ^ true!
>
> Item was changed:
> ----- Method: Project>>previewImageForm (in category 'displaying') -----
> previewImageForm
>
> + ^ self imageForm scaledToSize: self viewSize!
> - ^ self imageForm!
>
> Item was removed:
> - ----- Method: Project>>setViewSize: (in category 'accessing') -----
> - setViewSize: aPoint
> - viewSize := aPoint!
>
> Item was added:
> + ----- Method: Project>>transcript (in category 'accessing') -----
> + transcript
> +
> + ^ transcript!
>
> Item was added:
> + ----- Method: Project>>viewSize: (in category 'accessing') -----
> + viewSize: aPoint
> + viewSize := aPoint!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') -----
> add: aClass toList: startUpOrShutDownList after: predecessor
> "Add the name of aClass to the startUp or shutDown list.
> Add it after the name of predecessor"
>
> (Smalltalk globals includes: aClass)
> ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>
> "Add after predecessor, moving it if already there."
> (Smalltalk globals includes: predecessor)
> ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.'].
> (startUpOrShutDownList includes: predecessor name)
> ifFalse: [self error: predecessor name , ' cannot be found in the list.'].
> startUpOrShutDownList remove: aClass name ifAbsent:[].
> startUpOrShutDownList add: aClass name after: predecessor name!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') -----
> add: aClass toList: startUpOrShutDownList before: successor
> "Add the name of aClass to the startUp or shutDown list.
> Add it before the name of successor"
>
> (Smalltalk globals includes: aClass)
> ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>
> "Add before successor, moving it if already there."
> (Smalltalk globals includes: successor)
> ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.'].
> (startUpOrShutDownList includes: successor name)
> ifFalse: [self error: successor name , ' cannot be found in the list.'].
> startUpOrShutDownList remove: aClass name ifAbsent: [].
> startUpOrShutDownList add: aClass name before: successor name.!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') -----
> addToShutDownList: aClass
> "This will add a ref to this class at the BEGINNING of the shutDown list."
> "No-op if already in the list."
>
> (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') -----
> addToShutDownList: aClass before: predecessor
>
> self add: aClass toList: ShutDownList before: predecessor!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') -----
> addToStartUpList: aClass
> "This will add a ref to this class at the END of the startUp list."
> "No-op if already in the list."
>
> (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') -----
> addToStartUpList: aClass before: predecessor
>
> self add: aClass toList: StartUpList before: predecessor!
>
> Item was added:
> + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') -----
> + at: key ifPresent: aBlock ifAbsent: anotherBlock
> + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result."
> +
> + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') -----
> removeFromShutDownList: aClass
>
> ShutDownList remove: aClass name ifAbsent: []!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') -----
> removeFromStartUpList: aClass
>
> StartUpList remove: aClass name ifAbsent: []!
>
>



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-mt.1123.mcz

Jakob Reschke
Is it possible to write meaningful smokeĀ  tests for such things as opening an MVC project from Morphic, entering it and going back? Without totally deranging the image that runs the tests?


Marcel Taeumel <[hidden email]> schrieb am Mi., 20. Nov. 2019, 14:47:
Hi, all.

Sorry! Just fixed that oversight in Trunk:

System-mt.1124
Morphic-mt.1589
ST80-mt.243

Best,
Marcel

Am 20.11.2019 13:31:08 schrieb David T. Lewis <[hidden email]>:

I think there is a problem somewhere in this update. After loading
System-mt.1123, I can no longer open a new MVC project. Reverting to
System-mt.1121 fixes it. The issue seems to be in Project>>previewImageForm
which calls Project>>viewSize, but the viewSize for the (MVC) project
is nil when looking at it from Morphic.

I tried changing to this, which seems to fix the initial failure:

Project>>previewImageForm
^ self imageForm scaledToSize: Project current viewSize

But that leads to another error in ProjectViewMorph>>enter when
entering the MVC project.

I don't have time to look at it further right now, but I'll do so
later if no one gets to it first.

Dave.


On Tue, Nov 19, 2019 at 11:05:37AM +0000, [hidden email] wrote:

> Marcel Taeumel uploaded a new version of System to project The Trunk:
> http://source.squeak.org/trunk/System-mt.1123.mcz
>
> ==================== Summary ====================
>
> Name: System-mt.1123
> Author: mt
> Time: 19 November 2019, 12:05:29.547265 pm
> UUID: 084b44a2-c237-c445-b14c-c84158296a4c
> Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112
>
> Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet.
>
> =============== Diff against System-mt.1121 ===============
>
> Item was added:
> + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') -----
> + removeEmptyChangeSets
> + "Remove all change sets that are empty
> + and which are not nailed down by belonging to a Project."
> + "ChangeSet removeEmptyChangeSets"
> + | toGo |
> + toGo := self allChangeSets
> + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]]
> + thenDo: [:cs | self removeChangeSet: cs].
> + self inform: toGo size printString, ' change set(s) removed.'!
>
> Item was changed:
> Object subclass: #MethodReference
> instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment'
> classVariableNames: 'InvalidReference'
> poolDictionaries: ''
> category: 'System-Tools'!
>
> + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0!
> + A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools.
> - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0!
> - A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools.
>
> Instance Variables
> + classIsMeta: Boolean class vs. instance
> - classIsMeta: Boolean class vs. instance
> classSymbol: Symbol for method's class (without class keyword if meta)
> + methodSymbol: Symbol for method's selector
> - methodSymbol: Symbol for method's selector
> stringVersion: 'Class>>selector:' format
>
> !
>
> Item was changed:
> ----- Method: Project>>okToChange (in category 'release') -----
> okToChange
> "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation"
>
> | answer |
> (self isCurrentProject and: [self isTopProject]) ifTrue: [
> self inform: 'You cannot close the top project.'.
> ^ false].
>
> (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name}))
> ifFalse: [^ false].
>
> self subProjects ifNotEmpty: [:sp |
> answer := Project uiManager
> chooseFrom: #(
> "1" 'Lift all sub-projects'
> "2" 'Discard all sub-projects (NO UNDO!!)'
> "3 or 0" 'Cancel')
> lines: #(2)
> title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}).
>
> (answer = 0 or: [answer = 3]) ifTrue: [^ false].
> answer = 1 ifTrue: [self liftSubProjects. ^ true].
> + answer = 2 ifTrue: [^ sp allSatisfy: [:ea |
> + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]].
> - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]].
>
> ^ true!
>
> Item was changed:
> ----- Method: Project>>previewImageForm (in category 'displaying') -----
> previewImageForm
>
> + ^ self imageForm scaledToSize: self viewSize!
> - ^ self imageForm!
>
> Item was removed:
> - ----- Method: Project>>setViewSize: (in category 'accessing') -----
> - setViewSize: aPoint
> - viewSize := aPoint!
>
> Item was added:
> + ----- Method: Project>>transcript (in category 'accessing') -----
> + transcript
> +
> + ^ transcript!
>
> Item was added:
> + ----- Method: Project>>viewSize: (in category 'accessing') -----
> + viewSize: aPoint
> + viewSize := aPoint!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') -----
> add: aClass toList: startUpOrShutDownList after: predecessor
> "Add the name of aClass to the startUp or shutDown list.
> Add it after the name of predecessor"
>
> (Smalltalk globals includes: aClass)
> ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>
> "Add after predecessor, moving it if already there."
> (Smalltalk globals includes: predecessor)
> ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.'].
> (startUpOrShutDownList includes: predecessor name)
> ifFalse: [self error: predecessor name , ' cannot be found in the list.'].
> startUpOrShutDownList remove: aClass name ifAbsent:[].
> startUpOrShutDownList add: aClass name after: predecessor name!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') -----
> add: aClass toList: startUpOrShutDownList before: successor
> "Add the name of aClass to the startUp or shutDown list.
> Add it before the name of successor"
>
> (Smalltalk globals includes: aClass)
> ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>
> "Add before successor, moving it if already there."
> (Smalltalk globals includes: successor)
> ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.'].
> (startUpOrShutDownList includes: successor name)
> ifFalse: [self error: successor name , ' cannot be found in the list.'].
> startUpOrShutDownList remove: aClass name ifAbsent: [].
> startUpOrShutDownList add: aClass name before: successor name.!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') -----
> addToShutDownList: aClass
> "This will add a ref to this class at the BEGINNING of the shutDown list."
> "No-op if already in the list."
>
> (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') -----
> addToShutDownList: aClass before: predecessor
>
> self add: aClass toList: ShutDownList before: predecessor!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') -----
> addToStartUpList: aClass
> "This will add a ref to this class at the END of the startUp list."
> "No-op if already in the list."
>
> (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') -----
> addToStartUpList: aClass before: predecessor
>
> self add: aClass toList: StartUpList before: predecessor!
>
> Item was added:
> + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') -----
> + at: key ifPresent: aBlock ifAbsent: anotherBlock
> + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result."
> +
> + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') -----
> removeFromShutDownList: aClass
>
> ShutDownList remove: aClass name ifAbsent: []!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') -----
> removeFromStartUpList: aClass
>
> StartUpList remove: aClass name ifAbsent: []!
>
>




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-mt.1123.mcz

marcel.taeumel
Hmmm... not really. The automatic emergency project switch is not even working properly at the moment.

Best,
Marcel

Am 20.11.2019 16:52:15 schrieb Jakob Reschke <[hidden email]>:

Is it possible to write meaningful smoke  tests for such things as opening an MVC project from Morphic, entering it and going back? Without totally deranging the image that runs the tests?


Marcel Taeumel <[hidden email]> schrieb am Mi., 20. Nov. 2019, 14:47:
Hi, all.

Sorry! Just fixed that oversight in Trunk:

System-mt.1124
Morphic-mt.1589
ST80-mt.243

Best,
Marcel

Am 20.11.2019 13:31:08 schrieb David T. Lewis <[hidden email]>:

I think there is a problem somewhere in this update. After loading
System-mt.1123, I can no longer open a new MVC project. Reverting to
System-mt.1121 fixes it. The issue seems to be in Project>>previewImageForm
which calls Project>>viewSize, but the viewSize for the (MVC) project
is nil when looking at it from Morphic.

I tried changing to this, which seems to fix the initial failure:

Project>>previewImageForm
^ self imageForm scaledToSize: Project current viewSize

But that leads to another error in ProjectViewMorph>>enter when
entering the MVC project.

I don't have time to look at it further right now, but I'll do so
later if no one gets to it first.

Dave.


On Tue, Nov 19, 2019 at 11:05:37AM +0000, [hidden email] wrote:

> Marcel Taeumel uploaded a new version of System to project The Trunk:
> http://source.squeak.org/trunk/System-mt.1123.mcz
>
> ==================== Summary ====================
>
> Name: System-mt.1123
> Author: mt
> Time: 19 November 2019, 12:05:29.547265 pm
> UUID: 084b44a2-c237-c445-b14c-c84158296a4c
> Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112
>
> Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet.
>
> =============== Diff against System-mt.1121 ===============
>
> Item was added:
> + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') -----
> + removeEmptyChangeSets
> + "Remove all change sets that are empty
> + and which are not nailed down by belonging to a Project."
> + "ChangeSet removeEmptyChangeSets"
> + | toGo |
> + toGo := self allChangeSets
> + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]]
> + thenDo: [:cs | self removeChangeSet: cs].
> + self inform: toGo size printString, ' change set(s) removed.'!
>
> Item was changed:
> Object subclass: #MethodReference
> instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment'
> classVariableNames: 'InvalidReference'
> poolDictionaries: ''
> category: 'System-Tools'!
>
> + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0!
> + A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools.
> - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0!
> - A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools.
>
> Instance Variables
> + classIsMeta: Boolean class vs. instance
> - classIsMeta: Boolean class vs. instance
> classSymbol: Symbol for method's class (without class keyword if meta)
> + methodSymbol: Symbol for method's selector
> - methodSymbol: Symbol for method's selector
> stringVersion: 'Class>>selector:' format
>
> !
>
> Item was changed:
> ----- Method: Project>>okToChange (in category 'release') -----
> okToChange
> "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation"
>
> | answer |
> (self isCurrentProject and: [self isTopProject]) ifTrue: [
> self inform: 'You cannot close the top project.'.
> ^ false].
>
> (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name}))
> ifFalse: [^ false].
>
> self subProjects ifNotEmpty: [:sp |
> answer := Project uiManager
> chooseFrom: #(
> "1" 'Lift all sub-projects'
> "2" 'Discard all sub-projects (NO UNDO!!)'
> "3 or 0" 'Cancel')
> lines: #(2)
> title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}).
>
> (answer = 0 or: [answer = 3]) ifTrue: [^ false].
> answer = 1 ifTrue: [self liftSubProjects. ^ true].
> + answer = 2 ifTrue: [^ sp allSatisfy: [:ea |
> + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]].
> - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]].
>
> ^ true!
>
> Item was changed:
> ----- Method: Project>>previewImageForm (in category 'displaying') -----
> previewImageForm
>
> + ^ self imageForm scaledToSize: self viewSize!
> - ^ self imageForm!
>
> Item was removed:
> - ----- Method: Project>>setViewSize: (in category 'accessing') -----
> - setViewSize: aPoint
> - viewSize := aPoint!
>
> Item was added:
> + ----- Method: Project>>transcript (in category 'accessing') -----
> + transcript
> +
> + ^ transcript!
>
> Item was added:
> + ----- Method: Project>>viewSize: (in category 'accessing') -----
> + viewSize: aPoint
> + viewSize := aPoint!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') -----
> add: aClass toList: startUpOrShutDownList after: predecessor
> "Add the name of aClass to the startUp or shutDown list.
> Add it after the name of predecessor"
>
> (Smalltalk globals includes: aClass)
> ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>
> "Add after predecessor, moving it if already there."
> (Smalltalk globals includes: predecessor)
> ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.'].
> (startUpOrShutDownList includes: predecessor name)
> ifFalse: [self error: predecessor name , ' cannot be found in the list.'].
> startUpOrShutDownList remove: aClass name ifAbsent:[].
> startUpOrShutDownList add: aClass name after: predecessor name!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') -----
> add: aClass toList: startUpOrShutDownList before: successor
> "Add the name of aClass to the startUp or shutDown list.
> Add it before the name of successor"
>
> (Smalltalk globals includes: aClass)
> ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
>
> "Add before successor, moving it if already there."
> (Smalltalk globals includes: successor)
> ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.'].
> (startUpOrShutDownList includes: successor name)
> ifFalse: [self error: successor name , ' cannot be found in the list.'].
> startUpOrShutDownList remove: aClass name ifAbsent: [].
> startUpOrShutDownList add: aClass name before: successor name.!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') -----
> addToShutDownList: aClass
> "This will add a ref to this class at the BEGINNING of the shutDown list."
> "No-op if already in the list."
>
> (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') -----
> addToShutDownList: aClass before: predecessor
>
> self add: aClass toList: ShutDownList before: predecessor!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') -----
> addToStartUpList: aClass
> "This will add a ref to this class at the END of the startUp list."
> "No-op if already in the list."
>
> (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') -----
> addToStartUpList: aClass before: predecessor
>
> self add: aClass toList: StartUpList before: predecessor!
>
> Item was added:
> + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') -----
> + at: key ifPresent: aBlock ifAbsent: anotherBlock
> + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result."
> +
> + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') -----
> removeFromShutDownList: aClass
>
> ShutDownList remove: aClass name ifAbsent: []!
>
> Item was changed:
> + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') -----
> - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') -----
> removeFromStartUpList: aClass
>
> StartUpList remove: aClass name ifAbsent: []!
>
>




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-mt.1123.mcz

David T. Lewis
Hmmm... but it's still a fair question. It's a tricky area for sure,
but it might still be possible to write some tests.

The main methods of interest would be the 11 methods in the "enter"
category of class Project, and maybe the 2 methods in "enter - recovery".

The part about "without totally deranging the image that runs the tests"
might be a bit of a challenge ;-)

I am not volunteering to do this, just saying that it's worth considering.

Dave


On Wed, Nov 20, 2019 at 06:53:21PM +0100, Marcel Taeumel wrote:

> Hmmm... not really. The automatic emergency project switch is not even working properly at the moment.
>
> Best,
> Marcel
> Am 20.11.2019 16:52:15 schrieb Jakob Reschke <[hidden email]>:
> Is it possible to write meaningful smoke?? tests for such things as opening an MVC project from Morphic, entering it and going back? Without totally deranging the image that runs the tests?
>
>
> Marcel Taeumel <[hidden email] [mailto:[hidden email]]> schrieb am Mi., 20. Nov. 2019, 14:47:
>
> Hi, all.
>
> Sorry! Just fixed that oversight in Trunk:
>
> System-mt.1124
>
> Morphic-mt.1589
>
> ST80-mt.243
>
>
> Best,
> Marcel
> Am 20.11.2019 13:31:08 schrieb David T. Lewis <[hidden email] [mailto:[hidden email]]>:
> I think there is a problem somewhere in this update. After loading
> System-mt.1123, I can no longer open a new MVC project. Reverting to
> System-mt.1121 fixes it. The issue seems to be in Project>>previewImageForm
> which calls Project>>viewSize, but the viewSize for the (MVC) project
> is nil when looking at it from Morphic.
>
> I tried changing to this, which seems to fix the initial failure:
>
> Project>>previewImageForm
> ^ self imageForm scaledToSize: Project current viewSize
>
> But that leads to another error in ProjectViewMorph>>enter when
> entering the MVC project.
>
> I don't have time to look at it further right now, but I'll do so
> later if no one gets to it first.
>
> Dave.
>
>
> On Tue, Nov 19, 2019 at 11:05:37AM +0000, [hidden email] [mailto:[hidden email]] wrote:
> > Marcel Taeumel uploaded a new version of System to project The Trunk:
> > http://source.squeak.org/trunk/System-mt.1123.mcz [http://source.squeak.org/trunk/System-mt.1123.mcz]
> >
> > ==================== Summary ====================
> >
> > Name: System-mt.1123
> > Author: mt
> > Time: 19 November 2019, 12:05:29.547265 pm
> > UUID: 084b44a2-c237-c445-b14c-c84158296a4c
> > Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112
> >
> > Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet.
> >
> > =============== Diff against System-mt.1121 ===============
> >
> > Item was added:
> > + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') -----
> > + removeEmptyChangeSets
> > + "Remove all change sets that are empty
> > + and which are not nailed down by belonging to a Project."
> > + "ChangeSet removeEmptyChangeSets"
> > + | toGo |
> > + toGo := self allChangeSets
> > + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]]
> > + thenDo: [:cs | self removeChangeSet: cs].
> > + self inform: toGo size printString, ' change set(s) removed.'!
> >
> > Item was changed:
> > Object subclass: #MethodReference
> > instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment'
> > classVariableNames: 'InvalidReference'
> > poolDictionaries: ''
> > category: 'System-Tools'!
> >
> > + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0!
> > + A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools.
> > - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0!
> > - A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools.
> >
> > Instance Variables
> > + classIsMeta: Boolean class vs. instance
> > - classIsMeta: Boolean class vs. instance
> > classSymbol: Symbol for method's class (without class keyword if meta)
> > + methodSymbol: Symbol for method's selector
> > - methodSymbol: Symbol for method's selector
> > stringVersion: 'Class>>selector:' format
> >
> > !
> >
> > Item was changed:
> > ----- Method: Project>>okToChange (in category 'release') -----
> > okToChange
> > "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation"
> >
> > | answer |
> > (self isCurrentProject and: [self isTopProject]) ifTrue: [
> > self inform: 'You cannot close the top project.'.
> > ^ false].
> >
> > (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name}))
> > ifFalse: [^ false].
> >
> > self subProjects ifNotEmpty: [:sp |
> > answer := Project uiManager
> > chooseFrom: #(
> > "1" 'Lift all sub-projects'
> > "2" 'Discard all sub-projects (NO UNDO!!)'
> > "3 or 0" 'Cancel')
> > lines: #(2)
> > title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}).
> >
> > (answer = 0 or: [answer = 3]) ifTrue: [^ false].
> > answer = 1 ifTrue: [self liftSubProjects. ^ true].
> > + answer = 2 ifTrue: [^ sp allSatisfy: [:ea |
> > + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]].
> > - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]].
> >
> > ^ true!
> >
> > Item was changed:
> > ----- Method: Project>>previewImageForm (in category 'displaying') -----
> > previewImageForm
> >
> > + ^ self imageForm scaledToSize: self viewSize!
> > - ^ self imageForm!
> >
> > Item was removed:
> > - ----- Method: Project>>setViewSize: (in category 'accessing') -----
> > - setViewSize: aPoint
> > - viewSize := aPoint!
> >
> > Item was added:
> > + ----- Method: Project>>transcript (in category 'accessing') -----
> > + transcript
> > +
> > + ^ transcript!
> >
> > Item was added:
> > + ----- Method: Project>>viewSize: (in category 'accessing') -----
> > + viewSize: aPoint
> > + viewSize := aPoint!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') -----
> > add: aClass toList: startUpOrShutDownList after: predecessor
> > "Add the name of aClass to the startUp or shutDown list.
> > Add it after the name of predecessor"
> >
> > (Smalltalk globals includes: aClass)
> > ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
> >
> > "Add after predecessor, moving it if already there."
> > (Smalltalk globals includes: predecessor)
> > ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.'].
> > (startUpOrShutDownList includes: predecessor name)
> > ifFalse: [self error: predecessor name , ' cannot be found in the list.'].
> > startUpOrShutDownList remove: aClass name ifAbsent:[].
> > startUpOrShutDownList add: aClass name after: predecessor name!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') -----
> > add: aClass toList: startUpOrShutDownList before: successor
> > "Add the name of aClass to the startUp or shutDown list.
> > Add it before the name of successor"
> >
> > (Smalltalk globals includes: aClass)
> > ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.'].
> >
> > "Add before successor, moving it if already there."
> > (Smalltalk globals includes: successor)
> > ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.'].
> > (startUpOrShutDownList includes: successor name)
> > ifFalse: [self error: successor name , ' cannot be found in the list.'].
> > startUpOrShutDownList remove: aClass name ifAbsent: [].
> > startUpOrShutDownList add: aClass name before: successor name.!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') -----
> > addToShutDownList: aClass
> > "This will add a ref to this class at the BEGINNING of the shutDown list."
> > "No-op if already in the list."
> >
> > (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') -----
> > addToShutDownList: aClass before: predecessor
> >
> > self add: aClass toList: ShutDownList before: predecessor!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') -----
> > addToStartUpList: aClass
> > "This will add a ref to this class at the END of the startUp list."
> > "No-op if already in the list."
> >
> > (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') -----
> > addToStartUpList: aClass before: predecessor
> >
> > self add: aClass toList: StartUpList before: predecessor!
> >
> > Item was added:
> > + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') -----
> > + at: key ifPresent: aBlock ifAbsent: anotherBlock
> > + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result."
> > +
> > + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') -----
> > removeFromShutDownList: aClass
> >
> > ShutDownList remove: aClass name ifAbsent: []!
> >
> > Item was changed:
> > + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') -----
> > - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') -----
> > removeFromStartUpList: aClass
> >
> > StartUpList remove: aClass name ifAbsent: []!
> >
> >
>
>

>