diff options
| author | Vojta Jina | 2012-08-30 14:42:46 -0700 | 
|---|---|---|
| committer | Vojta Jina | 2012-08-30 15:18:09 -0700 | 
| commit | 1a8642aac2de40dccdab464e58dc164006c300bb (patch) | |
| tree | a2fe77da762c82400a254a2cde32ca29db6ca4ce /src/ngMock | |
| parent | 8114d55a153b1e27ca0bd53aa97a175c925b7c1f (diff) | |
| download | angular.js-1a8642aac2de40dccdab464e58dc164006c300bb.tar.bz2 | |
fix(mocks): free up memory after every spec
Diffstat (limited to 'src/ngMock')
| -rw-r--r-- | src/ngMock/angular-mocks.js | 28 | 
1 files changed, 25 insertions, 3 deletions
| diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 9fec9710..4b12a097 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1591,9 +1591,29 @@ window.jasmine && (function(window) {    afterEach(function() {      var spec = getCurrentSpec(); +    var injector = spec.$injector; +      spec.$injector = null;      spec.$modules = null; + +    if (injector) { +      injector.get('$rootElement').unbind(); +      injector.get('$browser').pollFns.length = 0; +    } +      angular.mock.clearDataCache(); + +    // clean up jquery's fragment cache +    angular.forEach(angular.element.fragments, function(val, key) { +      delete angular.element.fragments[key]; +    }); + +    MockXhr.$$lastInstance = null; + +    angular.forEach(angular.callbacks, function(val, key) { +      delete angular.callbacks[key]; +    }); +    angular.callbacks.counter = 0;    });    function getCurrentSpec() { @@ -1694,7 +1714,7 @@ window.jasmine && (function(window) {     */    window.inject = angular.mock.inject = function() {      var blockFns = Array.prototype.slice.call(arguments, 0); -    var stack = new Error('Declaration Location').stack; +    var errorForStack = new Error('Declaration Location');      return isSpecRunning() ? workFn() : workFn;      /////////////////////      function workFn() { @@ -1710,10 +1730,12 @@ window.jasmine && (function(window) {          try {            injector.invoke(blockFns[i] || angular.noop, this);          } catch (e) { -          if(e.stack) e.stack +=  '\n' + stack; +          if(e.stack) e.stack +=  '\n' + errorForStack.stack;            throw e; +        } finally { +          errorForStack = null;          }        }      } -  } +  };  })(window); | 
