Skip to content

[WIP] Add tap-test-gen skill for TAP test generation#5369

Open
wazir-ahmed wants to merge 1 commit intov3.0from
agent-skill-tap-test
Open

[WIP] Add tap-test-gen skill for TAP test generation#5369
wazir-ahmed wants to merge 1 commit intov3.0from
agent-skill-tap-test

Conversation

@wazir-ahmed
Copy link
Member

@wazir-ahmed wazir-ahmed commented Feb 11, 2026

Add a new Claude/OpenCode skill for generating ProxySQL TAP tests with supporting documentation covering the test infrastructure, group system and CI integration.

  • Create tap-test-gen skill with workflows for unit and integration tests, including templates and best practices
  • Add tap_test_groups.md documenting the CI group system, hooks and environment variable filtering
  • Add tap_test_infra.md describing available infrastructures, hostgroups and the test runner
  • Reorganize tap docs into doc/tap/ directory
  • Link reference docs to skill via symlinks

[skip-ci]

Summary by CodeRabbit

  • Documentation
    • Added comprehensive TAP testing documentation covering test groups, infrastructure configuration, and test generation
    • Includes best practices, setup guidelines, configuration examples, and troubleshooting aids for the testing framework
    • Provides step-by-step workflows for unit and integration testing with CI integration guidance

Add a new Claude/OpenCode skill for generating ProxySQL TAP tests
with supporting documentation covering the test infrastructure,
group system and CI integration.

- Create `tap-test-gen` skill with workflows for unit and integration
  tests, including templates and best practices
- Add `tap_test_groups.md` documenting the CI group system, hooks
  and environment variable filtering
- Add `tap_test_infra.md` describing available infrastructures,
  hostgroups and the test runner
- Reorganize tap docs into `doc/tap/` directory
- Link reference docs to skill via symlinks

Signed-off-by: Wazir Ahmed <wazir@proxysql.com>
@gemini-code-assist
Copy link

Summary of Changes

Hello @wazir-ahmed, 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 introduces a new skill aimed at streamlining the development and understanding of ProxySQL's TAP (Test Anything Protocol) tests. It provides comprehensive documentation on the test group system, infrastructure components, and best practices for creating and integrating both unit and integration tests into the continuous integration pipeline. The changes facilitate easier test generation, clearer CI configuration, and improved debugging capabilities for test failures.

Highlights

  • New tap-test-gen skill added: A new skill has been introduced to assist with the generation and management of ProxySQL TAP tests, providing guidance for both unit and integration testing.
  • Comprehensive TAP documentation: Detailed documentation has been added covering the TAP test group system (tap_test_groups.md) and the underlying test infrastructure (tap_test_infra.md), explaining how tests are organized, executed, and debugged within the CI environment.
  • Documentation reorganization and linking: Existing TAP documentation has been moved into a new doc/tap/ directory, and symlinks have been created within the tap-test-gen skill's references/ directory to ensure easy access and single-source maintenance.
  • CI integration and best practices: The new skill and documentation provide clear workflows for writing tests, registering them in groups.json, and adhering to best practices for CI integration and debugging.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • doc/tap/tap_test_groups.md
    • Added a new document detailing the ProxySQL TAP test group system, including group configuration, hooks, and filtering mechanisms.
  • doc/tap/tap_test_guide.md
    • Moved and renamed the existing TAP test guide from doc/tap_test_guide.md to doc/tap/tap_test_guide.md.
  • doc/tap/tap_test_infra.md
    • Added a new document describing the ProxySQL TAP test infrastructure, test runner, available backends, and debugging procedures.
  • skills/tap-test-gen/SKILL.md
    • Added the main skill definition and documentation for tap-test-gen, outlining unit and integration test workflows, CI registration, and debugging guidance.
  • skills/tap-test-gen/references/tap_test_groups.md
    • Created a symlink to the doc/tap/tap_test_groups.md document.
  • skills/tap-test-gen/references/tap_test_guide.md
    • Created a symlink to the doc/tap/tap_test_guide.md document.
  • skills/tap-test-gen/references/tap_test_infra.md
    • Created a symlink to the doc/tap/tap_test_infra.md document.
Activity
  • The pull request is currently marked as Work In Progress (WIP), indicating that development is ongoing and it is not yet ready for final review.
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.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

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.

@wazir-ahmed wazir-ahmed changed the title [WIP] skill: Add tap-test-gen skill for TAP test generation [WIP] Add tap-test-gen skill for TAP test generation Feb 11, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 11, 2026

📝 Walkthrough

Walkthrough

Documentation files are added to describe the TAP test infrastructure, test grouping system, and test generation workflow for ProxySQL. No code changes are introduced; the additions provide comprehensive reference materials for managing and running TAP-based tests.

Changes

