Skip to content

test(cli): add unit tests for restore ACP command (#23402)#26053

Merged
cocosheng-g merged 6 commits intomainfrom
acp-test
Apr 27, 2026
Merged

test(cli): add unit tests for restore ACP command (#23402)#26053
cocosheng-g merged 6 commits intomainfrom
acp-test

Conversation

@cocosheng-g
Copy link
Copy Markdown
Contributor

@cocosheng-g cocosheng-g commented Apr 27, 2026

Summary

This PR adds missing unit test coverage for the ACP restore and restore list commands in the CLI.

Details

  • Added packages/cli/src/acp/commands/restore.test.ts
  • Achieved 100% statement and branch coverage for packages/cli/src/acp/commands/restore.ts
  • Covered success paths, failure paths (missing file, invalid JSON, unexpected errors), and edge cases (filename with/without .json extension, missing metadata in checkpoints).
  • Note: The source file packages/cli/src/acp/commands/restore.ts remains unchanged per request. The tests have been adjusted to be compatible with its original implementation.

Related Issues

Fixes #23402

How to Validate

Run the unit tests in the CLI workspace:

npm run test --workspace @google/gemini-cli -- src/acp/commands/restore.test.ts

Expect all 13 tests to pass with 100% coverage for the target file.

Pre-Merge Checklist

  • Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run

@cocosheng-g cocosheng-g requested a review from a team as a code owner April 27, 2026 16:17
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request improves the reliability of the CLI by introducing robust unit testing for the ACP restore functionality. By ensuring all code paths are exercised, including error handling and edge cases, this change helps maintain stability and provides confidence in the checkpoint restoration process.

Highlights

  • Unit Test Coverage: Added comprehensive unit tests for the ACP 'restore' and 'restore list' CLI commands, achieving 100% statement and branch coverage.
  • Test Scenarios: Covered success paths, various failure modes (missing files, invalid JSON, unexpected errors), and edge cases such as filename extensions and missing metadata.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@cocosheng-g cocosheng-g self-assigned this Apr 27, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces unit tests for the RestoreCommand and ListCheckpointsCommand within the CLI package, covering functionality such as checkpoint restoration, listing, and error handling. The review feedback indicates that the mocks for getCheckpointInfoList are inconsistent with the actual CheckpointInfo interface defined in the core package. Specifically, the tests use properties like fileName, toolName, and status which are not present in the real interface, and the use of "as unknown as" type assertions is masking potential logic errors in the CLI implementation.

Comment thread packages/cli/src/acp/commands/restore.test.ts Outdated
Comment thread packages/cli/src/acp/commands/restore.test.ts Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 27, 2026

Size Change: -4 B (0%)

Total Size: 33.8 MB

Filename Size Change
./bundle/chunk-277F3ETD.js 0 B -2.73 MB (removed) 🏆
./bundle/chunk-E3QQILYR.js 0 B -3.8 kB (removed) 🏆
./bundle/chunk-F4XSFFH6.js 0 B -14.6 MB (removed) 🏆
./bundle/chunk-HD3RHPQG.js 0 B -672 kB (removed) 🏆
./bundle/chunk-LKDYKQY5.js 0 B -3.43 kB (removed) 🏆
./bundle/chunk-WHYVLK6G.js 0 B -49.2 kB (removed) 🏆
./bundle/core-SILBHRJT.js 0 B -48 kB (removed) 🏆
./bundle/devtoolsService-E6M3SJXR.js 0 B -27.8 kB (removed) 🏆
./bundle/gemini-WJ3FW6E6.js 0 B -573 kB (removed) 🏆
./bundle/interactiveCli-ZXPWUQMT.js 0 B -1.31 MB (removed) 🏆
./bundle/liteRtServerManager-L44Y3LMF.js 0 B -2.08 kB (removed) 🏆
./bundle/oauth2-provider-QZ6LXW7K.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-HVMGQMNI.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/chunk-N3HINQRT.js 3.8 kB +3.8 kB (new file) 🆕
./bundle/chunk-PK7IXPP5.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-PMPQS7SD.js 672 kB +672 kB (new file) 🆕
./bundle/chunk-QKZIJAKA.js 14.6 MB +14.6 MB (new file) 🆕
./bundle/chunk-YYM6F6KB.js 2.73 MB +2.73 MB (new file) 🆕
./bundle/core-4BQY2S5R.js 48 kB +48 kB (new file) 🆕
./bundle/devtoolsService-BWPIZ7EU.js 27.8 kB +27.8 kB (new file) 🆕
./bundle/gemini-7CYK6OI2.js 573 kB +573 kB (new file) 🆕
./bundle/interactiveCli-4LOD5FWJ.js 1.31 MB +1.31 MB (new file) 🆕
./bundle/liteRtServerManager-GPHYMKO6.js 2.08 kB +2.08 kB (new file) 🆕
./bundle/oauth2-provider-NH6X4ZNL.js 9.16 kB +9.16 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
./bundle/bundled/third_party/index.js 8 MB 0 B
./bundle/chunk-34MYV7JD.js 2.45 kB 0 B
./bundle/chunk-5AUYMPVF.js 858 B 0 B
./bundle/chunk-5PS3AYFU.js 1.18 kB 0 B
./bundle/chunk-664ZODQF.js 124 kB 0 B
./bundle/chunk-DAHVX5MI.js 206 kB 0 B
./bundle/chunk-IUUIT4SU.js 56.5 kB 0 B
./bundle/chunk-MTD736U4.js 1.97 MB 0 B
./bundle/chunk-RJTRUG2J.js 39.8 kB 0 B
./bundle/cleanup-45LFF2KS.js 0 B -932 B (removed) 🏆
./bundle/devtools-36NN55EP.js 696 kB 0 B
./bundle/dist-T73EYRDX.js 356 B 0 B
./bundle/events-XB7DADIJ.js 418 B 0 B
./bundle/examples/hooks/scripts/on-start.js 188 B 0 B
./bundle/examples/mcp-server/example.js 1.43 kB 0 B
./bundle/gemini.js 4.97 kB 0 B
./bundle/getMachineId-bsd-TXG52NKR.js 1.55 kB 0 B
./bundle/getMachineId-darwin-7OE4DDZ6.js 1.55 kB 0 B
./bundle/getMachineId-linux-SHIFKOOX.js 1.34 kB 0 B
./bundle/getMachineId-unsupported-5U5DOEYY.js 1.06 kB 0 B
./bundle/getMachineId-win-6KLLGOI4.js 1.72 kB 0 B
./bundle/memoryDiscovery-NSOLCG4U.js 980 B 0 B
./bundle/multipart-parser-KPBZEGQU.js 11.7 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js 222 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js 229 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js 13.4 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/types.js 132 B 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B
./bundle/sandbox-macos-strict-open.sb 4.82 kB 0 B
./bundle/sandbox-macos-strict-proxied.sb 5.02 kB 0 B
./bundle/src-QVCVGIUX.js 47 kB 0 B
./bundle/start-GM42SN4R.js 0 B -622 B (removed) 🏆
./bundle/tree-sitter-7U6MW5PS.js 274 kB 0 B
./bundle/tree-sitter-bash-34ZGLXVX.js 1.84 MB 0 B
./bundle/cleanup-EXI5L5DW.js 932 B +932 B (new file) 🆕
./bundle/start-JNPNUGBW.js 622 B +622 B (new file) 🆕

compressed-size-action

@cocosheng-g
Copy link
Copy Markdown
Contributor Author

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request adds unit tests for the RestoreCommand and ListCheckpointsCommand in the CLI package, covering various edge cases and error conditions. A high-priority issue was noted regarding the getCheckpointInfoList mock, which uses properties that do not exist in the official CheckpointInfo interface. This indicates that the current implementation may be relying on incorrect types or unsafe casting, which could lead to data display issues in production.

Comment thread packages/cli/src/acp/commands/restore.test.ts Outdated
@gemini-cli gemini-cli Bot added priority/p3 Backlog - a good idea but not currently a priority. area/core Issues related to User Interface, OS Support, Core Functionality labels Apr 27, 2026
@cocosheng-g cocosheng-g enabled auto-merge April 27, 2026 16:58
@cocosheng-g cocosheng-g added this pull request to the merge queue Apr 27, 2026
Merged via the queue into main with commit 2de8190 Apr 27, 2026
27 checks passed
@cocosheng-g cocosheng-g deleted the acp-test branch April 27, 2026 17:21
kimjune01 pushed a commit to kimjune01/gemini-cli-claude that referenced this pull request May 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/core Issues related to User Interface, OS Support, Core Functionality priority/p3 Backlog - a good idea but not currently a priority.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test(ACP): Add missing unit coverage for restore command flows

2 participants