Pharo 90 refactoring support improves steadily…

Check extract method for a productivity boost.

Well done Evelyn from Semantics S.R.L.

PharoJS on Pharo90

Hi everyone,
We have been working on porting PharoJS to Pharo 9 for a while now.And we managed to reach the end of the tunnel this week.All PharoJS tests are now green on Pharo 9.
Find out more at:
Dave & Noury

[Ann] Pharo accepted as GSOC

Dear all,
great news I want to share with you: Pharo has been selected to be part of GSOC 2021
Thank you to the great team of admins for making this happen: Oleksandr Zaitsev, Gordana Rakic and Juan Pablo Sandoval Alcocer !

We will send updates soon on the student selection process soon.Regards,– 
Serge Stinckwich

More than 2000 more Unit tests!

By improving the SUnit logic run on our build servers, we are now running more than 2000 unit tests that were ignored in case of parametrized tests.

Lessons learned: avoid duplication and different logic because duplication often bits you.

Pharo consortium.

New VM for M1 machines for testing

Hello happy Pharoers
Today we could access our building where the M1 machine is and Pablo packaged itso that you can test the first version. 
Pablo wrote a little blog post for you.
Let us know since we do not have the M1 at hand and waiting to be able to make it accessible from our build farm… but we are not responsible for it and we were waiting.

The crew was fixing other VM glitches. So we will be ready soon to focus on the Jit version.


More stability running Jenkins Pharo tests

Just a little post to mention that we migrated our Jenkins build servers to use the latest Pharo VM and we saw a lot more stability.

Soon we will integrate the VM tests to our image builds.


New refactorings

Hello all,

These weeks I added new refactorings, following I will give some examples of them.
1. Create accessors with lazy initialization

This refactoring create accessors for variables with lazy initialization, for example:
– we have a class

Object subclass: #SomeClass
instanceVariableNames: ‘stringVar’
classVariableNames: ”
package: ‘Example’
– we can create accessors with lazy initialization executing this script:

variable: #stringVarclass: SomeClass 
classVariable: false 
defaultValue: ”’example”’) execute

the result of this refactoring is:

SomeClass >> stringVar
    ^ stringVar ifNil: [ stringVar := ” ]

SomeClass >> stringVar: anObject
    stringVar := anObject
2. Extract setUp refactoring (is the first version by the moment, it need to be improved)

This refactoring create a setUp method from a code fragment.
You can select an interval of some code in a test method and call this refactoring to create a setUp method implementing that code and replace the code by nothing. The selected class need to be a subclass of TestCase.

For example:

– given  a class

TestCase subclass: #SomeTest
instanceVariableNames: ”
classVariableNames: ”
package: ‘Example’

SomeTest >>testFoo
     self x.
     self assert: true

SomeTest >>  self x
    self doSomething

– To extract setUp method you can execute this script:

(RBExtractSetUpMethodRefactoring extract: (10 to: 16)
from: #testFoo
in: SomeTest) execute

the result of this refactoring is:

SomeTest >> setUp
    super setUp.
    self x.

SomeTest >> testFoo
    self assert: true

3. Move method to class side refactoring (This refactoring is still awaiting review)

This refactoring move a method to class side.
For example:
– given a method 

ClassX >> annotatedBlockMarkup
   ^ ‘@@’
– we can execute the refactoring with this script:
method: (ClassX >> #annotatedBlockMarkup) 
class: ClassX) execute.

the result of this refactoring is:
ClassX >> annotatedBlockMarkup
  ^ self class annotatedBlockMarkup

ClassX class >> annotatedBlockMarkup
  ^ ‘@@’
Any suggestions or comment of these refactorings are welcome. I hope these new refactorings are useful to you .

Evelyn C.

Pharo at Fosdem’21


Here is the link to the FOSDEM stand. There are many excellent videos.

Thanks a lot for the people that created the stand.