@@ -143,7 +143,7 @@ private string WriteApiListFromSourceCode(
143143 var sb = new StringBuilder ( ) ;
144144 var writer = new ApiListWriter ( new StringWriter ( sb ) , assm , arg ) ;
145145
146- writer . WriteAssemblyInfoHeader ( ) ;
146+ writer . WriteHeader ( ) ;
147147 writer . WriteExportedTypes ( ) ;
148148 writer . WriteFooter ( ) ;
149149
@@ -225,8 +225,8 @@ string[] expectedUsingDirectives
225225 var options = new ApiListWriterOptions ( ) ;
226226
227227 options . Writer . WriteNullableAnnotationDirective = false ;
228- options . Writer . WriteEmbeddedResources = false ;
229- options . Writer . WriteReferencedAssemblies = false ;
228+ options . Writer . WriteHeader = false ;
229+ options . Writer . WriteFooter = false ;
230230
231231 var usingDirectives = new StringReader ( WriteApiListFromSourceCode ( sourceCode , options ) )
232232 . ReadAllLines ( )
@@ -276,15 +276,13 @@ string expectedOutput
276276 var options = new ApiListWriterOptions ( ) ;
277277
278278 options . Writer . WriteNullableAnnotationDirective = false ;
279- options . Writer . WriteEmbeddedResources = false ;
280- options . Writer . WriteReferencedAssemblies = false ;
279+ options . Writer . WriteHeader = false ;
280+ options . Writer . WriteFooter = false ;
281281
282282 var output =
283283 string . Join (
284284 "\n " ,
285- new StringReader ( WriteApiListFromSourceCode ( sourceCode , options ) )
286- . ReadAllLines ( )
287- . Where ( static line => ! line . StartsWith ( "// " , StringComparison . Ordinal ) ) // remove header
285+ new StringReader ( WriteApiListFromSourceCode ( sourceCode , options ) ) . ReadAllLines ( )
288286 ) ;
289287
290288 Assert . AreEqual (
@@ -359,8 +357,8 @@ string expectedOutput
359357 var options = new ApiListWriterOptions ( ) ;
360358
361359 options . Writer . WriteNullableAnnotationDirective = writeNullableAnnotationDirective ;
362- options . Writer . WriteEmbeddedResources = false ;
363- options . Writer . WriteReferencedAssemblies = false ;
360+ options . Writer . WriteHeader = false ;
361+ options . Writer . WriteFooter = false ;
364362
365363 options . TypeDeclaration . NullabilityInfoContext = typeDeclarationNullabilityInfoContext ;
366364 options . MemberDeclaration . NullabilityInfoContext = memberDeclarationNullabilityInfoContext ;
@@ -369,9 +367,7 @@ string expectedOutput
369367 var output =
370368 string . Join (
371369 "\n " ,
372- new StringReader ( WriteApiListFromSourceCode ( sourceCode , options ) )
373- . ReadAllLines ( )
374- . Where ( static line => ! line . StartsWith ( "// " , StringComparison . Ordinal ) ) // remove header
370+ new StringReader ( WriteApiListFromSourceCode ( sourceCode , options ) ) . ReadAllLines ( )
375371 ) ;
376372
377373 Assert . AreEqual (
@@ -381,7 +377,7 @@ string expectedOutput
381377 }
382378#endif // SYSTEM_REFLECTION_NULLABILITYINFOCONTEXT
383379
384- private static System . Collections . IEnumerable YieldTestCases_WriteAssemblyInfoHeader ( )
380+ private static System . Collections . IEnumerable YieldTestCases_WriteHeader_WriteAssemblyInfo ( )
385381 {
386382 yield return new object [ ] {
387383 @"
@@ -396,6 +392,7 @@ private static System.Collections.IEnumerable YieldTestCases_WriteAssemblyInfoHe
396392 typeof ( AssemblyInformationalVersionAttribute ) . Assembly . GetName ( ) . Name + ".dll" ,
397393 typeof ( System . Runtime . Versioning . TargetFrameworkAttribute ) . Assembly . GetName ( ) . Name + ".dll" ,
398394 } ,
395+ true ,
399396 @"// (Product)
400397// Name: TestCase1Assembly
401398// AssemblyVersion: 1.2.3.4
@@ -408,26 +405,38 @@ private static System.Collections.IEnumerable YieldTestCases_WriteAssemblyInfoHe
408405 @"// empty assembly" ,
409406 "TestCase2Assembly" ,
410407 null ! ,
408+ true ,
411409 "// ()\n " +
412410 "// Name: TestCase2Assembly\n " +
413411 "// AssemblyVersion: 0.0.0.0\n " +
414412 "// InformationalVersion: \n " +
415413 "// TargetFramework: \n " +
416414 "// Configuration: \n "
417415 } ;
416+
417+ yield return new object [ ] {
418+ @"// empty assembly" ,
419+ "TestCase3Assembly" ,
420+ null ! ,
421+ false ,
422+ string . Empty
423+ } ;
418424 }
419425
420- [ TestCaseSource ( nameof ( YieldTestCases_WriteAssemblyInfoHeader ) ) ]
421- public void WriteAssemblyInfoHeader (
426+ [ TestCaseSource ( nameof ( YieldTestCases_WriteHeader_WriteAssemblyInfo ) ) ]
427+ public void WriteHeader_WriteAssemblyInfo (
422428 string sourceCode ,
423429 string assemblyName ,
424430 string [ ] referenceAssemblyFileNames ,
431+ bool writeAssemblyInfo ,
425432 string expectedOutput
426433 )
427434 {
428435 var options = new ApiListWriterOptions ( ) ;
429436
430437 options . Writer . WriteNullableAnnotationDirective = false ;
438+ options . Writer . WriteHeader = true ;
439+ options . Writer . WriteAssemblyInfo = writeAssemblyInfo ;
431440 options . Writer . WriteEmbeddedResources = false ;
432441 options . Writer . WriteReferencedAssemblies = false ;
433442 options . Writer . WriteFooter = false ;
@@ -443,7 +452,7 @@ string expectedOutput
443452 ) ;
444453 }
445454
446- private static System . Collections . IEnumerable YieldTestCases_WriteEmbeddedResources ( )
455+ private static System . Collections . IEnumerable YieldTestCases_WriteHeader_WriteEmbeddedResources ( )
447456 {
448457 foreach ( var writeEmbeddedResources in new [ ] { true , false } ) {
449458 yield return new object [ ] {
@@ -474,8 +483,8 @@ private static System.Collections.IEnumerable YieldTestCases_WriteEmbeddedResour
474483 }
475484 }
476485
477- [ TestCaseSource ( nameof ( YieldTestCases_WriteEmbeddedResources ) ) ]
478- public void WriteEmbeddedResources (
486+ [ TestCaseSource ( nameof ( YieldTestCases_WriteHeader_WriteEmbeddedResources ) ) ]
487+ public void WriteHeader_WriteEmbeddedResources (
479488 bool writeEmbeddedResources ,
480489 IEnumerable < ResourceDescription > manifestResources ,
481490 string expectedEmbeddedResourcesOutput
@@ -484,6 +493,8 @@ string expectedEmbeddedResourcesOutput
484493 var options = new ApiListWriterOptions ( ) ;
485494
486495 options . Writer . WriteNullableAnnotationDirective = false ;
496+ options . Writer . WriteHeader = true ;
497+ options . Writer . WriteAssemblyInfo = false ;
487498 options . Writer . WriteEmbeddedResources = writeEmbeddedResources ;
488499 options . Writer . WriteReferencedAssemblies = false ;
489500
@@ -510,13 +521,15 @@ string expectedEmbeddedResourcesOutput
510521 }
511522
512523 [ Test ]
513- public void WriteEmbeddedResources_HasNoEmbeddedResources (
524+ public void WriteHeader_WriteEmbeddedResources_HasNoEmbeddedResources (
514525 [ Values ( true , false ) ] bool writeEmbeddedResources
515526 )
516527 {
517528 var options = new ApiListWriterOptions ( ) ;
518529
519530 options . Writer . WriteNullableAnnotationDirective = false ;
531+ options . Writer . WriteHeader = true ;
532+ options . Writer . WriteAssemblyInfo = false ;
520533 options . Writer . WriteEmbeddedResources = writeEmbeddedResources ;
521534 options . Writer . WriteReferencedAssemblies = false ;
522535
@@ -530,7 +543,7 @@ public void WriteEmbeddedResources_HasNoEmbeddedResources(
530543 ) ;
531544 }
532545
533- private static System . Collections . IEnumerable YieldTestCases_WriteReferencedAssemblies ( )
546+ private static System . Collections . IEnumerable YieldTestCases_WriteHeader_WriteReferencedAssemblies ( )
534547 {
535548 static IEnumerable < (
536549 string AssemblyName ,
@@ -637,7 +650,7 @@ string[] ExpectedReferencedAssemblies
637650 // The type of the assembly generated by CSharpCompilation.Emit and loaded by AssemblyLoader, will be System.Reflection.TypeLoading.Ecma.EcmaAssembly.
638651 // And Assembly.TryGetRawMetadata returns false if the type of input assembl is System.Reflection.TypeLoading.Ecma.EcmaAssembly.
639652 // Therefore, the referenced assemblies cannot be read from the assembly generated and loaded with WriteApiListFromSourceCode.
640- [ TestCaseSource ( nameof ( YieldTestCases_WriteReferencedAssemblies ) ) ]
653+ [ TestCaseSource ( nameof ( YieldTestCases_WriteHeader_WriteReferencedAssemblies ) ) ]
641654 public void WriteReferencedAssemblies (
642655 string assemblyFileName ,
643656 string targetFrameworkMoniker ,
@@ -653,6 +666,8 @@ string[] expectedReferencedAssemblies
653666 var options = new ApiListWriterOptions ( ) ;
654667
655668 options . Writer . WriteNullableAnnotationDirective = false ;
669+ options . Writer . WriteHeader = true ;
670+ options . Writer . WriteAssemblyInfo = false ;
656671 options . Writer . WriteEmbeddedResources = false ;
657672 options . Writer . WriteReferencedAssemblies = writeReferencedAssemblies ;
658673
@@ -693,7 +708,7 @@ ApiListWriterOptions options
693708 var sb = new StringBuilder ( ) ;
694709 var writer = new ApiListWriter ( new StringWriter ( sb ) , assm , options ) ;
695710
696- writer . WriteAssemblyInfoHeader ( ) ;
711+ writer . WriteHeader ( ) ;
697712 writer . WriteExportedTypes ( ) ;
698713
699714 return sb . ToString ( ) ;
@@ -721,9 +736,7 @@ public void WriteFooter(
721736 {
722737 var options = new ApiListWriterOptions ( ) ;
723738
724- options . Writer . WriteNullableAnnotationDirective = false ;
725- options . Writer . WriteEmbeddedResources = false ;
726- options . Writer . WriteReferencedAssemblies = false ;
739+ options . Writer . WriteHeader = false ;
727740 options . Writer . WriteFooter = writeFooter ;
728741
729742 var output = WriteApiListFromSourceCode ( "//" , options ) . TrimEnd ( ) ;
0 commit comments