@@ -43,6 +43,14 @@ function isEdge14() {
43
43
return window . navigator . userAgent . indexOf ( 'Edge/14' ) !== - 1 ;
44
44
}
45
45
46
+ // Thanks for nothing IE!
47
+ // (╯°□°)╯︵ ┻━┻
48
+ function canReadFunctionName ( ) {
49
+ function foo ( ) { }
50
+ if ( foo . name === 'foo' ) return true ;
51
+ return false ;
52
+ }
53
+
46
54
describe ( 'integration' , function ( ) {
47
55
this . timeout ( 30000 ) ;
48
56
@@ -619,10 +627,19 @@ describe('integration', function() {
619
627
} ,
620
628
function ( ) {
621
629
var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
630
+
631
+ var fn = ravenData . exception . mechanism . data . function ;
632
+ delete ravenData . exception . mechanism . data ;
633
+
634
+ if ( canReadFunctionName ( ) ) {
635
+ assert . equal ( fn , 'setTimeout' ) ;
636
+ } else {
637
+ assert . equal ( fn , '<anonymous>' ) ;
638
+ }
639
+
622
640
assert . deepEqual ( ravenData . exception . mechanism , {
623
641
type : 'instrument' ,
624
- handled : true ,
625
- data : { function : 'setTimeout' }
642
+ handled : true
626
643
} ) ;
627
644
}
628
645
) ;
@@ -652,13 +669,25 @@ describe('integration', function() {
652
669
} ,
653
670
function ( ) {
654
671
var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
672
+
673
+ var handler = ravenData . exception . mechanism . data . handler ;
674
+ delete ravenData . exception . mechanism . data . handler ;
675
+ var target = ravenData . exception . mechanism . data . target ;
676
+ delete ravenData . exception . mechanism . data . target ;
677
+
678
+ if ( canReadFunctionName ( ) ) {
679
+ assert . equal ( handler , 'namedFunction' ) ;
680
+ } else {
681
+ assert . equal ( handler , '<anonymous>' ) ;
682
+ }
683
+
684
+ // IE vs. Rest of the world
685
+ assert . oneOf ( target , [ 'Node' , 'EventTarget' ] ) ;
655
686
assert . deepEqual ( ravenData . exception . mechanism , {
656
687
type : 'instrument' ,
657
688
handled : true ,
658
689
data : {
659
- function : 'addEventListener' ,
660
- handler : 'namedFunction' ,
661
- target : 'EventTarget'
690
+ function : 'addEventListener'
662
691
}
663
692
} ) ;
664
693
}
@@ -689,13 +718,18 @@ describe('integration', function() {
689
718
} ,
690
719
function ( ) {
691
720
var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
721
+
722
+ var target = ravenData . exception . mechanism . data . target ;
723
+ delete ravenData . exception . mechanism . data . target ;
724
+
725
+ // IE vs. Rest of the world
726
+ assert . oneOf ( target , [ 'Node' , 'EventTarget' ] ) ;
692
727
assert . deepEqual ( ravenData . exception . mechanism , {
693
728
type : 'instrument' ,
694
729
handled : true ,
695
730
data : {
696
731
function : 'addEventListener' ,
697
- handler : '<anonymous>' ,
698
- target : 'EventTarget'
732
+ handler : '<anonymous>'
699
733
}
700
734
} ) ;
701
735
}
0 commit comments