Open timfel opened 12 years ago
Back when MagLev 1.0 was released, Allen had a modified version of spec/rubyspec that worked around some hang problems. Although they're a bit out of date you might look at those "allen" branches to see what he modified, i.e. https://github.com/MagLev/rubyspec/tree/allen and https://github.com/MagLev/mspec/tree/allen
Allen may have used other tricks to speed things up, like committing mspec before running tests. Ask if you need help.
In the master branch, on line 521 of RubyContext.gs you'll see _runPassingSpecs, which is what Allen used to run specs from smalltalk, stopping at a topaz prompt when an error was encountered.
https://github.com/MagLev/maglev/blob/master/src/smalltalk/ruby/mcz/RubyContext.gs
How to load mspec and commit it from topaz
set user DataCurator pass swordfish
login
time
run
| ctx |
"uncomment next line for certain kinds of debugging of exception problems"
"Exception installDebugBlock: [:ex| ex class ~~ RubyThrowException ifTrue:[ nil pause]]. "
SessionTemps current
at: #MagRpDEBUG put: 1 .
ctx := RubyContext load: #( ) . "traceLoad logSexp allIvsDynamic"
ctx env: 1 persistentDo:[
ctx _loadMspec: 1 .
(Object transientNameSpace: 1) at: #DEBUG_SPEC runtimePut: true .
System commitTransaction ifFalse:[ nil error:'commit fail' ].
].
true
%
How to run specs from topaz. I'll have to dig up a passingspecs.conf.allen for you.
logout
login
run
SessionTemps current
at: #MagRpDEBUG put: 0 ;
at:#Maglev_ruby_debugFlag put: true .
RubyContext _runPassingSpecs: 'passingspecs.conf.allen'
verbose: false options: #() env: 1 .
System _sharedCounter: 1 incrementBy: 0 "returns number of specs executed"
%
The conf files are in
HPI-GSS/tests/rubytst/passingspecs.conf HPI-GSS/tests/rubytst/passingspecs.conf.allen
This data could prove useful, but YMMV as this mechanism has not been kept in sync with rake spec:ci. rake spec:ci should be more up to date and have higher precedence.
Specs have been hanging at HPI-GSS-BuildEnv/git/spec/rubyspec/core/io/pipe_spec.rb since the IO.popen patches went in.