Cohort / File(s) Summary
TAP Infrastructure Documentation
doc/tap/tap_test_infra.md, doc/tap/tap_test_groups.md
Comprehensive guides covering TAP test infrastructure components, ProxySQL configuration, test group structure, environment filtering, and creation guidelines. Includes test runner flow, infrastructure mappings, and hook mechanisms.
Test Generation Skill Documentation
skills/tap-test-gen/SKILL.md
Detailed documentation on TAP test generation workflow, including structure guidance, unit vs. integration test criteria, CI registration procedures, best practices, and debugging references.
Reference Links
skills/tap-test-gen/references/*
Navigation references to TAP test infrastructure, groups, and guides documentation for quick access from the skills module.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 A labyrinth of tests, now mapped with care,
Infrastructure, groups, and workflows fair,
Documentation blooms in markdown light,
ProxySQL tests aligned just right!

🚥 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 describes the primary change: adding a new 'tap-test-gen' skill for TAP test generation, which is the main purpose of this PR.
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.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch agent-skill-tap-test

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
skills/tap-test-gen/SKILL.md (1)

28-39: Add language specifier to fenced code block.

The fenced code block starting at line 28 should specify a language identifier for proper rendering and linting compliance. Since this is ASCII art/text, use text or plaintext.

📝 Proposed fix
-```
+```text
 Is the code under test a pure function with no side effects?
doc/tap/tap_test_groups.md (4)

22-24: Add language specifier to fenced code block.

The fenced code block should specify a language identifier. Since this is a file path, use text or plaintext.

📝 Proposed fix
-```
+```text
 test/tap/groups/groups.json

</details>

---

`134-142`: **Add language specifier to fenced code block.**

The fenced code block should specify a language identifier. Since this is a pattern description, use `text` or `plaintext`.



<details>
<summary>📝 Proposed fix</summary>

```diff
-```
+```text
 {base-name}[-variant]-g{number}

</details>

---

`169-178`: **Add language specifier to fenced code block.**

The fenced code block should specify a language identifier. Since this is a directory tree structure, use `text` or `plaintext`.



<details>
<summary>📝 Proposed fix</summary>

```diff
-```
+```text
 test/tap/groups/
 ├── groups.json

356-363: Add language specifier to fenced code block.

The fenced code block should specify a language identifier. Since this is a directory tree structure, use text or plaintext.

📝 Proposed fix
-```
+```text
 jenkins-build-scripts/infra-your-backend/
 ├── docker-compose.yml

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


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.

@sonarqubecloud
Copy link

Copy link

@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 a new tap-test-gen skill and comprehensive documentation for the TAP testing framework in ProxySQL. The changes include detailed guides on test infrastructure, test groups, and best practices for writing both unit and integration tests. The documentation is well-structured and will be a great resource for developers. I've found a few minor issues in the documentation, including a broken link, an inconsistent code example, and an incomplete table of environment variables. My review includes suggestions to address these points to improve the clarity and correctness of the new documentation.

# test/tap/groups/your-backend/pre-proxysql.bash
#!/usr/bin/env bash

INFRA=infra-$(basename $(dirname "$0") | sed 's/-g[0-9]//')

Choose a reason for hiding this comment

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

medium

The shell command to derive the infrastructure name is inconsistent with the one in the example on line 210 and the rule described in section 4.3. It's missing | sed 's/_.*//' to handle group names with underscore suffixes (like rand10_1). For consistency and robustness, please update the command.

Suggested change
INFRA=infra-$(basename $(dirname "$0") | sed 's/-g[0-9]//')
INFRA=infra-$(basename $(dirname "$0") | sed 's/-g[0-9]//' | sed 's/_.*//')


## Related Documents

- [tap_test_agent_skill.md](tap_test_agent_skill.md) - Main skill document

Choose a reason for hiding this comment

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

medium

The link to [tap_test_agent_skill.md](tap_test_agent_skill.md) appears to be broken, as this file is not part of the repository or this pull request. Based on the context of this PR, did you mean to link to the new tap-test-gen skill documentation? Please correct the link to point to the intended document.

Comment on lines +75 to +87
| Variable | Description | Default |
|----------|-------------|---------|
| `TAP_HOST` | ProxySQL host | `127.0.0.1` |
| `TAP_PORT` | ProxySQL MySQL port | `6033` |
| `TAP_ADMINHOST` | ProxySQL admin host | `127.0.0.1` |
| `TAP_ADMINPORT` | ProxySQL admin port | `6032` |
| `TAP_USERNAME` | Test user username | `testuser` |
| `TAP_PASSWORD` | Test user password | `testuser` |
| `TAP_ADMINUSERNAME` | Admin username | `admin` |
| `TAP_ADMINPASSWORD` | Admin password | `admin` |
| `TAP_MYSQLHOST` | Backend MySQL host | `127.0.0.1` |
| `TAP_MYSQLPORT` | Backend MySQL port | `3306` |

Choose a reason for hiding this comment

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

medium

The table of "Connection Variables" is incomplete. It's missing several variables that are mentioned later in the document in section 5.3 and are available to tests, such as TAP_MYSQLUSERNAME, TAP_MYSQLPASSWORD, and all the TAP_PGSQL* variables. Please update the table to include all available connection-related environment variables for completeness and to avoid confusion.

Here are the missing variables that should be added to the table:

  • TAP_MYSQLUSERNAME
  • TAP_MYSQLPASSWORD
  • TAP_PGSQLHOST
  • TAP_PGSQLPORT
  • TAP_PGSQLUSERNAME
  • TAP_PGSQLPASSWORD

@mirostauder
Copy link
Contributor

retest this please

@renecannao
Copy link
Contributor

@wazir-ahmed : pull requests that do not need CI run needs [skip-ci] in the title, please remember

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