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);
+}