Skip to content

feat: add test coverage tracking with pytest-cov#512

Merged
msanatan merged 5 commits into
CoplayDev:mainfrom
Nonanti:feat/pytest-coverage
Jan 8, 2026
Merged

feat: add test coverage tracking with pytest-cov#512
msanatan merged 5 commits into
CoplayDev:mainfrom
Nonanti:feat/pytest-coverage

Conversation

@Nonanti

@Nonanti Nonanti commented Jan 4, 2026

Copy link
Copy Markdown
Contributor
  • Add pytest-cov>=4.1.0 to dev dependencies

    • Configure coverage in pyproject.toml (run, report, html)
    • Integrate coverage reports into CI workflow
    • Update .gitignore for coverage artifacts
    • Document coverage usage in docs/README-DEV.md

    Current coverage baseline: 34.45%

Summary by Sourcery

Add code coverage tracking and reporting to the Python test workflow.

New Features:

  • Introduce pytest-cov as a development dependency for coverage-enabled test runs.

Enhancements:

  • Configure coverage run, report, and HTML output settings in pyproject.toml.

CI:

  • Update the GitHub Actions Python test workflow to run tests with coverage and upload coverage reports to Codecov.

Documentation:

  • Document how to run tests with coverage and view HTML coverage reports in the developer README.

Summary by CodeRabbit

  • Chores

    • CI now runs tests with coverage collection and uploads coverage reports as build artifacts.
    • Development environment updated with coverage tooling and project-level coverage configuration.
    • VCS ignore rules updated to exclude coverage artifacts.
  • Documentation

    • Added developer instructions (EN and ZH) for running tests with coverage and viewing the HTML coverage report.

✏️ Tip: You can customize this high-level summary in your review settings.

  - Add pytest-cov>=4.1.0 to dev dependencies
  - Configure coverage in pyproject.toml (run, report, html)
  - Integrate coverage reports into CI workflow
  - Update .gitignore for coverage artifacts
  - Document coverage usage in docs/README-DEV.md

  Current coverage baseline: 34.45%
@sourcery-ai

sourcery-ai Bot commented Jan 4, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Adds pytest-cov-based coverage tracking, config, and reporting to the Python server project and CI workflow, and documents how to run and inspect coverage locally.

Flow diagram for coverage configuration usage via pyproject.toml

flowchart TD
    A[Developer runs pytest<br>with --cov=src<br>--cov-report=term<br>--cov-report=html] --> B[pytest loads pytest_cov plugin]
    B --> C[coverage_py starts measurement]
    C --> D[coverage_py reads tool.coverage.run<br>from pyproject.toml]
    D --> E[Apply source=src<br>and omit patterns<br>for tests]
    E --> F[Execute tests and record executed lines]
    F --> G[Generate terminal report<br>using tool.coverage.report<br>settings]
    G --> H[Generate HTML report in htmlcov<br>using tool.coverage.html settings]
    H --> I[Developer views htmlcov/index.html<br>in browser]
Loading

File-Level Changes

Change Details Files
Introduce pytest-cov as a development dependency and configure coverage behavior via pyproject.toml.
  • Add pytest-cov>=4.1.0 to the dev extras dependencies list.
  • Configure coverage run options to target the src package and omit tests from coverage.
  • Configure coverage report behavior, including excluded lines, precision, and missing-line display.
  • Configure HTML coverage report output directory.
Server/pyproject.toml
Integrate coverage collection and reporting into the GitHub Actions Python test workflow.
  • Modify the test step to run pytest with coverage options, producing XML, HTML, and terminal reports.
  • Add a Codecov upload step that always runs, uploads coverage.xml from the Server directory, and is non-fatal on failure.
  • Extend the uploaded test artifact set to include coverage.xml and the htmlcov directory for later inspection.
.github/workflows/python-tests.yml
Document how to run tests with coverage locally and where coverage configuration lives.
  • Add a new Code Coverage section showing local pytest invocation with coverage and how to open the HTML report.
  • Reference the coverage configuration location under [tool.coverage.*] in pyproject.toml.
docs/README-DEV.md
Align ignore patterns for coverage artifacts and lockfile with the new coverage setup.
  • Update .gitignore to exclude coverage-related artifacts (e.g., coverage reports / directories).
  • Update the uv.lock file to reflect the added pytest-cov dependency.
