feat(generators): wire FastMoqGeneratedTestFramework MSBuild property into generator pipeline (#123 slice 2)#166
Merged
cwinland merged 2 commits intofeature/123-full-test-generation-slice-1from May 6, 2026
Conversation
…peline - Add CompilerVisibleProperty for FastMoqGeneratedTestFramework to generator csproj - Read build_property.FastMoqGeneratedTestFramework in incremental pipeline via AnalyzerConfigOptionsProvider - Combine frameworkSetting with targets pipeline; pass to EmitSource - When value is 'none' (case-insensitive), suppress xUnit smoke-test emission regardless of metadata - Add TestAnalyzerConfigOptionsProvider / TestAnalyzerConfigOptions nested helpers for test isolation - Add 3 new [Fact] tests covering none suppression, explicit xunit enable, and case-insensitive none Part of #123
9 tasks
…ngs-bridge-slice-2 Resolve conflict in test file by: - Keeping settings-bridge tests (framework property gating) - Adding keyword escaping test from slice 1 (addresses code review on GeneratedHarnessSourceGenerator.cs) - Combining both test suites into comprehensive validation
cwinland
added a commit
that referenced
this pull request
May 6, 2026
* Widen generated harness smoke test coverage * Fix: Escape C# keywords in generated method invocations When component methods are named with C# keywords (e.g., @Class, @return), the unescaped IMethodSymbol.Name resulted in invalid emitted code like 'component.class()' instead of 'component.@Class()'. - Add EscapeIdentifierIfKeyword helper using SyntaxFacts.GetKeywordKind - Apply escaping in CreateGeneratedTestMethodModel to all method references - Add [Fact] test covering keyword methods (@Class, @interface, @return) Addresses code review comment on GeneratedHarnessSourceGenerator.cs * feat(generators): wire FastMoqGeneratedTestFramework MSBuild property into generator pipeline (#123 slice 2) (#166) Wire FastMoqGeneratedTestFramework MSBuild property into generator pipeline - Add CompilerVisibleProperty for FastMoqGeneratedTestFramework to generator csproj - Read build_property.FastMoqGeneratedTestFramework in incremental pipeline via AnalyzerConfigOptionsProvider - Combine frameworkSetting with targets pipeline; pass to EmitSource - When value is 'none' (case-insensitive), suppress xUnit smoke-test emission regardless of metadata - Add TestAnalyzerConfigOptionsProvider / TestAnalyzerConfigOptions nested helpers for test isolation - Add 3 new [Fact] tests covering none suppression, explicit xunit enable, and case-insensitive none Part of #123
cwinland
added a commit
that referenced
this pull request
May 6, 2026
* Expand generated scenario scaffold executors * Add generated shared setup scaffold hooks * Strengthen generated shared setup hook ordering test * Document generated scenario scaffold members * docs: align generator roadmap with current scope * Widen generated harness smoke test coverage (#165) * Widen generated harness smoke test coverage * Fix: Escape C# keywords in generated method invocations When component methods are named with C# keywords (e.g., @Class, @return), the unescaped IMethodSymbol.Name resulted in invalid emitted code like 'component.class()' instead of 'component.@Class()'. - Add EscapeIdentifierIfKeyword helper using SyntaxFacts.GetKeywordKind - Apply escaping in CreateGeneratedTestMethodModel to all method references - Add [Fact] test covering keyword methods (@Class, @interface, @return) Addresses code review comment on GeneratedHarnessSourceGenerator.cs * feat(generators): wire FastMoqGeneratedTestFramework MSBuild property into generator pipeline (#123 slice 2) (#166) Wire FastMoqGeneratedTestFramework MSBuild property into generator pipeline - Add CompilerVisibleProperty for FastMoqGeneratedTestFramework to generator csproj - Read build_property.FastMoqGeneratedTestFramework in incremental pipeline via AnalyzerConfigOptionsProvider - Combine frameworkSetting with targets pipeline; pass to EmitSource - When value is 'none' (case-insensitive), suppress xUnit smoke-test emission regardless of metadata - Add TestAnalyzerConfigOptionsProvider / TestAnalyzerConfigOptions nested helpers for test isolation - Add 3 new [Fact] tests covering none suppression, explicit xunit enable, and case-insensitive none Part of #123
cwinland
added a commit
that referenced
this pull request
May 6, 2026
* Document generated-test settings design for #162 * Fix generated harness parameterless constructor selection * Define #126 scenario scaffolding contract * Document #134 helper-family narrowing matrix * Align generator project GUID across solutions * Add generated shared setup scenario scaffold hooks (#164) * Expand generated scenario scaffold executors * Add generated shared setup scaffold hooks * Strengthen generated shared setup hook ordering test * Document generated scenario scaffold members * docs: align generator roadmap with current scope * Widen generated harness smoke test coverage (#165) * Widen generated harness smoke test coverage * Fix: Escape C# keywords in generated method invocations When component methods are named with C# keywords (e.g., @Class, @return), the unescaped IMethodSymbol.Name resulted in invalid emitted code like 'component.class()' instead of 'component.@Class()'. - Add EscapeIdentifierIfKeyword helper using SyntaxFacts.GetKeywordKind - Apply escaping in CreateGeneratedTestMethodModel to all method references - Add [Fact] test covering keyword methods (@Class, @interface, @return) Addresses code review comment on GeneratedHarnessSourceGenerator.cs * feat(generators): wire FastMoqGeneratedTestFramework MSBuild property into generator pipeline (#123 slice 2) (#166) Wire FastMoqGeneratedTestFramework MSBuild property into generator pipeline - Add CompilerVisibleProperty for FastMoqGeneratedTestFramework to generator csproj - Read build_property.FastMoqGeneratedTestFramework in incremental pipeline via AnalyzerConfigOptionsProvider - Combine frameworkSetting with targets pipeline; pass to EmitSource - When value is 'none' (case-insensitive), suppress xUnit smoke-test emission regardless of metadata - Add TestAnalyzerConfigOptionsProvider / TestAnalyzerConfigOptions nested helpers for test isolation - Add 3 new [Fact] tests covering none suppression, explicit xunit enable, and case-insensitive none Part of #123
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Wires the
FastMoqGeneratedTestFrameworkMSBuild → analyzer-config-options bridge into the Roslyn incremental generator pipeline.Changes
CompilerVisiblePropertyforFastMoqGeneratedTestFrameworkin the generator csprojbuild_property.FastMoqGeneratedTestFrameworkviaAnalyzerConfigOptionsProvider.GlobalOptionsinInitialize(); combines the setting with the targets pipeline usingCombine(); passes the setting string toEmitSource/AppendGeneratedXUnitSmokeTestsnone(case-insensitive), xUnit smoke-test emission is suppressed unconditionally, regardless of whether the xUnit metadata is presentTestAnalyzerConfigOptionsProvider+TestAnalyzerConfigOptionsnested helpers for generator-test isolation[Fact]tests: suppression withnone, explicit enable withxunit, and case-insensitiveNoneStacked on
This PR is stacked on #165 (
feature/123-full-test-generation-slice-1). Merge that first.Related
Part of #123.