@@ -35,11 +35,10 @@ async Task<VerifyResult> VerifyInner(object? root, Func<Task>? cleanup, IEnumera
3535 async Task < ( Func < Task > cleanup , List < StringOrStream > stringOrStreams ) > ProcessTargets ( object ? root , Func < Task > ? cleanup , IEnumerable < Target > targets , bool doExtensionConversion , bool ignoreNullRoot )
3636 {
3737 var resultTargets = new List < Target > ( ) ;
38- if ( TryGetRootTarget ( root , ignoreNullRoot , out var rootTarget ) )
38+ if ( ignoreNullRoot && root == null )
3939 {
40- resultTargets . Add ( rootTarget . Value ) ;
40+ targets = [ new ( ( object ? ) null , settings . TxtOrJson , null ) , .. targets ] ;
4141 }
42-
4342 cleanup ??= ( ) => Task . CompletedTask ;
4443
4544 List < Target > list = [ ..targets , ..VerifierSettings . GetFileAppenders ( settings ) ] ;
@@ -76,6 +75,39 @@ async Task<VerifyResult> VerifyInner(object? root, Func<Task>? cleanup, IEnumera
7675
7776 resultTargets . AddRange ( list ) ;
7877
78+ var appends = VerifierSettings . GetJsonAppenders ( settings ) ;
79+ var hasAppends = appends . Count > 0 ;
80+ if ( hasAppends )
81+ {
82+ var resultTarget = resultTargets [ 0 ] ;
83+ if ( resultTarget . IsStream )
84+ {
85+ var target = new Target ( new InfoBuilder ( ignoreNullRoot , null , appends ) , settings . TxtOrJson ) ;
86+ resultTargets . Insert ( 0 , target ) ;
87+ }
88+ else if ( resultTarget . IsString )
89+ {
90+ var stringData = resultTarget . stringBuilderData ! ;
91+ string stringRoot ;
92+ if ( stringData . Length == 0 )
93+ {
94+ stringRoot = "emptyString" ;
95+ }
96+ else
97+ {
98+ stringRoot = stringData . ToString ( ) ;
99+ }
100+
101+ var target = new Target ( new InfoBuilder ( false , stringRoot , appends ) , settings . TxtOrJson ) ;
102+ resultTargets . Insert ( 0 , target ) ;
103+ }
104+ else
105+ {
106+ var target = new Target ( new InfoBuilder ( ignoreNullRoot , resultTarget . objectData ! , appends ) , settings . TxtOrJson ) ;
107+ resultTargets . Insert ( 0 , target ) ;
108+ }
109+ }
110+
79111 foreach ( var target in resultTargets )
80112 {
81113 if ( target . TryGetStringBuilder ( out var builder ) )
@@ -108,40 +140,4 @@ async Task<VerifyResult> VerifyInner(object? root, Func<Task>? cleanup, IEnumera
108140 . ToList ( ) ;
109141 return ( cleanup , stringOrStreams ) ;
110142 }
111-
112- bool TryGetRootTarget ( object ? root , bool ignoreNullRoot , [ NotNullWhen ( true ) ] out Target ? target )
113- {
114- var appends = VerifierSettings . GetJsonAppenders ( settings ) ;
115-
116- var hasAppends = appends . Count > 0 ;
117-
118- if ( ignoreNullRoot && root == null && ! hasAppends )
119- {
120- target = null ;
121- return false ;
122- }
123-
124- if ( root is string stringRoot )
125- {
126- stringRoot = stringRoot . TrimPreamble ( ) ;
127- if ( stringRoot . Length == 0 )
128- {
129- stringRoot = "emptyString" ;
130- }
131-
132- if ( hasAppends )
133- {
134- target = new ( new InfoBuilder ( false , stringRoot , appends ) , settings . TxtOrJson ) ;
135- }
136- else
137- {
138- target = new ( "txt" , new StringBuilder ( stringRoot ) ) ;
139- }
140-
141- return true ;
142- }
143-
144- target = new ( new InfoBuilder ( ignoreNullRoot , root , appends ) , settings . TxtOrJson ) ;
145- return true ;
146- }
147143}
0 commit comments