On Thu, Jan 19, 2017 at 06:46:22PM +0100, Stephane Ducasse wrote:
> I would love to get a functionality that dynamically removes from my code
> all the self halt that are encountered during test execution.
> This way I will not need to run the test, walk the stack, edit the code and
> retart the process.
> 
> It would be really cool

You mean to _permanently_ remove them after the test passed, or just 
temporarily disable them during the execution?

The latter can be done with MetaLinks, e.g.:

Something>>add: aNumber to: anotherNumber
        self halt.
        ^ anotherNumber + aNumber

SomethingTest>>testAddTo
        self assert: (Something new add: 4 to: 10) equals: 14

SomethingTest>>setUp
        | halts |
        super setUp.
        halts := (Something >> #add:to:) ast sendNodes select: [ :each | each 
selector = #halt ].
        link := MetaLink new control: #instead.
        halts do: [ :each | each link: link ].

SomethingTest>>tearDown
        super tearDown.
        link uninstall

Now if I call the method by hand it will halt, but the test will skip the halts.

Peter

Reply via email to