hpi-swa / smalltalkCI

Framework for testing Smalltalk projects with GitHub Actions, GitLab CI, Travis CI, AppVeyor, and others.
MIT License
94 stars 68 forks source link

Warnings abort builds on Squeak trunk #439

Open j4yk opened 5 years ago

j4yk commented 5 years ago

Seems like something has changed and now builds fail when the tests signal warnings:

https://travis-ci.org/hpi-swa/Squot/builds/586848878

fniephaus commented 5 years ago

I don't understand what's going on. What's the new failure that you're are seeing? I know that Metacello was recently updated plus trunk changes rapidly at the moment.

j4yk commented 5 years ago

The tests in this build signal Warnings, it has been like that for a while now. When you look at the build I linked to, you will see that the Trunk builds fail, while the Squeak 5.2 builds don't. The Trunk builds stop when the Warning is signalled, the Squeak 5.2 builds don't.

Maybe something has changed in Squeak trunk that prevents smalltalkCI from continuing/ignoring warnings?

j4yk commented 5 years ago

Also note that this is not related to Metacello: the issue arises while the tests are being run, so Metacello has no dealings with it anymore at this point.

fniephaus commented 5 years ago

You are referring to this warning, right? I wouldn't be surprised if this is a side-effect of the recent TestCase changes that @marceltaeumel pushed. Will debug this when I have some time...

j4yk commented 5 years ago

Correct. But now I noticed that further tests run after the warning, but then it suddenly stops: https://travis-ci.org/hpi-swa/Squot/jobs/586848883#L453

So maybe it is not related to the warning after all... in more recent builds the VM even crashed with "Illegal instruction" or "Segmentation fault" when one of the tests ran into a timeout. But I don't know whether this is another issue or connected to this one.

theseion commented 4 years ago

I'm running into the same issue. From what I've figured out the problem arises from a change to UnhandledWarning, which used to be implemented like this (Squeak 5.2):

  ^ ToolSet
    debugContext: self exception signalerContext
    label: 'Warning'
    contents: self exception messageText , '\\Select Proceed to continue, or close this window to cancel the operation.' withCRs

And in 5.3 looks like this:

  ^ (Smalltalk classNamed: #ToolSet)
    ifNotNil: [:ts | ts handleWarning: self exception]
    ifNil: ["Ignore like a Notification." nil]

The two methods do very different things when using CommandLineToolSet, in the former case the warning is logged and execution continues, in the latter the warning is logged and then the image is quit forcibly.

I suggest that SmalltalkCI supply its own ToolSet class for overriding the behaviour of CommandLineToolSet for warnings.

BTW, the warnings that I'm concerned with are dependency load warnings from MC that Metacello does not intercept for some reason.