diff --git a/require.js b/require.js index 9147d5833..7e1143223 100644 --- a/require.js +++ b/require.js @@ -1041,6 +1041,13 @@ var require, define; requireWait = context.requireWait; context.requireWait = false; context.require(cfg.priority); + //Trigger a resume right away, for the case when + //the script with the priority load is done as part + //of a data-main call. In that case the normal resume + //call will not happen because the scriptCount will be + //at 1, since the script for data-main is being processed. + resume(); + //Restore previous state. context.requireWait = requireWait; config.priorityWait = cfg.priority; } diff --git a/tests/priority/priority.html b/tests/priority/priority.html index 464c41d94..2f50e9eec 100644 --- a/tests/priority/priority.html +++ b/tests/priority/priority.html @@ -2,67 +2,9 @@ require.js: Priority Test - - +

require.js: Priority Test

diff --git a/tests/priority/priority.js b/tests/priority/priority.js new file mode 100644 index 000000000..7f5e1408c --- /dev/null +++ b/tests/priority/priority.js @@ -0,0 +1,56 @@ +var master = new doh.Deferred(), + count = 0; +doh.register( + "priority", + [ + { + name: "priority", + timeout: 5000, + runTest: function () { + return master; + } + } + ] +); +doh.run(); + +require( + { + baseUrl: "./", + priority: ["one", "two"] + }, + ["alpha", "beta", "gamma", "epsilon"], + function (alpha, beta, gamma, epsilon) { + count += 1; + + //Make sure callback is only called once. + doh.is(1, count); + + doh.is("alpha", alpha.name); + doh.is("beta", alpha.betaName); + doh.is("beta", beta.name); + doh.is("gamma", beta.gammaName); + doh.is("gamma", gamma.name); + doh.is("theta", gamma.thetaName); + doh.is("epsilon", gamma.epsilonName); + doh.is("epsilon", epsilon.name); + } +); + +function verifyFunc() { + var regExp = /alpha|beta|gamma|theta/, + i, + scripts = document.getElementsByTagName("script"); + for (i = scripts.length - 1; i > -1; i--) { + doh.f(regExp.test(scripts[i].src)); + } + master.callback(true); +} + +//Account for requiring this test with a version of require.js that +//does not have require.ready built in. +if (require.ready) { + require.ready(verifyFunc); +} else { + setTimeout(verifyFunc, 3000); +}