From a2fd9aa27af210eac67c0e81ffb848628776a45f Mon Sep 17 00:00:00 2001 From: Avital Oliver Date: Tue, 16 Feb 2016 17:50:33 -0800 Subject: [PATCH] Set Meteor.isTest before running app code --- tools/isobuild/linker.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tools/isobuild/linker.js b/tools/isobuild/linker.js index 7f76aa2b2e..4e72ce3922 100644 --- a/tools/isobuild/linker.js +++ b/tools/isobuild/linker.js @@ -961,12 +961,13 @@ export var fullLink = Profile("linker.fullLink", function (inputFiles, { var prelinkedFiles = module.getPrelinkedFiles(); // are we running `meteor test-app` or `meteor test-packages`? - // Include a short code snippet that calls `runTests`. + // Include a short code snippet that sets `Meteor.isTest` and calls + // `runTests`. if (global.testCommandMetadata) { var weAreLinkingTheApp = (name === null); if (weAreLinkingTheApp) { - prelinkedFiles.push({ - source: getRunTestsSource(), + prelinkedFiles.unshift({ + source: getTestPreamble(), servePath: "/packages/runTests.js" }); } @@ -1055,7 +1056,7 @@ export var fullLink = Profile("linker.fullLink", function (inputFiles, { }); }); -function getRunTestsSource() { +function getTestPreamble() { const testDriverPackageName = global.testCommandMetadata.driverPackage; let setMeteorIntegrationOrUnitTest = ""; @@ -1066,21 +1067,20 @@ function getRunTestsSource() { } return `\ -setTimeout(function() { - var testDriverPackage = Package[\"${testDriverPackageName}\"]; - if (!testDriverPackage) { - throw new Error(\"Can\'t find test driver package: ${testDriverPackageName}\"); - } +if (Package.meteor.Meteor.isClient) { + Package.meteor.Meteor.isTest = true; + ${setMeteorIntegrationOrUnitTest} + + Package.meteor.Meteor.startup(function() { + var testDriverPackage = Package[\"${testDriverPackageName}\"]; + if (!testDriverPackage) { + throw new Error(\"Can\'t find test driver package: ${testDriverPackageName}\"); + } - // Only run on browser where runTests is defined. Not sure why - // \`Meteor\` is undefined on the server here. - if (Package.meteor.Meteor.isClient) { - Package.meteor.Meteor.isTest = true; - ${setMeteorIntegrationOrUnitTest} if (!testDriverPackage.runTests) { throw new Error("Test driver package ${testDriverPackageName} missing \`runTests\` export"); } testDriverPackage.runTests(); - } -}, 0);`; + }); +}`; }