diff options
| author | Misko Hevery | 2012-05-23 14:49:01 -0700 |
|---|---|---|
| committer | Misko Hevery | 2012-05-23 16:01:20 -0700 |
| commit | 989446eceee697b15ecb5df1f491dfbcff352256 (patch) | |
| tree | d9b22e53d9014924019f17c9fe3b2b5d85838592 /test | |
| parent | 5214c1d0cbd8473e1f5dd3894f1fcbecd89bc8af (diff) | |
| download | angular.js-989446eceee697b15ecb5df1f491dfbcff352256.tar.bz2 | |
fix($rootScope): TTL exception does not clear $$phase
When $digest() throws infinite digest exception it
does not properly clear the $phase leaving the scope
in an inconsistent state.
Closes #979
Diffstat (limited to 'test')
| -rw-r--r-- | test/ng/rootScopeSpec.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/ng/rootScopeSpec.js b/test/ng/rootScopeSpec.js index 9d343b08..934541c1 100644 --- a/test/ng/rootScopeSpec.js +++ b/test/ng/rootScopeSpec.js @@ -210,6 +210,8 @@ describe('Scope', function() { '["a; newVal: 98; oldVal: 97","b; newVal: 99; oldVal: 98"],' + '["a; newVal: 99; oldVal: 98","b; newVal: 100; oldVal: 99"],' + '["a; newVal: 100; oldVal: 99","b; newVal: 101; oldVal: 100"]]'); + + expect($rootScope.$$phase).toBeNull(); }); }); @@ -492,6 +494,27 @@ describe('Scope', function() { }); + it('should log exceptions from $digest', function() { + module(function($rootScopeProvider, $exceptionHandlerProvider) { + $rootScopeProvider.digestTtl(2); + $exceptionHandlerProvider.mode('log'); + }); + inject(function($rootScope, $exceptionHandler) { + $rootScope.$watch('a', function() {$rootScope.b++;}); + $rootScope.$watch('b', function() {$rootScope.a++;}); + $rootScope.a = $rootScope.b = 0; + + expect(function() { + $rootScope.$apply(); + }).toThrow(); + + expect($exceptionHandler.errors[0]).toBeDefined(); + + expect($rootScope.$$phase).toBeNull(); + }); + }); + + describe('exceptions', function() { var log; beforeEach(module(function($exceptionHandlerProvider) { |
