[Pharo-project] Fwd: [Metacello] symbolic version proof of concept...

Stéphane Ducasse stephane.ducasse at inria.fr
Thu Nov 25 09:06:43 CET 2010


Over the last few days I've been working on converting
ConfigurationOfOmniBrowser and the configurations it depends upon
(ConfigurationOfRefactoringBrowser, ConfigurationOfShout, and
ConfigurationOfOCompletion) to use symbolic versions.

The results are stashed away in a repository on the Bibliocello site:

http://a-bibliocello.gemstone.com/bibliocello/projects/Pharo/repository/Experiment1/MetacelloRepository

With Metacello 1.0-beta.28 loaded you can execute the following
expression in a PharoCore1.0, PharoCore1.1, or PharoCore1.2 image and
the appropriate versions of OmniBrowser and the supporting proejcts
will be loaded:

(ConfigurationOfOmniBrowser project version: #stable) load: 'Tests'.

So far I have  been using only the 'Tests' group because ... well I
want to verify that the code not only loads, but passes all of the
tests (for the loaded projects) in each image and the results are:

PharoCore1.0:
  1221 run, 1218 passes, 3 expected failures,
    0 failures, 0 errors, 0 unexpected passes
PharoCore1.1:
  1325 run, 1324 passes, 1 expected failures,
    0 failures, 0 errors, 0 unexpected passes
PharoCore1.2:
  814 run, 813 expected passes,
    0 expected failures, 0 failures, 1 errors, 0 unexpected passes,
    and deprecation warnings

For Pharo1.2, OB-Refactory is not loaded, because it doesn't appear to
have been ported to Pharo1.2 yet ...

If you want to look at what I've done you can compare the latest
version of the config with the earliest version of the config in the
repository ... I'll be glad to explain any changes that don't make
sense to you.

All four configs also run clean against the Metacello validator ....

I've developed a set of scripts (in MetacelloToolBox) that I have been
using to automate the process of determining which versions in a
particular configuration load cleanly into an image and if the tests
pass as well (including checking for deprecation warnings). The
following expression when executed in a PharoCore1.0.x image will load
each version in the configuration and run the tests (loading the
'Tests' group if it is defined):

(MetacelloToolBox
	validatePlatformLoad: #'pharo1.0.x' for: 'OmniBrowser') explore.

Right now, that script will automatically update the development and
stable symbolic version definitions as well as mark versions as
#release if the 'Tests' group loads without errors or deprecation
warnings and passes all of the tests (without deprecation warnings).
It also produces an 'issues list' that describes the individual
errors, critical warnings and warnings for each version ... much like
the validator with added information about tests.

I expect to continue working my way through the various configurations
with the goal to automate as much of the validation and analysis as
possible...

Dale









More information about the Pharo-project mailing list