-
-
Notifications
You must be signed in to change notification settings - Fork 6
first version #436
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
first version #436
Conversation
WalkthroughThis PR adds the 246th RSCG example (Imposter) to the repository, including complete documentation, example source code, metadata, and updates to all registry files and documentation pages that track the growing collection of generators. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 9
🧹 Nitpick comments (2)
v2/rscg_examples/Imposter/src/MockData/IMyClock.cs (1)
1-7: Drop redundantpublicmodifiers on interface members.
Interface members are implicitly public; this reads cleaner without them.public interface IMyClock { - public DateTime GetNow(); - public DateTime GetUtcNow(); - + DateTime GetNow(); + DateTime GetUtcNow(); }v2/rscg_examples_site/docs/RSCG-Examples/Imposter.md (1)
314-1065: (Docs snippet) Consider trimming the generated.g.csexcerpt or ensuring fences can’t drift.
A huge embedded generated file makes fence mistakes more likely and makes markdownlint noisier; a shorter excerpt + a link to the generated file image is usually enough for the example.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
v2/Generator/all.csvis excluded by!**/*.csvv2/rscg_examples_site/static/exports/RSCG.xlsxis excluded by!**/*.xlsxv2/rscg_examples_site/static/sources/Imposter.zipis excluded by!**/*.zip
📒 Files selected for processing (26)
README.md(2 hunks)later.md(1 hunks)v2/.tours/Imposter.tour(1 hunks)v2/RSCGExamplesData/GeneratorDataRec.json(1 hunks)v2/book/examples/Imposter.html(1 hunks)v2/book/list.html(2 hunks)v2/book/pandocHTML.yaml(1 hunks)v2/rscg_examples/Imposter/description.json(1 hunks)v2/rscg_examples/Imposter/nuget.txt(1 hunks)v2/rscg_examples/Imposter/readme.txt(1 hunks)v2/rscg_examples/Imposter/src/MockData/IMyClock.cs(1 hunks)v2/rscg_examples/Imposter/src/MockData/MockData.csproj(1 hunks)v2/rscg_examples/Imposter/src/MockTest.slnx(1 hunks)v2/rscg_examples/Imposter/src/TestClock/TestClock.cs(1 hunks)v2/rscg_examples/Imposter/src/TestClock/TestClock.csproj(1 hunks)v2/rscg_examples/Imposter/src/TestClock/Usings.cs(1 hunks)v2/rscg_examples/Imposter/video.json(1 hunks)v2/rscg_examples_site/docs/Authors/Bitchiko_Tchelidze.md(1 hunks)v2/rscg_examples_site/docs/Categories/Tests.md(1 hunks)v2/rscg_examples_site/docs/Categories/_PrimitiveTests.mdx(1 hunks)v2/rscg_examples_site/docs/RSCG-Examples/Imposter.md(1 hunks)v2/rscg_examples_site/docs/RSCG-Examples/index.md(4 hunks)v2/rscg_examples_site/docs/about.md(1 hunks)v2/rscg_examples_site/docs/indexRSCG.md(2 hunks)v2/rscg_examples_site/src/components/HomepageFeatures/index.js(1 hunks)v2/rscg_examples_site/static/exports/RSCG.json(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
v2/rscg_examples/Imposter/src/TestClock/TestClock.cs (1)
v2/rscg_examples/Imposter/src/MockData/IMyClock.cs (2)
DateTime(4-4)DateTime(5-5)
🪛 Biome (2.1.2)
v2/rscg_examples/Imposter/video.json
[error] 35-36: Property key must be double quoted
(parse)
[error] 36-36: unexpected character =
(parse)
[error] 36-36: expected , but instead found " "
Remove " "
(parse)
[error] 36-36: expected : but instead found }
Remove }
(parse)
[error] 37-38: Expected an array, an object, or a literal but instead found ']'.
Expected an array, an object, or a literal here.
(parse)
🪛 LanguageTool
v2/rscg_examples/Imposter/readme.txt
[uncategorized] ~12-~12: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ing roslyn source generators to achieve high performance and low memory footprint. Visit the [D...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~38-~38: Ensure spelling is correct
Context: ...tests* project, this will generate an imoster csharp [assembly: GenerateImposter(typeof(Application.Domain.ICalculator))] Then use can use the generated imposter ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
v2/rscg_examples_site/docs/Categories/_PrimitiveTests.mdx
[style] ~9-~9: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...2025-02-10 4 MSTest 
[style] ~15-~15: Using many exclamation marks might seem excessive (in this case: 14 exclamation marks for a text that’s 1729 characters long)
Context: ...) 2023-04-16 7 TUnit 
v2/rscg_examples_site/docs/RSCG-Examples/Imposter.md
[uncategorized] ~63-~63: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ing roslyn source generators to achieve high performance and low memory footprint. Visit the [D...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~89-~89: Ensure spelling is correct
Context: ...tests* project, this will generate an imoster csharp [assembly: GenerateImposter(typeof(Application.Domain.ICalculator))] Then use can use the generated imposter ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.18.1)
v2/rscg_examples_site/docs/indexRSCG.md
23-23: Spaces inside link text
(MD039, no-space-in-links)
v2/rscg_examples_site/docs/RSCG-Examples/Imposter.md
34-34: Bare URL used
(MD034, no-bare-urls)
37-37: Bare URL used
(MD034, no-bare-urls)
39-39: Bare URL used
(MD034, no-bare-urls)
118-118: Bare URL used
(MD034, no-bare-urls)
122-122: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
123-123: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
124-124: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
125-125: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
126-126: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
127-127: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
128-128: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
129-129: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
130-130: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
131-131: Unordered list indentation
Expected: 0; Actual: 1
(MD007, ul-indent)
190-190: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
201-201: Bare URL used
(MD034, no-bare-urls)
252-252: Hard tabs
Column: 1
(MD010, no-hard-tabs)
253-253: Hard tabs
Column: 1
(MD010, no-hard-tabs)
254-254: Hard tabs
Column: 1
(MD010, no-hard-tabs)
256-256: Hard tabs
Column: 1
(MD010, no-hard-tabs)
257-257: Hard tabs
Column: 1
(MD010, no-hard-tabs)
258-258: Hard tabs
Column: 1
(MD010, no-hard-tabs)
259-259: Hard tabs
Column: 1
(MD010, no-hard-tabs)
334-334: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
336-336: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
339-339: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
342-342: Code block style
Expected: fenced; Actual: indented
(MD046, code-block-style)
1062-1062: No space after hash on atx style heading
(MD018, no-missing-space-atx)
1063-1063: No space after hash on atx style heading
(MD018, no-missing-space-atx)
1065-1065: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: call-workflow-passing-data / build (24.3.0)
🔇 Additional comments (19)
v2/book/pandocHTML.yaml (1)
258-263: Good add—just ensure the referenced HTML file exists at build time.v2/rscg_examples_site/docs/about.md (1)
8-10: Count bump to 246 is consistent with the new example.v2/rscg_examples_site/src/components/HomepageFeatures/index.js (1)
5-14: Homepage count updated; no functional impact.later.md (1)
1-4: Doc “Latest Update” date bump looks fine.v2/RSCGExamplesData/GeneratorDataRec.json (1)
1488-1494: Entry addition is correctly formatted.The Imposter entry has been added with appropriate metadata: ID, Category 13 (Tests), start date 2025-12-13, and show flag enabled. JSON structure is consistent with surrounding entries.
v2/book/list.html (2)
20-20: Heading count updated correctly.The heading has been updated from "245 RSCG" to "246 RSCG" to reflect the addition of Imposter as the 246th entry.
1009-1012: New table row properly added.The Imposter entry has been correctly inserted as row 246 with proper HTML structure and link to examples/Imposter.html, following the established table format.
v2/rscg_examples_site/static/exports/RSCG.json (1)
1965-1972: Imposter catalog entry is correctly structured.The new Imposter object includes all required fields (Name, Link, NuGet, Source, Category, AddedOn) with valid URLs and metadata consistent with the generator registry. Category "Tests" aligns with other registrations in the PR.
v2/rscg_examples/Imposter/src/TestClock/Usings.cs (1)
1-4: Global usings and assembly attribute are correctly formatted.Line 1-2 declare global using directives for test framework and Imposter abstractions. Line 4 defines the assembly-level GenerateImposter attribute targeting MockData.IMyClock. C# 10+ global using syntax is correct, and the attribute invocation matches expected generator API.
v2/rscg_examples/Imposter/nuget.txt (1)
1-1: Package description is concise and informative.The single-line description clearly conveys Imposter's purpose (source-generated test doubles), key benefit (zero runtime overhead), and functionality (mock/stub generation via GenerateImposterAttribute). Appropriate for a NuGet package summary.
v2/rscg_examples_site/docs/indexRSCG.md (2)
10-10: Count metadata updated consistently.The heading (line 10) and introductory text (line 12) have been updated from 245 to 246 entries to reflect the addition of Imposter, maintaining consistency with other documentation files in the PR.
Also applies to: 12-12
23-23: Imposter entry correctly added to documentation table.The new row 246 is properly formatted with Imposter metadata (author attribution, date, and Tests category link), following the established markdown table structure and consistent with surrounding entries.
v2/rscg_examples/Imposter/description.json (1)
1-22: Generator metadata is properly structured.The description.json file contains valid JSON with complete generator metadata (name, NuGet, GitHub links, author) and relevant demonstration configuration (csprojDemo, csFiles). All required fields are present and correctly formatted. References to TestClock.csproj and related test files align with the example project structure.
v2/rscg_examples/Imposter/src/MockTest.slnx (1)
1-4: LGTM: minimal solution wiring is clear and correct.v2/rscg_examples_site/docs/RSCG-Examples/index.md (1)
3-5: LGTM: counts + Tests category wiring updated consistently (including Mermaid node).Also applies to: 1471-1507, 2031-2032
v2/rscg_examples/Imposter/src/TestClock/TestClock.csproj (1)
4-29: Consider upgrading test framework packages for native net10.0 support.
Microsoft.NET.Test.Sdk 17.5.0, MSTest.TestAdapter/Framework 2.2.10, and coverlet.collector 3.2.0 are compatible with net10.0 but lack native net10.0 builds—they work via compatibility inference. For first-class net10.0 testing support, upgrade to newer versions of these packages that explicitly target net10.0, or consider Microsoft.Testing.Platform as an alternative.README.md (2)
1-7: Header/count and “Latest Update” date are consistent with the new entry.
No issues spotted with the 246 count and 2025-12-13 update.
27-49: New “Imposter” catalog entry looks correctly integrated (numbering/date/links).
The numbering (246) and “Generated on: 2025-12-13” align with the “Latest Update” date and the link targets follow the existing conventions.v2/rscg_examples_site/docs/Categories/_PrimitiveTests.mdx (1)
3-15: Tests category list update (reorder + new Imposter entry) looks consistent.
Links, badges, and dates appear well-formed and the numbering is sequential after the reorder.
| [ | ||
| { | ||
| "file": "rscg_examples/Imposter/src/TestClock/TestClock.csproj", | ||
| "description": "First, we add Nuget [Imposter](https://www.nuget.org/packages/Imposter/) in csproj ", | ||
| "pattern": "Imposter" | ||
| } | ||
|
|
||
| ,{ | ||
| "file": "rscg_examples/Imposter/src/TestClock/Usings.cs", | ||
| "description": "File Usings.cs ", | ||
| "pattern": "this is the code" | ||
| } | ||
|
|
||
| ,{ | ||
| "file": "rscg_examples/Imposter/src/TestClock/TestClock.cs", | ||
| "description": "File TestClock.cs ", | ||
| "pattern": "this is the code" | ||
| } | ||
|
|
||
|
|
||
| ,{ | ||
| "file": "rscg_examples/Imposter/src/TestClock/obj/GX/Imposter.CodeGenerator/Imposter.CodeGenerator.CodeGenerator.ImposterGenerator/IMyClockImposter.g.cs", | ||
| "description": "Generated File 1 from 1 : IMyClockImposter.g.cs ", | ||
| "line": 1 | ||
| } | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
# Check if the generated file is present in the repo
find . -name "IMyClockImposter.g.cs" -type f 2>/dev/null | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 51
🏁 Script executed:
# Check .gitignore to see if obj/ is ignored
cat .gitignore 2>/dev/null | grep -E "^obj/|^.*obj/.*" | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 51
🏁 Script executed:
# Look for the Usings.cs and TestClock.cs files to check patterns
find . -path "*/Imposter/src/TestClock/Usings.cs" -o -path "*/Imposter/src/TestClock/TestClock.cs" | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 175
🏁 Script executed:
# Check if there are any checked-in generated files under src/
find . -path "*/Imposter/src/*/generated/*" -o -path "*/Imposter/src/*/*.g.cs" 2>/dev/null | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 51
🏁 Script executed:
# Read Usings.cs to check for the pattern "this is the code"
cat -n ./v2/rscg_examples/Imposter/src/TestClock/Usings.csRepository: ignatandrei/RSCG_Examples
Length of output: 256
🏁 Script executed:
# Read TestClock.cs to check for the pattern "this is the code"
cat -n ./v2/rscg_examples/Imposter/src/TestClock/TestClock.csRepository: ignatandrei/RSCG_Examples
Length of output: 606
🏁 Script executed:
# Verify the tour file exists and show its full content
cat -n ./v2/.tours/Imposter.tourRepository: ignatandrei/RSCG_Examples
Length of output: 1292
Fix tour patterns and remove reference to build-generated file.
The patterns "this is the code" (lines 16 and 22) do not match any content in Usings.cs or TestClock.cs. Replace them with actual matching text from those files, or omit the pattern field.
The referenced generated file at obj/GX/Imposter.CodeGenerator/.../IMyClockImposter.g.cs (line 27) does not exist in the repository and is only created during build. Remove this step or replace it with a checked-in snapshot of the generated output under a stable path like src/TestClock/generated/.
🤖 Prompt for AI Agents
In v2/.tours/Imposter.tour around lines 6 to 31, the tour uses non-matching
patterns ("this is the code") for Usings.cs and TestClock.cs and references a
build-generated file under obj/GX/.../IMyClockImposter.g.cs that doesn't exist
in the repo; update the two entries to use real text that appears in those files
(or remove the pattern field entirely) and delete or replace the generated-file
step with a stable, checked-in generated snapshot (for example move the
generated output to src/TestClock/generated/ and reference that path) so the
tour only points to files that exist in source control.
| <p>Author :Bitchiko Tchelidze</p> | ||
|
|
||
| <p>Source: <a href="https://github.com/themidnightgospel/Imposter" target="_blank">https://github.com/themidnightgospel/Imposter</a> </p> | ||
|
|
||
| <h2>About</h2> | ||
|
|
||
| Generate classes from interfaces and allows return of mock data.Useful for testing and prototyping. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix minor spacing/typos in public HTML text.
-<p>Author :Bitchiko Tchelidze</p>
+<p>Author : Bitchiko Tchelidze</p>
@@
-Generate classes from interfaces and allows return of mock data.Useful for testing and prototyping.
+Generate classes from interfaces and allows return of mock data. Useful for testing and prototyping.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <p>Author :Bitchiko Tchelidze</p> | |
| <p>Source: <a href="https://github.com/themidnightgospel/Imposter" target="_blank">https://github.com/themidnightgospel/Imposter</a> </p> | |
| <h2>About</h2> | |
| Generate classes from interfaces and allows return of mock data.Useful for testing and prototyping. | |
| <p>Author : Bitchiko Tchelidze</p> | |
| <p>Source: <a href="https://github.com/themidnightgospel/Imposter" target="_blank">https://github.com/themidnightgospel/Imposter</a> </p> | |
| <h2>About</h2> | |
| Generate classes from interfaces and allows return of mock data. Useful for testing and prototyping. |
🤖 Prompt for AI Agents
In v2/book/examples/Imposter.html around lines 9–16, fix minor spacing and typos
in the public text: change "Author :Bitchiko Tchelidze" to "Author: Bitchiko
Tchelidze", ensure a space after "Source:" if missing, and rewrite the
description sentence to proper grammar and spacing — e.g. "Generates classes
from interfaces and allows returning mock data. Useful for testing and
prototyping." Update the HTML text accordingly.
| # Author : Bitchiko Tchelidze | ||
|
|
||
| Number RSCG: 1 | ||
|
|
||
|
|
||
| 1 [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13 | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix Markdown indentation to avoid rendering as a code block.
Consider:
- 1 [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13
+1. [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Author : Bitchiko Tchelidze | |
| Number RSCG: 1 | |
| 1 [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13 | |
| # Author : Bitchiko Tchelidze | |
| Number RSCG: 1 | |
| 1. [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13 | |
🤖 Prompt for AI Agents
In v2/rscg_examples_site/docs/Authors/Bitchiko_Tchelidze.md around lines 1 to 7
the block starting with the numbered item is indented and being rendered as a
code block; remove the leading indentation and ensure proper blank lines so the
list renders as Markdown (e.g., unindent the "1 [Imposter]..." line to column 1,
keep a blank line above the list, and use standard list/item formatting).
| Number RSCG: 7 | ||
|
|
||
| 1 [mocklis](/docs/mocklis) [](https://www.nuget.org/packages/mocklis/)  2024-01-03 | ||
| 1 [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13 | ||
|
|
||
| 2 [MockMe](/docs/MockMe) [](https://www.nuget.org/packages/MockMe/)  2025-02-10 | ||
| 2 [mocklis](/docs/mocklis) [](https://www.nuget.org/packages/mocklis/)  2024-01-03 | ||
|
|
||
| 3 [MSTest](/docs/MSTest) [](https://www.nuget.org/packages/MSTest.SourceGeneration/)  2024-04-04 | ||
| 3 [MockMe](/docs/MockMe) [](https://www.nuget.org/packages/MockMe/)  2025-02-10 | ||
|
|
||
| 4 [Ridge](/docs/Ridge) [](https://www.nuget.org/packages/Ridge/)  2023-08-20 | ||
| 4 [MSTest](/docs/MSTest) [](https://www.nuget.org/packages/MSTest.SourceGeneration/)  2024-04-04 | ||
|
|
||
| 5 [Rocks](/docs/Rocks) [](https://www.nuget.org/packages/Rocks/)  2023-04-16 | ||
| 5 [Ridge](/docs/Ridge) [](https://www.nuget.org/packages/Ridge/)  2023-08-20 | ||
|
|
||
| 6 [TUnit](/docs/TUnit) [](https://www.nuget.org/packages/TUnit/)  2025-11-08 | ||
| 6 [Rocks](/docs/Rocks) [](https://www.nuget.org/packages/Rocks/)  2023-04-16 | ||
|
|
||
| 7 [TUnit](/docs/TUnit) [](https://www.nuget.org/packages/TUnit/)  2025-11-08 | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove leading indentation so the list renders correctly.
Example adjustment:
- 1 [Imposter](/docs/Imposter) ...
+1. [Imposter](/docs/Imposter) ...
...
- 7 [TUnit](/docs/TUnit) ...
+7. [TUnit](/docs/TUnit) ...📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Number RSCG: 7 | |
| 1 [mocklis](/docs/mocklis) [](https://www.nuget.org/packages/mocklis/)  2024-01-03 | |
| 1 [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13 | |
| 2 [MockMe](/docs/MockMe) [](https://www.nuget.org/packages/MockMe/)  2025-02-10 | |
| 2 [mocklis](/docs/mocklis) [](https://www.nuget.org/packages/mocklis/)  2024-01-03 | |
| 3 [MSTest](/docs/MSTest) [](https://www.nuget.org/packages/MSTest.SourceGeneration/)  2024-04-04 | |
| 3 [MockMe](/docs/MockMe) [](https://www.nuget.org/packages/MockMe/)  2025-02-10 | |
| 4 [Ridge](/docs/Ridge) [](https://www.nuget.org/packages/Ridge/)  2023-08-20 | |
| 4 [MSTest](/docs/MSTest) [](https://www.nuget.org/packages/MSTest.SourceGeneration/)  2024-04-04 | |
| 5 [Rocks](/docs/Rocks) [](https://www.nuget.org/packages/Rocks/)  2023-04-16 | |
| 5 [Ridge](/docs/Ridge) [](https://www.nuget.org/packages/Ridge/)  2023-08-20 | |
| 6 [TUnit](/docs/TUnit) [](https://www.nuget.org/packages/TUnit/)  2025-11-08 | |
| 6 [Rocks](/docs/Rocks) [](https://www.nuget.org/packages/Rocks/)  2023-04-16 | |
| 7 [TUnit](/docs/TUnit) [](https://www.nuget.org/packages/TUnit/)  2025-11-08 | |
| Number RSCG: 7 | |
| 1. [Imposter](/docs/Imposter) [](https://www.nuget.org/packages/Imposter/)  2025-12-13 | |
| 2. [mocklis](/docs/mocklis) [](https://www.nuget.org/packages/mocklis/)  2024-01-03 | |
| 3. [MockMe](/docs/MockMe) [](https://www.nuget.org/packages/MockMe/)  2025-02-10 | |
| 4. [MSTest](/docs/MSTest) [](https://www.nuget.org/packages/MSTest.SourceGeneration/)  2024-04-04 | |
| 5. [Ridge](/docs/Ridge) [](https://www.nuget.org/packages/Ridge/)  2023-08-20 | |
| 6. [Rocks](/docs/Rocks) [](https://www.nuget.org/packages/Rocks/)  2023-04-16 | |
| 7. [TUnit](/docs/TUnit) [](https://www.nuget.org/packages/TUnit/)  2025-11-08 |
🤖 Prompt for AI Agents
v2/rscg_examples_site/docs/Categories/Tests.md around lines 3-18: the numbered
list items are indented with leading spaces which prevents Markdown from
rendering them as a proper list; remove the leading indentation from each list
line so each item starts at column 1 (ensure there is a single blank line
separating the "Number RSCG: 7" heading and the list), keep the inline links and
badges unchanged, and verify the list renders as a normal ordered list after the
change.
| Imposter — Source-generated test doubles, zero runtime overhead. A high-performance Roslyn incremental source generator that produces imposters (mocks/stubs) for interfaces and overridable class members via GenerateImposterAttribute. Ships analyzer + runtime in a single package. | ||
|
|
||
| Author: Bitchiko Tchelidze | ||
|
|
||
| NuGet: | ||
| *https://www.nuget.org/packages/Imposter/* | ||
|
|
||
|
|
||
| You can find more details at https://github.com/themidnightgospel/Imposter | ||
|
|
||
| Source: https://github.com/themidnightgospel/Imposter | ||
|
|
||
| ::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix markdownlint + spelling issues (likely CI-breaking): bare URLs, tabs, list indent, and missing/imbalanced fences.
At minimum: convert bare URLs to links, replace hard tabs with spaces, fix list indentation, ensure every fenced block declares a language and is correctly closed, and fix “imoster”→“imposter”.
Concrete starters (not exhaustive, but addresses the reported rules):
-Author: Bitchiko Tchelidze
+Author: Bitchiko Tchelidze
@@
-NuGet:
-*https://www.nuget.org/packages/Imposter/*
+NuGet:
+* [https://www.nuget.org/packages/Imposter/](https://www.nuget.org/packages/Imposter/)
@@
-You can find more details at https://github.com/themidnightgospel/Imposter
+You can find more details at [https://github.com/themidnightgospel/Imposter](https://github.com/themidnightgospel/Imposter)
@@
-Use `[GenerateImposter]` attribute in your **tests** project, this will generate an imoster
+Use `[GenerateImposter]` attribute in your **tests** project; this will generate an imposter
@@
- - [Method Impersonation](...)
+- [Method Impersonation](...)Also please replace the hard tabs around the csproj snippet (Line 252+ in this file) with spaces to satisfy MD010.
Also applies to: 63-66, 89-100, 118-132, 190-201, 252-260
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
34-34: Bare URL used
(MD034, no-bare-urls)
37-37: Bare URL used
(MD034, no-bare-urls)
39-39: Bare URL used
(MD034, no-bare-urls)
🤖 Prompt for AI Agents
v2/rscg_examples_site/docs/RSCG-Examples/Imposter.md lines 29-41 (and also
address ranges 63-66, 89-100, 118-132, 190-201, 252-260): the file contains
markdownlint and spelling issues — bare URLs, hard tabs, list indentation
problems, missing/imbalanced fenced-code-block language markers/closures, and a
typo "imoster" — so convert bare URLs into inline markdown links, replace all
hard tabs with spaces (especially around the csproj snippet at 252+ to satisfy
MD010), fix list indentation to use consistent spaces, ensure every fenced block
declares a language (e.g., ```cs or ```xml) and is properly closed, and correct
the spelling "imoster" to "imposter"; apply these fixes across the listed line
ranges and run markdownlint to confirm no remaining violations.
| Imposter is a mocking library that's using roslyn source generators to achieve high performance and low memory footprint. | ||
|
|
||
| Visit the [Docs](https://themidnightgospel.github.io/Imposter/) for more information | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix “imoster” typo + minor grammar polish in README.
Line 38 says “imoster”; should be “imposter”. Also consider “Roslyn” capitalization and “memory-efficient” hyphenation.
-Imposter is a mocking library that's using roslyn source generators to achieve high performance and low memory footprint.
+Imposter is a mocking library that uses Roslyn source generators to achieve high performance and a low memory footprint.
@@
-Use `[GenerateImposter]` attribute in your **tests** project, this will generate an imoster
+Use `[GenerateImposter]` attribute in your **tests** project; this will generate an imposter
@@
-Then use can use the generated imposter in your tests
+Then you can use the generated imposter in your testsAlso applies to: 38-45
🧰 Tools
🪛 LanguageTool
[uncategorized] ~12-~12: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ing roslyn source generators to achieve high performance and low memory footprint. Visit the [D...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
🤖 Prompt for AI Agents
In v2/rscg_examples/Imposter/readme.txt around lines 12-15 and also lines 38-45,
correct the typo "imoster" to "imposter", capitalize "Roslyn", and hyphenate
"memory-efficient" (and optionally "high-performance") for grammar; update the
sentences so they read e.g. "Imposter is a mocking library that uses Roslyn
source generators to achieve high-performance and a memory-efficient footprint."
Ensure consistent capitalization and hyphenation throughout the file.
| <PropertyGroup> | ||
| <TargetFramework>net10.0</TargetFramework> | ||
| <ImplicitUsings>enable</ImplicitUsings> | ||
| <Nullable>enable</Nullable> | ||
| </PropertyGroup> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
# Search for global.json
find . -name "global.json" -type f | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 51
🏁 Script executed:
# Search for CI configuration files
find . -name "*.yml" -o -name "*.yaml" | grep -E "(\.github|\.gitlab|azure|workflow)" | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 181
🏁 Script executed:
# Check other .csproj files to see what target frameworks are used
find . -name "*.csproj" -type f | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 972
🏁 Script executed:
# Look at the specific file and surrounding context
cat -n v2/rscg_examples/Imposter/src/MockData/MockData.csproj | head -20Repository: ignatandrei/RSCG_Examples
Length of output: 348
🏁 Script executed:
# Examine the CI workflow that compiles
cat -n ./.github/workflows/compile.yml | head -50Repository: ignatandrei/RSCG_Examples
Length of output: 1050
🏁 Script executed:
# Check what target frameworks other examples use
find ./v2/rscg_examples -name "*.csproj" -type f | head -10 | xargs grep -h "TargetFramework" | sort | uniqRepository: ignatandrei/RSCG_Examples
Length of output: 250
🏁 Script executed:
# Get more detail on compile.yml
wc -l ./.github/workflows/compile.ymlRepository: ignatandrei/RSCG_Examples
Length of output: 103
🏁 Script executed:
# Check the pr.yml workflow for .NET build steps
cat -n ./.github/workflows/pr.yml | head -80Repository: ignatandrei/RSCG_Examples
Length of output: 758
🏁 Script executed:
# Search more broadly for .NET/dotnet references in CI files
grep -r "dotnet\|\.NET\|TargetFramework.*10" ./.github/workflows/ 2>/dev/null || echo "No .NET build found in CI"Repository: ignatandrei/RSCG_Examples
Length of output: 94
🏁 Script executed:
# Check if there are any other .csproj files with net10.0
grep -r "net10.0" ./v2/rscg_examples --include="*.csproj" 2>/dev/null | wc -lRepository: ignatandrei/RSCG_Examples
Length of output: 71
🌐 Web query:
.NET 10.0 net10.0 target framework release date support
💡 Result:
- Release date: .NET 10 shipped November 11, 2025. [1]
- Target framework moniker: use TFM "net10.0" (and platform-specific variants like net10.0-android, net10.0-windows, etc.). [2]
- Support: .NET 10 is an LTS release and is supported for three years (end of support November 10, 2028). [1][3]
Sources: [1] .NET Blog — Announcing .NET 10; [2] Microsoft Learn — Target frameworks (TFMs); [3] .NET Support Policy / Releases & support.
Using net10.0 is valid but inconsistent with other examples in the repo.
net10.0 is a supported LTS release (released November 11, 2025). However, all other examples in v2/rscg_examples target net7.0, net8.0, or net9.0. Consider using a more widely-supported version for consistency, especially if developers may not have .NET 10 locally installed yet:
- <TargetFramework>net10.0</TargetFramework>
+ <TargetFramework>net8.0</TargetFramework>🤖 Prompt for AI Agents
In v2/rscg_examples/Imposter/src/MockData/MockData.csproj around lines 3-7, the
project targets net10.0 which is inconsistent with other examples; change the
<TargetFramework> value to a more widely-used version (for consistency choose
net8.0 or the repo’s most common target like net7.0) so the example builds for
developers without .NET 10, and update any repo documentation or CI that assumes
the project target if necessary.
| public void TestMyClock() | ||
| { | ||
| var mock = new IMyClockImposter(); | ||
| mock.GetUtcNow().Returns(DateTime.Now.AddYears(-1)); | ||
| mock.GetNow().Returns(DateTime.Now.AddYears(-1)); | ||
| IMyClock clock = mock.Instance(); | ||
| Assert.AreEqual(DateTime.Now.AddYears(-1).Year, clock.GetNow().Year); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make the test deterministic (capture a single expected timestamp; use UTC for GetUtcNow).
Current multiple DateTime.Now evaluations can flake; and GetUtcNow should be based on UtcNow (or a fixed constant).
public void TestMyClock()
{
var mock = new IMyClockImposter();
- mock.GetUtcNow().Returns(DateTime.Now.AddYears(-1));
- mock.GetNow().Returns(DateTime.Now.AddYears(-1));
+ var expectedLocal = DateTime.Now.AddYears(-1);
+ var expectedUtc = DateTime.UtcNow.AddYears(-1);
+ mock.GetUtcNow().Returns(expectedUtc);
+ mock.GetNow().Returns(expectedLocal);
IMyClock clock = mock.Instance();
- Assert.AreEqual(DateTime.Now.AddYears(-1).Year, clock.GetNow().Year);
+ Assert.AreEqual(expectedLocal, clock.GetNow());
}🤖 Prompt for AI Agents
In v2/rscg_examples/Imposter/src/TestClock/TestClock.cs around lines 9 to 16,
the test calls DateTime.Now multiple times and uses Now for GetUtcNow which can
introduce flakiness; capture a single timestamp before stubbing (e.g. var
expected = DateTime.UtcNow.AddYears(-1)), use that same expected value for both
mock.GetUtcNow() and mock.GetNow() returns, and assert against expected (prefer
full equality or expected.Year if you only care about year) so the test is
deterministic and GetUtcNow is based on UTC.
| {"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Imposter#download-example-net--c-", | ||
| SpeakTest=" "}, | ||
| {"typeStep":"waitseconds","arg":"30"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Critical: Fix invalid JSON syntax.
Lines 35–36 contain malformed JSON that prevents the file from parsing. The property SpeakTest=" " uses an equals sign instead of proper JSON syntax (colon). This breaks the entire JSON file.
Option 1 (recommended): Remove the invalid property line:
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Imposter#download-example-net--c-"
-SpeakTest=" "},
+},Option 2 (if property is intentional): Use proper JSON property syntax:
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Imposter#download-example-net--c-",
-SpeakTest=" "},
+"speakTest":""},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| {"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Imposter#download-example-net--c-", | |
| SpeakTest=" "}, | |
| {"typeStep":"waitseconds","arg":"30"}, | |
| {"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Imposter#download-example-net--c-", | |
| "speakTest":""}, | |
| {"typeStep":"waitseconds","arg":"30"}, |
🧰 Tools
🪛 Biome (2.1.2)
[error] 35-36: Property key must be double quoted
(parse)
[error] 36-36: unexpected character =
(parse)
[error] 36-36: expected , but instead found " "
Remove " "
(parse)
[error] 36-36: expected : but instead found }
Remove }
(parse)
🤖 Prompt for AI Agents
In v2/rscg_examples/Imposter/video.json around lines 35 to 37, the JSON is
malformed because the property uses an equals sign (SpeakTest=" ") instead of a
colon; remove that invalid property line or replace it with valid JSON property
syntax (use a colon and quoted key/value) so the surrounding array/object
remains valid and the file can parse.
Summary by CodeRabbit
New Features
Documentation
✏️ Tip: You can customize this high-level summary in your review settings.