diff --git a/packages/tinytest/tinytest_client.js b/packages/tinytest/tinytest_client.js index a53885f73b..5c07a4a487 100644 --- a/packages/tinytest/tinytest_client.js +++ b/packages/tinytest/tinytest_client.js @@ -35,13 +35,15 @@ Meteor._runTestsEverywhere = function (onReport, onComplete) { } }); - Meteor.subscribe(Meteor._ServerTestResultsSubscription, runId); + var handle = Meteor.subscribe(Meteor._ServerTestResultsSubscription, runId); Meteor.call('tinytest/run', runId, function (error, result) { if (error) // XXX better report error throw new Error("Test server returned an error"); remoteComplete = true; + handle.stop(); + Meteor.call('tinytest/clearResults', runId); maybeDone(); }); }; diff --git a/packages/tinytest/tinytest_server.js b/packages/tinytest/tinytest_server.js index 2c9636e29f..b7d274448f 100644 --- a/packages/tinytest/tinytest_server.js +++ b/packages/tinytest/tinytest_server.js @@ -48,17 +48,21 @@ }; var onComplete = function() { - _.each(handlesForRun[runId], function (handle) { - handle.stop(); - }); - delete handlesForRun[runId]; - delete reportsForRun[runId]; future.ret(); }; Meteor._runTests(onReport, onComplete); future.wait(); + }, + 'tinytest/clearResults': function (runId) { + _.each(handlesForRun[runId], function (handle) { + // XXX this doesn't actually notify the client that it has been + // unsubscribed. + handle.stop(); + }); + delete handlesForRun[runId]; + delete reportsForRun[runId]; } }); }());