Refine PersistedAssemblyBuilder test coverage per review feedback, helper deduplication, and AssemblyNameInfo-based identity validation#124626
Conversation
Co-authored-by: AaronRobinsonMSFT <[email protected]>
|
Tagging subscribers to this area: @dotnet/area-system-reflection-emit |
|
@copilot Please address items 1, 2, 3 and 5 in the list. |
Co-authored-by: AaronRobinsonMSFT <[email protected]>
Co-authored-by: AaronRobinsonMSFT <[email protected]>
Addressed in 0227991. I added focused PersistedAssemblyBuilder tests for items 1, 2, 3, and 5 (assembly identity flags/public key + processor architecture encoding, save/generate lifecycle behavior, Save(Stream) edge cases, and nested/generic entry point scenarios), and validated with targeted System.Reflection.Emit tests. |
|
@copilot Please now address 6, 7, 8 and 9. Once those are also complete, please remove the txt file. |
…io list Co-authored-by: AaronRobinsonMSFT <[email protected]>
Done in ceaeff5. I added tests for items 6, 7, 8, and 9 (collectible ALC isolation, metadata invariants for equivalent assemblies, cross-assembly nested generic reference with constraint, and named-argument enum-array custom attribute round-trip), and removed |
There was a problem hiding this comment.
Pull request overview
Adds additional executable test coverage for PersistedAssemblyBuilder persistence scenarios in System.Reflection.Emit tests, aimed at closing previously identified gaps (identity encoding, lifecycle validation, stream edge cases, entry point shapes, ALC isolation, metadata invariants, and attribute payload edge cases).
Changes:
- Added new
PersistedAssemblyBuildertests for assembly identity flag encoding, Save/GenerateMetadata lifecycle rules, andSave(Stream)edge behaviors. - Added tests for nested/generic entry points, collectible
AssemblyLoadContextisolation, and basic metadata determinism/invariants. - Added tests for cross-assembly generic type references and for named-argument-only custom attributes with enum-array payloads.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveILGeneratorTests.cs |
Adds a cross-assembly generic reference test involving constrained generic parameters. |
src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveCustomAttributeTests.cs |
Adds a round-trip test for named-only custom attributes using enum and enum-array named arguments (plus helper types). |
src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs |
Adds multiple coverage tests for identity flag encoding, lifecycle validation, stream behavior, entry point handling, ALC isolation, and metadata invariants (plus small helpers). |
...raries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveILGeneratorTests.cs
Outdated
Show resolved
Hide resolved
...es/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs
Outdated
Show resolved
Hide resolved
...es/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs
Outdated
Show resolved
Hide resolved
...es/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs
Outdated
Show resolved
Hide resolved
...es/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: jkotas <[email protected]>
Co-authored-by: jkotas <[email protected]>
...es/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs
Show resolved
Hide resolved
Co-authored-by: jkotas <[email protected]>
...es/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: jkotas <[email protected]>
This PR reflects the final review-driven scope for
PersistedAssemblyBuildercoverage and follow-up cleanup requested during review.Final scope after feedback
Based on PR review comments, tests considered out-of-scope or not uniquely exercising
PersistedAssemblyBuilderwere removed, relevant validation was consolidated into existing tests, duplicate helper logic was removed in favor of existing shared helpers, and assembly identity validation was simplified to useAssemblyNameInfo.What is included
Updated focused tests in:
/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveAssemblyBuilderTests.cs/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveILGeneratorTests.cs/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/AssemblySaveCustomAttributeTests.csCoverage retained in final PR:
Assembly identity edge cases
assemblyDefinition.GetAssemblyNameInfo().ToAssemblyName().Name,Version,CultureName,Flags, andPublicKey.ContentTypevalidation usingAssemblyNameproperties (without hardcoded encoding-shift constants).Save/Generate lifecycle interactions
PersistedAssemblyBuilder_SaveValidationsPersistedAssemblyBuilder_GenerateMetadataValidationCross-assembly nested generic references with constraints
Attribute edge cases (named args + enum arrays)
Additional review-driven cleanup
CreateSimplePersistedAssemblyhelper fromAssemblySaveAssemblyBuilderTests.PopulateAssemblyBuilderAndTypeBuilder) where applicable, with inline setup only where custom assembly naming is required.GetAssemblyNameInfo().ToAssemblyName()directly.tr-TR) in the identity test.What was removed during review
Per reviewer sentiment and specific comments, removed tests that were not considered strong
PersistedAssemblyBuildercoverage in this PR:Cleanup
/src/libraries/System.Reflection.Emit/tests/PersistedAssemblyBuilder/MissingScenarios.txt.Validation
System.Reflection.Emittests for the retained scenario set:🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.