@@ -672,6 +672,8 @@ describe('Validator', async () => {
672
672
{ tracer : Constants . TracerType . CallTracer , tracerConfig : { } } ,
673
673
{ tracer : Constants . TracerType . CallTracer } ,
674
674
{ tracerConfig : { onlyTopCall : true } } ,
675
+ // CallTracer config at top level
676
+ { tracer : Constants . TracerType . CallTracer , onlyTopCall : true } ,
675
677
// OpcodeLoggerConfig
676
678
{
677
679
tracer : Constants . TracerType . OpcodeLogger ,
@@ -687,6 +689,16 @@ describe('Validator', async () => {
687
689
{ tracer : Constants . TracerType . OpcodeLogger , tracerConfig : { } } ,
688
690
{ tracer : Constants . TracerType . OpcodeLogger } ,
689
691
{ tracerConfig : { enableMemory : true , disableStack : false , disableStorage : true } } ,
692
+ // OpcodeLogger config at top level
693
+ { tracer : Constants . TracerType . OpcodeLogger , enableMemory : true , disableStack : false , disableStorage : true } ,
694
+ { tracer : Constants . TracerType . OpcodeLogger , enableMemory : true } ,
695
+ { tracer : Constants . TracerType . OpcodeLogger , disableStack : false } ,
696
+ { tracer : Constants . TracerType . OpcodeLogger , disableStorage : true } ,
697
+ // Top level opcodeLogger config without explicit tracer (defaults to opcodeLogger)
698
+ { enableMemory : true , disableStack : false , disableStorage : true } ,
699
+ { enableMemory : true } ,
700
+ { disableStack : false } ,
701
+ { disableStorage : true } ,
690
702
// Empty object
691
703
{ } ,
692
704
] ,
@@ -695,6 +707,51 @@ describe('Validator', async () => {
695
707
input : { tracer : 'invalid' , tracerConfig : { } } ,
696
708
error : expectInvalidParam ( "'tracer' for TracerConfigWrapper" , TYPES . tracerType . error , 'invalid' ) ,
697
709
} ,
710
+ // CallTracer config properties with wrong tracer type
711
+ {
712
+ input : { tracer : Constants . TracerType . OpcodeLogger , onlyTopCall : true } ,
713
+ error : expectInvalidParam (
714
+ 1 ,
715
+ 'callTracer config properties for TracerConfigWrapper are only valid when tracer=callTracer' ,
716
+ ) ,
717
+ } ,
718
+ {
719
+ input : { onlyTopCall : true } , // defaults to opcodeLogger
720
+ error : expectInvalidParam (
721
+ 1 ,
722
+ 'callTracer config properties for TracerConfigWrapper are only valid when tracer=callTracer' ,
723
+ ) ,
724
+ } ,
725
+ // OpcodeLogger config properties with wrong tracer type
726
+ {
727
+ input : { tracer : Constants . TracerType . CallTracer , enableMemory : true } ,
728
+ error : expectInvalidParam (
729
+ 1 ,
730
+ 'opcodeLogger config properties for TracerConfigWrapper are only valid when tracer=opcodeLogger' ,
731
+ ) ,
732
+ } ,
733
+ {
734
+ input : { tracer : Constants . TracerType . CallTracer , disableStack : false } ,
735
+ error : expectInvalidParam (
736
+ 1 ,
737
+ 'opcodeLogger config properties for TracerConfigWrapper are only valid when tracer=opcodeLogger' ,
738
+ ) ,
739
+ } ,
740
+ // Both top-level and nested config
741
+ {
742
+ input : { enableMemory : true , tracerConfig : { disableStack : false } } ,
743
+ error : expectInvalidParam (
744
+ 1 ,
745
+ "Cannot specify tracer config properties both at top level and in 'tracerConfig' for TracerConfigWrapper" ,
746
+ ) ,
747
+ } ,
748
+ {
749
+ input : { tracer : Constants . TracerType . CallTracer , onlyTopCall : true , tracerConfig : { onlyTopCall : false } } ,
750
+ error : expectInvalidParam (
751
+ 1 ,
752
+ "Cannot specify tracer config properties both at top level and in 'tracerConfig' for TracerConfigWrapper" ,
753
+ ) ,
754
+ } ,
698
755
{
699
756
input : { tracer : Constants . TracerType . CallTracer , tracerConfig : { onlyTopCall : 'invalid' } } ,
700
757
error : expectInvalidParam (
0 commit comments