qunit: Remove redundant conditional for sandbox teardown
authorTimo Tijhof <krinklemail@gmail.com>
Sat, 8 Jul 2017 00:35:26 +0000 (17:35 -0700)
committerKrinkle <krinklemail@gmail.com>
Mon, 17 Jul 2017 20:25:11 +0000 (20:25 +0000)
Follows-up 0a208911a257, which added support for the `executeNow`
parameter to QUnit.module.

To properly support nested modules, we also need to skip registering
a second setup and teardown because nested modules already run the
beforeEach (setup), and afterEach (teardown), of their parent modules.

During setup this would needlessly create two sandboxes and override
the 'sandbox' property on the same 'this' context object. During
teardown it would fail because the inner module's teardown would
have already torn down the sandbox.

Change-Id: Ib17bbbef45b2bd0247979cf0fa8aed17800c54a0

tests/qunit/data/testrunner.js

index d7da5a0..f023ddd 100644 (file)
                var orgModule = QUnit.module;
 
                QUnit.module = function ( name, localEnv, executeNow ) {
+                       if ( QUnit.config.moduleStack.length ) {
+                               // When inside a nested module, don't add our Sinon
+                               // setup/teardown a second time.
+                               return orgModule.apply( this, arguments );
+                       }
+
                        if ( arguments.length === 2 && typeof localEnv === 'function' ) {
                                executeNow = localEnv;
                                localEnv = undefined;
@@ -85,9 +91,7 @@
                                                localEnv.teardown.call( this );
                                        }
 
-                                       if ( this.sandbox ) {
-                                               this.sandbox.verifyAndRestore();
-                                       }
+                                       this.sandbox.verifyAndRestore();
                                }
                        }, executeNow );
                };