.gitignore
Server/uv.lock

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Jan 4, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • Server/uv.lock is excluded by !**/*.lock

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

Adds test coverage collection and reporting: adds pytest-cov to dev deps and coverage config in Server/pyproject.toml, updates CI to produce XML/HTML/terminal coverage and upload artifacts to Codecov, updates .gitignore, and documents usage in docs/README-DEV.md and docs/README-DEV-zh.md.

Changes

Cohort / File(s) Summary
CI workflow & artifacts
\.github/workflows/python-tests.yml
Renames test step to "Run tests with coverage", runs pytest with pytest-cov producing XML, HTML and terminal reports, uploads coverage.xml and htmlcov/ as artifacts, and adds a Codecov upload step configured to always run and not fail on error.
Coverage config & deps
Server/pyproject.toml
Adds pytest-cov>=4.1.0 to dev dependencies and introduces [tool.coverage.run], [tool.coverage.report], and [tool.coverage.html] settings (source=["src"], omit test files, report exclusions, precision, show_missing, html dir htmlcov).
Ignore patterns
.gitignore
Adds coverage-related ignore patterns: .coverage, .coverage.*, htmlcov/, coverage.xml, *.cover.
Documentation (EN)
docs/README-DEV.md
Adds a "Code Coverage" section describing how to run tests with coverage, view the HTML report, and references coverage config in Server/pyproject.toml.
Documentation (ZH)
docs/README-DEV-zh.md
Adds a "代码覆盖率" section with commands to run tests with coverage, view the HTML report, and references coverage config in Server/pyproject.toml.
sequenceDiagram
  autonumber
  participant GH as GitHub Actions
  participant Runner as CI Runner
  participant Pytest as pytest (+ pytest-cov)
  participant Artifacts as Artifact Store
  participant Codecov as Codecov

  GH->>Runner: Trigger "python-tests" workflow
  Runner->>Pytest: Run tests with coverage (XML, HTML, terminal)
  Pytest-->>Runner: Produce coverage.xml and htmlcov/
  Runner->>Artifacts: Upload test artifacts + coverage.xml + htmlcov/
  Runner->>Codecov: Upload coverage.xml via codecov-action
  Codecov-->>Runner: Acknowledge upload
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐇 I hopped through tests with a curious cheer,
I gathered coverage, both far and near.
XML, HTML—reports in a row,
Tiny paws tidy the artifacts' flow.
Metrics bloom where the rabbit did go.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding test coverage tracking with pytest-cov, which is reflected across all file modifications (dependencies, CI workflow, configuration, documentation).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue, and left some high level feedback:

  • The exclude_lines pattern "if __name__ == .__main__.:" in [tool.coverage.report] looks misquoted and likely won't match the standard if __name__ == '__main__': guard; consider correcting it so those lines are actually excluded.
  • Since [tool.coverage.run] already defines source = ["src"], you could simplify the pytest commands in CI and docs by dropping the explicit --cov=src flag and relying on the centralized configuration instead.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `exclude_lines` pattern `"if __name__ == .__main__.:"` in `[tool.coverage.report]` looks misquoted and likely won't match the standard `if __name__ == '__main__':` guard; consider correcting it so those lines are actually excluded.
- Since `[tool.coverage.run]` already defines `source = ["src"]`, you could simplify the pytest commands in CI and docs by dropping the explicit `--cov=src` flag and relying on the centralized configuration instead.

## Individual Comments

### Comment 1
<location> `Server/pyproject.toml:72` </location>
<code_context>
+    "def __repr__",
+    "raise AssertionError",
+    "raise NotImplementedError",
+    "if __name__ == .__main__.:",
+    "if TYPE_CHECKING:",
+    "@abstractmethod",
</code_context>

<issue_to_address>
**issue (bug_risk):** Coverage `exclude_lines` pattern for `__main__` guard looks malformed and likely won’t match.

The pattern `"if __name__ == .__main__.:"` is not valid syntax and won’t match real `if __name__ == "__main__":` lines, so those blocks will still count toward coverage. Please update it to a correct pattern like `"if __name__ == \"__main__\":"` (properly escaped for TOML) so main guards are excluded as intended.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread Server/pyproject.toml Outdated

@msanatan msanatan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good @Nonanti ! Can you:

  • Update your branch with the latest from main. I'd recommend accepting the new uv.lock for the merge conflict, and then creating a brand new
  • Can you update the Simple Chinese translation of the dev README as well? I don't speak the language, but I typically as ChatGPT to do it for me

@msanatan

msanatan commented Jan 8, 2026

Copy link
Copy Markdown
Member

By chance @Nonanti, do you have example output of the coverage on your fork?

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
Server/pyproject.toml (1)

45-45: Consider exact version pinning for consistency.

While pytest-cov>=4.1.0 works, consider using exact version pinning (e.g., pytest-cov==4.1.0) to match the approach used for fastmcp==2.14.1 on line 33. This prevents potential breaking changes from minor version updates during development.

Based on learnings, exact version pinning is preferred to prevent breaking changes.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e911e2f and fb189cf.

⛔ Files ignored due to path filters (1)
  • Server/uv.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • .gitignore
  • Server/pyproject.toml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .gitignore
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-12-29T04:54:17.743Z
Learnt from: dsarno
Repo: CoplayDev/unity-mcp PR: 490
File: Server/pyproject.toml:33-33
Timestamp: 2025-12-29T04:54:17.743Z
Learning: Pin the fastmcp dependency to an exact version in Server/pyproject.toml (e.g., exact string 2.14.1). Avoid range pins like >=2.13.0 to prevent breaking changes affecting MCP tools. Apply the same exact-version pinning approach according to the syntax of the package tool in use (e.g., Poetry: fastmcp = '2.14.1' or equivalent exact-specifier).

Applied to files:

  • Server/pyproject.toml
⏰ 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: Sourcery review
🔇 Additional comments (2)
Server/pyproject.toml (2)

66-77: LGTM!

The coverage report configuration follows pytest-cov best practices. The exclude_lines patterns appropriately exclude defensive code, type-checking blocks, and abstract methods that don't need coverage. The precision = 2 and show_missing = true settings provide clear, actionable coverage reports.


79-80: LGTM!

Using htmlcov as the output directory for HTML coverage reports is the standard convention for pytest-cov, making it familiar to developers and consistent with documentation examples.

@Nonanti

Nonanti commented Jan 8, 2026

Copy link
Copy Markdown
Contributor Author

@msanatan
image

@msanatan msanatan merged commit 4c9beaf into CoplayDev:main Jan 8, 2026
2 checks passed
@dsarno

dsarno commented Jan 8, 2026

Copy link
Copy Markdown
Collaborator

Thanks @Nonanti !

Inspiring me to do this for the c# code too, so I installed Unity's Code Coverage package in the Test Project to test it. See results below. Good stuff. We should add this @msanatan @Scriptwonder -- 33% is a decent start but we should cover the whole dang thing.

MCP for Unity Code Coverage C#

Generated on: 1/8/2026 - 2:28:25 PM
Parser: MultiReportParser (2x OpenCoverParser)
Assemblies: 6
Classes: 236
Files: 187
Covered lines: 8490
Uncovered lines: 16371
Coverable lines: 24861
Total lines: 48427
Line coverage: 34.1% (8490 of 24861)
Covered branches: 0
Total branches: 0
Covered methods: 929
Total methods: 2736
Method coverage: 33.9% (929 of 2736)
Name Covered Uncovered Coverable Total Line coverage Covered Total Branch coverage Covered Total Method coverage
Assembly-CSharp 0 1372 1372 2055 0% 0 0 **** 0 664 0%
Hello 0 3 3 10 0% 0 0 0 1 0%
LongUnityScriptClaudeTest 0 1369 1369 2045 0% 0 0 0 663 0%
Assembly-CSharp-Editor 0 77 77 125 0% 0 0 **** 0 3 0%
MCPForUnityTests.LiveLifecycle.LiveLifecycleStressMenu 0 77 77 125 0% 0 0 0 3 0%
MCPForUnity.Editor 4436 14409 18845 84853 23.5% 0 0 **** 569 1676 33.9%
MCPForUnity.Editor.Clients.ClaudeCliMcpConfigurator 0 169 169 607 0% 0 0 0 11 0%
MCPForUnity.Editor.Clients.CodexMcpConfigurator 0 69 69 607 0% 0 0 0 6 0%
MCPForUnity.Editor.Clients.Configurators.AntigravityConfigurator 0 3 3 32 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.CherryStudioConfigurator 0 17 17 93 0% 0 0 0 6 0%
MCPForUnity.Editor.Clients.Configurators.ClaudeCodeConfigurator 0 3 3 24 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.ClaudeDesktopConfigurator 0 17 17 56 0% 0 0 0 4 0%
MCPForUnity.Editor.Clients.Configurators.CodeBuddyCliConfigurator 0 3 3 29 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.CodexConfigurator 0 3 3 26 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.CursorConfigurator 0 3 3 27 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.KiloCodeConfigurator 0 3 3 29 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.KiroConfigurator 0 3 3 29 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.RiderConfigurator 0 3 3 29 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.TraeConfigurator 0 3 3 30 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.VSCodeConfigurator 0 3 3 28 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.VSCodeInsidersConfigurator 0 3 3 28 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.Configurators.WindsurfConfigurator 0 3 3 30 0% 0 0 0 2 0%
MCPForUnity.Editor.Clients.JsonFileMcpConfigurator 0 105 105 607 0% 0 0 0 6 0%
MCPForUnity.Editor.Clients.McpClientConfiguratorBase 0 34 34 607 0% 0 0 0 10 0%
MCPForUnity.Editor.Clients.McpClientRegistry 0 29 29 60 0% 0 0 0 2 0%
MCPForUnity.Editor.Dependencies.DependencyManager 0 74 74 143 0% 0 0 0 6 0%
MCPForUnity.Editor.Dependencies.Models.DependencyCheckResult 0 37 37 96 0% 0 0 0 16 0%
MCPForUnity.Editor.Dependencies.Models.DependencyStatus 0 19 19 65 0% 0 0 0 18 0%
MCPForUnity.Editor.Dependencies.PlatformDetectors.LinuxPlatformDetector 0 147 147 304 0% 0 0 0 12 0%
MCPForUnity.Editor.Dependencies.PlatformDetectors.MacOSPlatformDetector 0 149 149 303 0% 0 0 0 12 0%
MCPForUnity.Editor.Dependencies.PlatformDetectors.PlatformDetectorBase 0 57 57 115 0% 0 0 0 3 0%
MCPForUnity.Editor.Dependencies.PlatformDetectors.WindowsPlatformDetector 0 126 126 241 0% 0 0 0 9 0%
MCPForUnity.Editor.Helpers.AssetPathUtility 68 75 143 303 47.5% 0 0 9 12 75%
MCPForUnity.Editor.Helpers.CodexConfigHelper 157 35 192 312 81.7% 0 0 11 11 100%
MCPForUnity.Editor.Helpers.ComponentOps 45 127 172 308 26.1% 0 0 4 6 66.6%
MCPForUnity.Editor.Helpers.ConfigJsonBuilder 95 31 126 203 75.3% 0 0 5 7 71.4%
MCPForUnity.Editor.Helpers.ErrorResponse 12 2 14 108 85.7% 0 0 7 9 77.7%
MCPForUnity.Editor.Helpers.ExecPath 21 102 123 273 17% 0 0 1 6 16.6%
MCPForUnity.Editor.Helpers.GameObjectLookup 88 77 165 314 53.3% 0 0 12 14 85.7%
MCPForUnity.Editor.Helpers.GameObjectSerializer 183 52 235 558 77.8% 0 0 7 7 100%
MCPForUnity.Editor.Helpers.HttpEndpointUtility 18 15 33 86 54.5% 0 0 4 6 66.6%
MCPForUnity.Editor.Helpers.MaterialOps 138 146 284 397 48.5% 0 0 5 5 100%
MCPForUnity.Editor.Helpers.McpConfigurationHelper 61 116 177 283 34.4% 0 0 3 7 42.8%
MCPForUnity.Editor.Helpers.McpJobStateStore 0 33 33 62 0% 0 0 0 4 0%
MCPForUnity.Editor.Helpers.McpLog 11 14 25 53 44% 0 0 4 8 50%
MCPForUnity.Editor.Helpers.ObjectResolver 37 63 100 202 37% 0 0 3 7 42.8%
MCPForUnity.Editor.Helpers.PaginationRequest 23 0 23 149 100% 0 0 6 6 100%
MCPForUnity.Editor.Helpers.PaginationResponse[T] 21 0 21 149 100% 0 0 13 13 100%
MCPForUnity.Editor.Helpers.ParamCoercion 70 57 127 261 55.1% 0 0 8 9 88.8%
MCPForUnity.Editor.Helpers.PendingResponse 0 16 16 108 0% 0 0 0 11 0%
MCPForUnity.Editor.Helpers.PortManager 0 170 170 345 0% 0 0 0 14 0%
MCPForUnity.Editor.Helpers.ProjectIdentityUtility 43 106 149 260 28.8% 0 0 5 13 38.4%
MCPForUnity.Editor.Helpers.PropertyConversion 9 27 36 93 25% 0 0 1 4 25%
MCPForUnity.Editor.Helpers.RendererHelpers 0 63 63 168 0% 0 0 0 6 0%
MCPForUnity.Editor.Helpers.RenderPipelineUtility 64 56 120 195 53.3% 0 0 7 8 87.5%
MCPForUnity.Editor.Helpers.SuccessResponse 8 2 10 108 80% 0 0 4 6 66.6%
MCPForUnity.Editor.Helpers.TelemetryHelper 0 101 101 226 0% 0 0 0 12 0%
MCPForUnity.Editor.Helpers.UnityJsonSerializer 1 0 1 33 100% 0 0 1 1 100%
MCPForUnity.Editor.Helpers.UnityTypeResolver 83 28 111 217 74.7% 0 0 10 12 83.3%
MCPForUnity.Editor.Helpers.VectorParsing 67 288 355 731 18.8% 0 0 4 17 23.5%
MCPForUnity.Editor.McpCiBoot 0 7 7 21 0% 0 0 0 1 0%
MCPForUnity.Editor.MenuItems.MCPForUnityMenu 0 15 15 36 0% 0 0 0 3 0%
MCPForUnity.Editor.Migrations.LegacyServerSrcMigration 0 46 46 80 0% 0 0 0 2 0%
MCPForUnity.Editor.Migrations.StdIoVersionMigration 0 73 73 134 0% 0 0 0 4 0%
MCPForUnity.Editor.Models.Command 0 2 2 21 0% 0 0 0 4 0%
MCPForUnity.Editor.Models.McpClient 4 24 28 56 14.2% 0 0 1 3 33.3%
MCPForUnity.Editor.Resources.Editor.ActiveTool 0 12 12 64 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Editor.EditorState 0 8 8 27 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Editor.EditorTools 0 6 6 64 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Editor.PrefabStage 7 5 12 42 58.3% 0 0 1 1 100%
MCPForUnity.Editor.Resources.Editor.Selection 0 10 10 52 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Editor.Windows 0 21 21 59 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.McpForUnityResourceAttribute 0 9 9 37 0% 0 0 0 3 0%
MCPForUnity.Editor.Resources.MenuItems.GetMenuItems 16 19 35 71 45.7% 0 0 2 4 50%
MCPForUnity.Editor.Resources.Project.Layers 0 16 16 39 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Project.ProjectInfo 0 11 11 41 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Project.Tags 0 8 8 27 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Scene.GameObjectComponentResource 0 38 38 284 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Scene.GameObjectComponentsResource 26 13 39 284 66.6% 0 0 1 1 100%
MCPForUnity.Editor.Resources.Scene.GameObjectResource 31 14 45 284 68.8% 0 0 3 3 100%
MCPForUnity.Editor.Resources.Tests.GetTests 0 12 12 106 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Tests.GetTestsForMode 0 19 19 106 0% 0 0 0 1 0%
MCPForUnity.Editor.Resources.Tests.ModeParser 12 6 18 106 66.6% 0 0 1 1 100%
MCPForUnity.Editor.Services.BridgeControlService 15 69 84 157 17.8% 0 0 3 11 27.2%
MCPForUnity.Editor.Services.BridgeVerificationResult 0 4 4 82 0% 0 0 0 8 0%
MCPForUnity.Editor.Services.ClientConfigurationService 0 39 39 73 0% 0 0 0 5 0%
MCPForUnity.Editor.Services.ClientConfigurationSummary 0 7 7 69 0% 0 0 0 10 0%
MCPForUnity.Editor.Services.EditorPrefsWindowService 0 18 18 54 0% 0 0 0 4 0%
MCPForUnity.Editor.Services.EditorStateCache 90 60 150 433 60% 0 0 104 111 93.6%
MCPForUnity.Editor.Services.HttpBridgeReloadHandler 0 100 100 145 0% 0 0 0 4 0%
MCPForUnity.Editor.Services.McpEditorShutdownCleanup 0 35 35 77 0% 0 0 0 2 0%
MCPForUnity.Editor.Services.MCPServiceLocator 13 41 54 92 24% 0 0 5 12 41.6%
MCPForUnity.Editor.Services.PackageDeploymentResult 0 5 5 29 0% 0 0 0 10 0%
MCPForUnity.Editor.Services.PackageDeploymentService 0 181 181 304 0% 0 0 0 18 0%
MCPForUnity.Editor.Services.PackageUpdateService 49 12 61 162 80.3% 0 0 5 5 100%
MCPForUnity.Editor.Services.ParameterMetadata 0 5 5 70 0% 0 0 0 10 0%
MCPForUnity.Editor.Services.PathResolverService 34 118 152 250 22.3% 0 0 5 12 41.6%
MCPForUnity.Editor.Services.PlatformService 0 8 8 31 0% 0 0 0 2 0%
MCPForUnity.Editor.Services.ServerManagementService 65 748 813 1409 7.9% 0 0 6 38 15.7%
MCPForUnity.Editor.Services.StdioBridgeReloadHandler 0 64 64 116 0% 0 0 0 4 0%
MCPForUnity.Editor.Services.TestFilterOptions 0 4 4 52 0% 0 0 0 8 0%
MCPForUnity.Editor.Services.TestJob 15 0 15 586 100% 0 0 30 30 100%
MCPForUnity.Editor.Services.TestJobFailure 0 2 2 586 0% 0 0 0 4 0%
MCPForUnity.Editor.Services.TestJobManager 11 293 304 586 3.6% 0 0 2 50 4%
MCPForUnity.Editor.Services.TestRunnerNoThrottle 43 20 63 139 68.2% 0 0 14 16 87.5%
MCPForUnity.Editor.Services.TestRunnerService 0 265 265 603 0% 0 0 0 15 0%
MCPForUnity.Editor.Services.TestRunResult 0 41 41 603 0% 0 0 0 9 0%
MCPForUnity.Editor.Services.TestRunStatus 4 18 22 62 18.1% 0 0 4 7 57.1%
MCPForUnity.Editor.Services.TestRunSummary 0 18 18 603 0% 0 0 0 8 0%
MCPForUnity.Editor.Services.TestRunTestResult 0 26 26 603 0% 0 0 0 10 0%
MCPForUnity.Editor.Services.ToolDiscoveryService 0 152 152 275 0% 0 0 0 13 0%
MCPForUnity.Editor.Services.ToolMetadata 0 11 11 70 0% 0 0 0 23 0%
MCPForUnity.Editor.Services.Transport.TransportCommandDispatcher 18 208 226 420 7.9% 0 0 2 23 8.6%
MCPForUnity.Editor.Services.Transport.TransportManager 5 83 88 155 5.6% 0 0 2 13 15.3%
MCPForUnity.Editor.Services.Transport.Transports.StdioBridgeHost 1 722 723 1088 0.1% 0 0 2 32 6.2%
MCPForUnity.Editor.Services.Transport.Transports.StdioTransportClient 0 24 24 50 0% 0 0 0 7 0%
MCPForUnity.Editor.Services.Transport.Transports.WebSocketTransportClient 26 394 420 697 6.1% 0 0 3 27 11.1%
MCPForUnity.Editor.Services.Transport.TransportState 2 16 18 52 11.1% 0 0 2 10 20%
MCPForUnity.Editor.Services.UpdateCheckResult 4 0 4 60 100% 0 0 8 8 100%
MCPForUnity.Editor.Setup.SetupWindowService 0 45 45 110 0% 0 0 0 5 0%
MCPForUnity.Editor.Tools.BatchExecute 0 147 147 252 0% 0 0 0 6 0%
MCPForUnity.Editor.Tools.CommandRegistry 14 193 207 438 6.7% 0 0 3 15 20%
MCPForUnity.Editor.Tools.ComponentResolver 62 8 70 142 88.5% 0 0 6 6 100%
MCPForUnity.Editor.Tools.ExecuteMenuItem 15 7 22 53 68.1% 0 0 2 2 100%
MCPForUnity.Editor.Tools.FindGameObjects 13 8 21 72 61.9% 0 0 1 1 100%
MCPForUnity.Editor.Tools.GameObjects.GameObjectComponentHelpers 65 232 297 410 21.8% 0 0 4 9 44.4%
MCPForUnity.Editor.Tools.GameObjects.GameObjectCreate 93 153 246 338 37.8% 0 0 1 1 100%
MCPForUnity.Editor.Tools.GameObjects.GameObjectDelete 21 1 22 45 95.4% 0 0 1 1 100%
MCPForUnity.Editor.Tools.GameObjects.GameObjectDuplicate 0 51 51 86 0% 0 0 0 1 0%
MCPForUnity.Editor.Tools.GameObjects.GameObjectHandlers 0 5 5 22 0% 0 0 0 5 0%
MCPForUnity.Editor.Tools.GameObjects.GameObjectModify 131 48 179 240 73.1% 0 0 1 1 100%
MCPForUnity.Editor.Tools.GameObjects.GameObjectMoveRelative 0 62 62 119 0% 0 0 0 2 0%
MCPForUnity.Editor.Tools.GameObjects.ManageGameObject 37 11 48 115 77% 0 0 1 1 100%
MCPForUnity.Editor.Tools.GameObjects.ManageGameObjectCommon 70 55 125 210 56% 0 0 3 4 75%
MCPForUnity.Editor.Tools.GetTestJob 0 29 29 52 0% 0 0 0 1 0%
MCPForUnity.Editor.Tools.HandlerInfo 3 7 10 438 30% 0 0 3 5 60%
MCPForUnity.Editor.Tools.JsonUtil 5 10 15 31 33.3% 0 0 1 1 100%
MCPForUnity.Editor.Tools.ManageAsset 107 474 581 1120 18.4% 0 0 6 18 33.3%
MCPForUnity.Editor.Tools.ManageComponents 71 93 164 330 43.2% 0 0 5 7 71.4%
MCPForUnity.Editor.Tools.ManageEditor 0 182 182 378 0% 0 0 0 7 0%
MCPForUnity.Editor.Tools.ManageMaterial 199 156 355 596 56% 0 0 8 8 100%
MCPForUnity.Editor.Tools.ManageScene 140 235 375 755 37.3% 0 0 33 42 78.5%
MCPForUnity.Editor.Tools.ManageScript 119 1302 1421 2666 8.3% 0 0 4 33 12.1%
MCPForUnity.Editor.Tools.ManageScriptableObject 542 324 866 1522 62.5% 0 0 24 24 100%
MCPForUnity.Editor.Tools.ManageScriptRefreshHelpers 0 22 22 2666 0% 0 0 0 3 0%
MCPForUnity.Editor.Tools.ManageShader 0 142 142 343 0% 0 0 0 8 0%
MCPForUnity.Editor.Tools.McpForUnityToolAttribute 0 16 16 107 0% 0 0 0 16 0%
MCPForUnity.Editor.Tools.Prefabs.ManagePrefabs 95 63 158 278 60.1% 0 0 9 9 100%
MCPForUnity.Editor.Tools.ReadConsole 146 107 253 638 57.7% 0 0 7 9 77.7%
MCPForUnity.Editor.Tools.RefreshDebounce 0 39 39 2666 0% 0 0 0 3 0%
MCPForUnity.Editor.Tools.RefreshUnity 0 91 91 173 0% 0 0 0 2 0%
MCPForUnity.Editor.Tools.RunTests 40 26 66 126 60.6% 0 0 2 2 100%
MCPForUnity.Editor.Tools.ToolParameterAttribute 0 8 8 107 0% 0 0 0 8 0%
MCPForUnity.Editor.Tools.Vfx.LineCreate 0 90 90 130 0% 0 0 0 4 0%
MCPForUnity.Editor.Tools.Vfx.LineRead 0 12 12 52 0% 0 0 0 2 0%
MCPForUnity.Editor.Tools.Vfx.LineWrite 0 87 87 139 0% 0 0 0 8 0%
MCPForUnity.Editor.Tools.Vfx.ManageVFX 0 80 80 780 0% 0 0 0 5 0%
MCPForUnity.Editor.Tools.Vfx.ManageVfxCommon 0 7 7 22 0% 0 0 0 7 0%
MCPForUnity.Editor.Tools.Vfx.ParticleCommon 0 42 42 87 0% 0 0 0 3 0%
MCPForUnity.Editor.Tools.Vfx.ParticleControl 0 66 66 103 0% 0 0 0 4 0%
MCPForUnity.Editor.Tools.Vfx.ParticleRead 0 28 28 153 0% 0 0 0 3 0%
MCPForUnity.Editor.Tools.Vfx.ParticleWrite 0 156 156 217 0% 0 0 0 8 0%
MCPForUnity.Editor.Tools.Vfx.TrailControl 0 14 14 33 0% 0 0 0 2 0%
MCPForUnity.Editor.Tools.Vfx.TrailRead 0 9 9 49 0% 0 0 0 2 0%
MCPForUnity.Editor.Tools.Vfx.TrailWrite 0 51 51 90 0% 0 0 0 5 0%
MCPForUnity.Editor.Windows.Components.ClientConfig.McpClientConfigSection 0 296 296 443 0% 0 0 0 22 0%
MCPForUnity.Editor.Windows.Components.Connection.McpConnectionSection 64 477 541 814 11.8% 0 0 3 21 14.2%
MCPForUnity.Editor.Windows.Components.Settings.McpSettingsSection 0 255 255 398 0% 0 0 0 19 0%
MCPForUnity.Editor.Windows.Components.Tools.McpToolsSection 0 207 207 319 0% 0 0 0 16 0%
MCPForUnity.Editor.Windows.EditorPrefItem 0 4 4 349 0% 0 0 0 8 0%
MCPForUnity.Editor.Windows.EditorPrefsWindow 0 162 162 349 0% 0 0 0 10 0%
MCPForUnity.Editor.Windows.MCPForUnityEditorWindow 4 236 240 393 1.6% 0 0 1 18 5.5%
MCPForUnity.Editor.Windows.MCPSetupWindow 0 98 98 171 0% 0 0 0 9 0%
MCPForUnity.External.Tommy.StringUtils 50 49 99 2138 50.5% 0 0 5 8 62.5%
MCPForUnity.External.Tommy.TOML 5 0 5 2138 100% 0 0 3 3 100%
MCPForUnity.External.Tommy.TomlArray 31 43 74 2138 41.8% 0 0 14 19 73.6%
MCPForUnity.External.Tommy.TomlBoolean 4 1 5 2138 80% 0 0 6 7 85.7%
MCPForUnity.External.Tommy.TomlDateTime 0 6 6 2138 0% 0 0 0 8 0%
MCPForUnity.External.Tommy.TomlDateTimeLocal 0 10 10 2138 0% 0 0 0 10 0%
MCPForUnity.External.Tommy.TomlDateTimeOffset 0 6 6 2138 0% 0 0 0 8 0%
MCPForUnity.External.Tommy.TomlFloat 0 11 11 2138 0% 0 0 0 9 0%
MCPForUnity.External.Tommy.TomlFormatException 0 1 1 2138 0% 0 0 0 1 0%
MCPForUnity.External.Tommy.TomlInteger 0 6 6 2138 0% 0 0 0 9 0%
MCPForUnity.External.Tommy.TomlLazy 0 28 28 2138 0% 0 0 0 9 0%
MCPForUnity.External.Tommy.TomlNode 15 50 65 2138 23% 0 0 18 59 30.5%
MCPForUnity.External.Tommy.TomlParseException 0 7 7 2138 0% 0 0 0 3 0%
MCPForUnity.External.Tommy.TOMLParser 338 331 669 2138 50.5% 0 0 20 22 90.9%
MCPForUnity.External.Tommy.TomlString 13 4 17 2138 76.4% 0 0 10 13 76.9%
MCPForUnity.External.Tommy.TomlSyntax 23 13 36 2138 63.8% 0 0 9 16 56.2%
MCPForUnity.External.Tommy.TomlSyntaxException 0 9 9 2138 0% 0 0 0 4 0%
MCPForUnity.External.Tommy.TomlTable 87 13 100 2138 87% 0 0 15 20 75%
MCPForUnity.Runtime 126 190 316 3567 39.8% 0 0 **** 12 30 40%
MCPForUnity.Runtime.Helpers.ScreenshotCaptureResult 0 8 8 186 0% 0 0 0 4 0%
MCPForUnity.Runtime.Helpers.ScreenshotUtility 0 103 103 186 0% 0 0 0 6 0%
MCPForUnity.Runtime.Serialization.BoundsConverter 8 6 14 355 57.1% 0 0 1 2 50%
MCPForUnity.Runtime.Serialization.ColorConverter 12 4 16 355 75% 0 0 1 2 50%
MCPForUnity.Runtime.Serialization.Matrix4x4Converter 44 1 45 355 97.7% 0 0 2 2 100%
MCPForUnity.Runtime.Serialization.QuaternionConverter 12 4 16 355 75% 0 0 1 2 50%
MCPForUnity.Runtime.Serialization.RectConverter 0 16 16 355 0% 0 0 0 2 0%
MCPForUnity.Runtime.Serialization.UnityEngineObjectConverter 28 28 56 355 50% 0 0 4 4 100%
MCPForUnity.Runtime.Serialization.Vector2Converter 8 4 12 355 66.6% 0 0 1 2 50%
MCPForUnity.Runtime.Serialization.Vector3Converter 14 0 14 355 100% 0 0 2 2 100%
MCPForUnity.Runtime.Serialization.Vector4Converter 0 16 16 355 0% 0 0 0 2 0%
MCPForUnityTests.EditMode 3928 318 4246 9784 92.5% 0 0 **** 348 361 96.3%
ArrayStressSO 1 0 1 7 100% 0 0 1 1 100%
MCPForUnityTests.Editor.Helpers.CodexConfigHelperTests 284 12 296 597 95.9% 0 0 19 19 100%
MCPForUnityTests.Editor.Helpers.Matrix4x4ConverterTests 61 0 61 134 100% 0 0 8 8 100%
MCPForUnityTests.Editor.Helpers.PaginationTests 111 0 111 209 100% 0 0 18 18 100%
MCPForUnityTests.Editor.Helpers.WriteToConfigTests 242 6 248 486 97.5% 0 0 17 17 100%
MCPForUnityTests.Editor.Resources.MenuItems.GetMenuItemsTests 38 3 41 69 92.6% 0 0 4 4 100%
MCPForUnityTests.Editor.Services.MockAssetStorePackageUpdateService 3 8 11 296 27.2% 0 0 1 4 25%
MCPForUnityTests.Editor.Services.PackageUpdateServiceTests 127 3 130 296 97.6% 0 0 21 21 100%
MCPForUnityTests.Editor.TestUtilities 42 27 69 140 60.8% 0 0 5 6 83.3%
MCPForUnityTests.Editor.Tools.AIPropertyMatchingTests 77 0 77 168 100% 0 0 15 15 100%
MCPForUnityTests.Editor.Tools.CommandRegistryTests 20 1 21 54 95.2% 0 0 3 3 100%
MCPForUnityTests.Editor.Tools.ComponentResolverTests 78 0 78 145 100% 0 0 11 11 100%
MCPForUnityTests.Editor.Tools.DomainReloadResilienceTests 0 113 113 289 0% 0 0 0 8 0%
MCPForUnityTests.Editor.Tools.ExecuteMenuItemTests 19 0 19 39 100% 0 0 4 4 100%
MCPForUnityTests.Editor.Tools.Fixtures.ManageScriptableObjectTestDefinition 4 0 4 27 100% 0 0 4 4 100%
MCPForUnityTests.Editor.Tools.Fixtures.ManageScriptableObjectTestDefinitionBase 2 0 2 14 100% 0 0 2 2 100%
MCPForUnityTests.Editor.Tools.GameObjectAPIStressTests 276 0 276 570 100% 0 0 16 16 100%
MCPForUnityTests.Editor.Tools.ManageGameObjectCreateTests 202 0 202 491 100% 0 0 24 24 100%
MCPForUnityTests.Editor.Tools.ManageGameObjectDeleteTests 158 3 161 380 98.1% 0 0 15 15 100%
MCPForUnityTests.Editor.Tools.ManageGameObjectModifyTests 171 0 171 456 100% 0 0 24 24 100%
MCPForUnityTests.Editor.Tools.ManageGameObjectTests 291 7 298 637 97.6% 0 0 23 23 100%
MCPForUnityTests.Editor.Tools.ManageMaterialPropertiesTests 54 3 57 149 94.7% 0 0 7 7 100%
MCPForUnityTests.Editor.Tools.ManageMaterialReproTests 25 3 28 72 89.2% 0 0 3 3 100%
MCPForUnityTests.Editor.Tools.ManageMaterialStressTests 74 3 77 181 96.1% 0 0 5 5 100%
MCPForUnityTests.Editor.Tools.ManageMaterialTests 98 3 101 223 97% 0 0 7 7 100%
MCPForUnityTests.Editor.Tools.ManagePrefabsTests 119 10 129 249 92.2% 0 0 10 10 100%
MCPForUnityTests.Editor.Tools.ManageSceneHierarchyPagingTests 59 0 59 105 100% 0 0 3 3 100%
MCPForUnityTests.Editor.Tools.ManageScriptableObjectStressTests 418 1 419 1379 99.7% 0 0 26 26 100%
MCPForUnityTests.Editor.Tools.ManageScriptableObjectTests 127 0 127 307 100% 0 0 8 8 100%
MCPForUnityTests.Editor.Tools.ManageScriptValidationTests 61 35 96 182 63.5% 0 0 10 11 90.9%
MCPForUnityTests.Editor.Tools.MaterialDirectPropertiesTests 77 7 84 164 91.6% 0 0 5 5 100%
MCPForUnityTests.Editor.Tools.MaterialMeshInstantiationTests 97 16 113 202 85.8% 0 0 8 8 100%
MCPForUnityTests.Editor.Tools.MaterialParameterToolTests 72 12 84 167 85.7% 0 0 5 5 100%
MCPForUnityTests.Editor.Tools.MCPToolParameterTests 379 41 420 756 90.2% 0 0 12 12 100%
MCPForUnityTests.Editor.Tools.ReadConsoleTests 31 1 32 79 96.8% 0 0 2 2 100%
MCPForUnityTests.Editor.Tools.RunTestsTests 30 0 30 65 100% 0 0 2 2 100%
TestAsmdef 0 5 5 18 0% 0 0 **** 0 2 0%
TestNamespace.CustomComponent 0 5 5 18 0% 0 0 0 2 0%

@Nonanti

Nonanti commented Jan 10, 2026

Copy link
Copy Markdown
Contributor Author

@dsarno This is really interesting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants