visionmedia / expresso

use mocha
http://visionmedia.github.com/expresso
759 stars 89 forks source link

Fixes having to hit CTRL + C when doing serial tests with Socket.io #148

Open ignacioiglesias opened 13 years ago

ignacioiglesias commented 13 years ago

I was doing some tests using Socket.io and even though everything ran okay except that I had to manually exit Expresso using ctrl + c.

I tried using process.exit inside the else block but that would cause Expresso to output Failure: Only 1 of 3 suites have been started. Using a timeout seems to fix it despite the fact that I'm using 0 as time. Not really sure how this works, but it does :)

Edit: The first answer of "Why does setTimeout(fn, 0) sometimes help?" provides a good explanation.

BTW, this it my first push request, I hope it helps.

AutomatedTester commented 12 years ago

Hi,

When do we think this pull request will be merged, as well as a release? Currently this bug is blocking me from using expresso in a CI because it locks the worker up. See http://travis-ci.org/#!/AutomatedTester/powerball-platform/builds as an example

michaelklishin commented 12 years ago

Like @AutomatedTester has said, this is a pretty annoying issue for us at travis-ci.org. Some otherwise good test suites may take up to 10-30 minutes (depending on the timeout value) to be killed after they get stuck because of this bug.

ignacioiglesias commented 12 years ago

Hey guys, just out of curiosity which versions of Node are you using?

tj commented 12 years ago

it's not really a bug, it's just an event-loop gotcha. It can only be "fixed" if we specify that each test is done and then exit manually. the successor to expresso does this

ignacioiglesias commented 12 years ago

Is that successor the beforeExit or next argument that is provided when using --serial?

AutomatedTester commented 12 years ago

I am using Node 4.12 as that was the stable version up to a couple weeks ago.

On Thu, Nov 10, 2011 at 11:21 PM, Juan Ignacio Iglesias < reply@reply.github.com>wrote:

Hey guys, just out of curiosity which versions of Node are you using?


Reply to this email directly or view it on GitHub: https://github.com/visionmedia/expresso/pull/148#issuecomment-2702838

tj commented 12 years ago

expresso doesn't make you notify it when you're done (unfortunately) so we can't really auto-exit unless we add that and everyone updates all the tests. I'll release mocha soon when I have some time to finish it, there's an interface very similar to expresso so if anyone wants to migrate it should be pretty painless

ignacioiglesias commented 12 years ago

Uhm, not sure if I understood… My thought was that I told expresso that my test had finished by calling that beforeExit or next argument; therefore, once expresso had ran out of files (in line 792) it would finish the process.

tj commented 12 years ago

beforeExit doesn't really help but yeah when --serial next() is enough, but not when running parallel

ignacioiglesias commented 12 years ago

Sorry for my late answer.

I think that the problem was having to hit CTRL + C when testing in --serial mode. Even though I was calling next() when finished, I'd still had to manually exit.

Of course that, without --serial, next() will not be available; but I thought this could be useful to fix at least part of this gotcha.

Anyway, feel free to close this :)

Thanks for your help, TJ!