logo
2
1
WeChat Login

git2go-tester

git2go 库的可视化测试工具,提供 Web 界面对 git2go 的 API 进行交互式测试。

功能

  • 22 个测试分组,62 个用例,覆盖 git2go 核心 API
  • 每个用例带执行流程图(入参→调用→出参可视化)
  • Session 隔离:每个访问者独立 session,互不干扰
  • 并发执行:多用户同时使用不会互相阻塞
  • 支持单个运行、按组运行、全部运行、一键清理

快速启动

前置要求

  • Go 1.21+
  • libgit2 静态库(已在 git2go 仓库中通过脚本编译)
  • cmake / gcc(用于编译 libgit2)

在已有 libgit2 环境上运行

# 1. 克隆 git2go-tester git clone https://cnb.cool/cnb/git2go-tester cd git2go-tester # 2. 直接运行(脚本会自动拉依赖、编译 libgit2、启动服务) ./run.sh

浏览器访问 http://localhost:7070

说明:首次运行会自动下载 git2go v35.1.1 并编译 libgit2 静态库,大约需要 2-5 分钟。 后续重启只需重新执行 ./run.sh,检测到静态库已存在则跳过编译。

项目结构

git2go-tester/ ├── run.sh # 启动脚本(拉依赖→编译→运行) ├── go.mod # Go 模块定义 ├── server.go # HTTP Server、路由、Session 管理 ├── testcase.go # 所有测试用例定义 ├── index.go # 前端 HTML 嵌入(go:embed) └── static/ └── index.html # 前端单页面

架构说明

后端(server.go + testcase.go)

HTTP 路由:

路由方法说明
/GET返回前端页面
/api/sessionPOST创建新 session,返回 sid
/api/groupsGET返回所有测试分组和用例(含状态)
/api/runPOST执行测试,支持指定 group/name 或全部
/api/resultGET获取单个测试结果
/api/resultsGET获取当前 session 所有结果
/api/clearPOST清除当前 session 所有结果

Session 隔离:

  • 每次访问页面自动分配 8 位 session ID
  • 所有结果存在内存 map 里,按 session 隔离
  • 请求通过 X-Session-ID header 或 ?sid= 参数传递 sid

并发执行:

  • 每个测试用例跑在独立 goroutine
  • 每个用例最多 30 秒超时(context.WithTimeout)
  • HTTP Server 设有 ReadTimeout/WriteTimeout 防止请求堆积

测试用例(testcase.go):

  • 每个用例是一个 TestCase 结构体,包含名称、分组、描述、流程步骤(Flow)、执行函数
  • Flow []FlowStep 定义执行步骤,前端据此画流程图
  • 工具函数 tempRepo() / seedCommit() 提供隔离的临时仓库

前端(static/index.html)

纯原生 JS + CSS,无任何框架依赖,单文件约 700 行。

布局:

  • 左侧 Sidebar:分组列表 + 用例树 + 统计徽章
  • 右侧 Main:用例详情(接口说明 + 流程图 + 执行日志)

流程图渲染:

  • 纯 SVG 绘制,根据 flow 数组动态生成
  • 6 种节点类型:input📥 / call⚙️ / output📤 / check✅ / error❌ / data📋
  • 节点间用箭头连接,颜色和形状区分类型

接口说明:

  • 从 flow 中提取入参/调用链/出参三列展示
  • 运行前后均可见

About

No description, topics, or website provided.
Language
Go63%
HTML34.9%
Dockerfile1.2%
Shell0.7%
Others0.2%