@@ -710,8 +710,7 @@ describe('v8debugapi', function() {
710710 it ( 'should limit string length' , function ( done ) {
711711 var bp = {
712712 id : 'fake-id-124' ,
713- location : { path : 'test-v8debugapi.js' , line : 9 } ,
714- expressions : [ 'hasGetter' ]
713+ location : { path : 'test-v8debugapi.js' , line : 9 }
715714 } ;
716715 var oldMaxLength = config . capture . maxStringLength ;
717716 var oldMaxData = config . capture . maxDataSize ;
@@ -721,8 +720,10 @@ describe('v8debugapi', function() {
721720 assert . ifError ( err ) ;
722721 api . wait ( bp , function ( err ) {
723722 assert . ifError ( err ) ;
724- var hasGetter = bp . evaluatedExpressions [ 0 ] ;
725- var getterVal = bp . variableTable [ hasGetter . varTableIndex ] ;
723+ var hasGetter = bp . stackFrames [ 0 ] . locals . filter ( function ( value ) {
724+ return value . name === 'hasGetter' ;
725+ } ) ;
726+ var getterVal = bp . variableTable [ hasGetter [ 0 ] . varTableIndex ] ;
726727 var stringItems = getterVal . members . filter ( function ( m ) {
727728 return m . value === 'hel...' ;
728729 } ) ;
@@ -732,6 +733,7 @@ describe('v8debugapi', function() {
732733 assert ( item . status . description . format . indexOf ( 'Only first' ) !== - 1 ) ;
733734 assert ( item . status . description . format . indexOf (
734735 'config.capture.maxStringLength=3' ) !== - 1 ) ;
736+ assert ( item . status . description . format . indexOf ( 'of length 11.' ) !== - 1 ) ;
735737
736738 api . clear ( bp ) ;
737739 config . capture . maxDataSize = oldMaxData ;
@@ -745,21 +747,22 @@ describe('v8debugapi', function() {
745747 it ( 'should limit array length' , function ( done ) {
746748 var bp = {
747749 id : 'fake-id-124' ,
748- location : { path : 'test-v8debugapi.js' , line : 5 } ,
749- expressions : [ 'A' ]
750+ location : { path : 'test-v8debugapi.js' , line : 5 }
750751 } ;
751752 var oldMax = config . capture . maxProperties ;
752753 config . capture . maxProperties = 1 ;
753754 api . set ( bp , function ( err ) {
754755 assert . ifError ( err ) ;
755756 api . wait ( bp , function ( err ) {
756757 assert . ifError ( err ) ;
757- var foo = bp . evaluatedExpressions [ 0 ] ;
758- var fooVal = bp . variableTable [ foo . varTableIndex ] ;
758+ var aResults = bp . stackFrames [ 0 ] . locals . filter ( function ( value ) {
759+ return value . name === 'A' ;
760+ } ) ;
761+ var aVal = bp . variableTable [ aResults [ 0 ] . varTableIndex ] ;
759762 // should have 1 element + truncation message.
760- assert . equal ( fooVal . members . length , 2 ) ;
761- assert ( fooVal . members [ 1 ] . name . indexOf ( 'Only first' ) !== - 1 ) ;
762- assert ( fooVal . members [ 1 ] . name . indexOf (
763+ assert . equal ( aVal . members . length , 2 ) ;
764+ assert ( aVal . members [ 1 ] . name . indexOf ( 'Only first' ) !== - 1 ) ;
765+ assert ( aVal . members [ 1 ] . name . indexOf (
763766 'config.capture.maxProperties=1' ) !== - 1 ) ;
764767
765768 api . clear ( bp ) ;
@@ -773,21 +776,22 @@ describe('v8debugapi', function() {
773776 it ( 'should limit object length' , function ( done ) {
774777 var bp = {
775778 id : 'fake-id-124' ,
776- location : { path : 'test-v8debugapi.js' , line : 5 } ,
777- expressions : [ 'B' ]
779+ location : { path : 'test-v8debugapi.js' , line : 5 }
778780 } ;
779781 var oldMax = config . capture . maxProperties ;
780782 config . capture . maxProperties = 1 ;
781783 api . set ( bp , function ( err ) {
782784 assert . ifError ( err ) ;
783785 api . wait ( bp , function ( err ) {
784786 assert . ifError ( err ) ;
785- var foo = bp . evaluatedExpressions [ 0 ] ;
786- var fooVal = bp . variableTable [ foo . varTableIndex ] ;
787+ var bResults = bp . stackFrames [ 0 ] . locals . filter ( function ( value ) {
788+ return value . name === 'B' ;
789+ } ) ;
790+ var bVal = bp . variableTable [ bResults [ 0 ] . varTableIndex ] ;
787791 // should have 1 element + truncation message
788- assert . equal ( fooVal . members . length , 2 ) ;
789- assert ( fooVal . members [ 1 ] . name . indexOf ( 'Only first' ) !== - 1 ) ;
790- assert ( fooVal . members [ 1 ] . name . indexOf (
792+ assert . equal ( bVal . members . length , 2 ) ;
793+ assert ( bVal . members [ 1 ] . name . indexOf ( 'Only first' ) !== - 1 ) ;
794+ assert ( bVal . members [ 1 ] . name . indexOf (
791795 'config.capture.maxProperties=1' ) !== - 1 ) ;
792796
793797 api . clear ( bp ) ;
@@ -798,6 +802,98 @@ describe('v8debugapi', function() {
798802 } ) ;
799803 } ) ;
800804
805+ it ( 'should not limit the length of an evaluated string based on maxStringLength' ,
806+ function ( done ) {
807+ var bp = {
808+ id : 'fake-id-124' ,
809+ location : { path : 'test-v8debugapi.js' , line : 9 } ,
810+ expressions : [ 'hasGetter' ]
811+ } ;
812+ var oldMaxLength = config . capture . maxStringLength ;
813+ var oldMaxData = config . capture . maxDataSize ;
814+ config . capture . maxStringLength = 3 ;
815+ config . capture . maxDataSize = 20000 ;
816+ api . set ( bp , function ( err ) {
817+ assert . ifError ( err ) ;
818+ api . wait ( bp , function ( err ) {
819+ assert . ifError ( err ) ;
820+ var hasGetter = bp . evaluatedExpressions [ 0 ] ;
821+ var getterVal = bp . variableTable [ hasGetter . varTableIndex ] ;
822+ var stringItems = getterVal . members . filter ( function ( m ) {
823+ return m . value === 'hello world' ;
824+ } ) ;
825+ // The property would have value 'hel...' if truncation occured
826+ // resulting in stringItems.length being 0.
827+ assert ( stringItems . length === 1 ) ;
828+
829+ api . clear ( bp ) ;
830+ config . capture . maxDataSize = oldMaxData ;
831+ config . capture . maxStringLength = oldMaxLength ;
832+ done ( ) ;
833+ } ) ;
834+ process . nextTick ( function ( ) { getterObject ( ) ; } ) ;
835+ } ) ;
836+ } ) ;
837+
838+ it ( 'should not limit the length of an evaluated array based on maxProperties' ,
839+ function ( done ) {
840+ var bp = {
841+ id : 'fake-id-124' ,
842+ location : { path : 'test-v8debugapi.js' , line : 5 } ,
843+ expressions : [ 'A' ]
844+ } ;
845+ var oldMaxProps = config . capture . maxProperties ;
846+ var oldMaxData = config . capture . maxDataSize ;
847+ config . capture . maxProperties = 1 ;
848+ config . capture . maxDataSize = 20000 ;
849+ api . set ( bp , function ( err ) {
850+ assert . ifError ( err ) ;
851+ api . wait ( bp , function ( err ) {
852+ assert . ifError ( err ) ;
853+ var foo = bp . evaluatedExpressions [ 0 ] ;
854+ var fooVal = bp . variableTable [ foo . varTableIndex ] ;
855+ // '1', '2', '3', and 'length'
856+ assert . equal ( fooVal . members . length , 4 ) ;
857+ assert . strictEqual ( foo . status , undefined ) ;
858+
859+ api . clear ( bp ) ;
860+ config . capture . maxDataSize = oldMaxData ;
861+ config . capture . maxProperties = oldMaxProps ;
862+ done ( ) ;
863+ } ) ;
864+ process . nextTick ( function ( ) { foo ( 2 ) ; } ) ;
865+ } ) ;
866+ } ) ;
867+
868+ it ( 'should not limit the length of an evaluated object based on maxProperties' ,
869+ function ( done ) {
870+ var bp = {
871+ id : 'fake-id-124' ,
872+ location : { path : 'test-v8debugapi.js' , line : 5 } ,
873+ expressions : [ 'B' ]
874+ } ;
875+ var oldMaxProps = config . capture . maxProperties ;
876+ var oldMaxData = config . capture . maxDataSize ;
877+ config . capture . maxProperties = 1 ;
878+ config . capture . maxDataSize = 20000 ;
879+ api . set ( bp , function ( err ) {
880+ assert . ifError ( err ) ;
881+ api . wait ( bp , function ( err ) {
882+ assert . ifError ( err ) ;
883+ var foo = bp . evaluatedExpressions [ 0 ] ;
884+ var fooVal = bp . variableTable [ foo . varTableIndex ] ;
885+ assert . equal ( fooVal . members . length , 3 ) ;
886+ assert . strictEqual ( foo . status , undefined ) ;
887+
888+ api . clear ( bp ) ;
889+ config . capture . maxDataSize = oldMaxData ;
890+ config . capture . maxProperties = oldMaxProps ;
891+ done ( ) ;
892+ } ) ;
893+ process . nextTick ( function ( ) { foo ( 2 ) ; } ) ;
894+ } ) ;
895+ } ) ;
896+
801897 it ( 'should display an error for an evaluated array beyond maxDataSize' ,
802898 function ( done ) {
803899 var bp = {
0 commit comments