Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions bounty-497-program-testing/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# SolFoundry Program Testing Framework - Environment Configuration
# Copy this file to .env and update the values

# Solana 集群配置
SOLANA_CLUSTER_URL=http://127.0.0.1:8899
SOLANA_COMMITMENT=confirmed

# 测试钱包配置
TEST_WALLET_KEYPAIR=/path/to/keypair.json
TEST_WALLET_ADDRESS=

# 覆盖率配置
COVERAGE_ENABLED=true
COVERAGE_REPORT_DIR=./coverage
COVERAGE_THRESHOLD=80

# 测试运行器配置
TEST_TIMEOUT=30000
TEST_PARALLEL=true
TEST_MAX_WORKERS=4
TEST_REPORTER=spec

# 模糊测试配置
FUZZ_ITERATIONS=1000
FUZZ_SEED=

# 日志配置
LOG_LEVEL=info
LOG_FILE=./logs/test.log

# Docker 配置
DOCKER_SOLANA_IMAGE=ghcr.io/solana-programs/validator:v1.17.15
DOCKER_NETWORK=solfoundry-testing
139 changes: 139 additions & 0 deletions bounty-497-program-testing/CHECKLIST.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# SolFoundry #497 Program Testing Framework - 验收清单

## 项目信息
- **Issue**: #497
- **项目**: Program Testing Framework
- **金额**: 275,000 $FNDRY
- **状态**: 开发完成

---

## ✅ 验收标准

### 核心功能
| 标准 | 状态 | 说明 |
|------|------|------|
| 单元测试框架 | ✅ | `src/runner.ts` - 支持 describe/it/expect 语法 |
| 集成测试支持 | ✅ | `src/runner.ts` - 支持多程序交互测试 |
| 模糊测试引擎 | ✅ | `src/fuzz.ts` - 自动边界条件测试,1000+ 迭代 |
| 覆盖率报告 | ✅ | `src/coverage.ts` - HTML/LCOV 格式输出 |
| 并行执行 | ✅ | `src/runner.ts` - 配置 maxWorkers |
| Mock/Stub 工具 | ✅ | `src/mock.ts` - 完整 Mock/Spy/Stub 支持 |

### 断言库
| 标准 | 状态 | 说明 |
|------|------|------|
| toBe / toEqual | ✅ | `src/assert.ts` |
| toBeTruthy / toBeFalsy | ✅ | `src/assert.ts` |
| toBeNull / toBeUndefined | ✅ | `src/assert.ts` |
| toContain / toHaveLength | ✅ | `src/assert.ts` |
| toMatch / toThrow | ✅ | `src/assert.ts` |
| toBeGreaterThan / lessThan | ✅ | `src/assert.ts` |
| toBeCloseTo | ✅ | `src/assert.ts` |
| not 修饰符 | ✅ | `src/assert.ts` |

### 文档
| 标准 | 状态 | 文件 |
|------|------|------|
| README.md | ✅ | 完整使用文档 |
| API 参考 | ✅ | `src/index.ts` 导出说明 |
| 使用示例 | ✅ | `examples/` 目录 |
| 快速入门 | ✅ | README.md 快速开始章节 |

### 代码示例
| 示例 | 状态 | 文件 |
|------|------|------|
| 基础测试 | ✅ | `examples/basic-test.ts` |
| Mock 测试 | ✅ | `examples/mock-test.ts` |
| 模糊测试 | ✅ | `examples/fuzz-test.ts` |
| 单元测试 | ✅ | `tests/unit/assert.test.ts` |
| Mock 测试 | ✅ | `tests/unit/mock.test.ts` |

### 配置
| 配置 | 状态 | 文件 |
|------|------|------|
| package.json | ✅ | 项目配置和脚本 |
| tsconfig.json | ✅ | TypeScript 配置 |
| docker-compose.yml | ✅ | Docker 部署配置 |
| .env.example | ✅ | 环境变量模板 |
| Dockerfile | ✅ | 容器构建配置 |

### 代码质量
| 标准 | 状态 | 说明 |
|------|------|------|
| TypeScript 严格模式 | ✅ | `tsconfig.json` strict: true |
| 无硬编码密码 | ✅ | 所有配置通过环境变量 |
| 镜像锁定版本 | ✅ | Dockerfile 使用具体版本 |
| 代码注释 | ✅ | 所有模块有 JSDoc 注释 |
| 类型定义 | ✅ | `src/types.ts` 完整类型 |

---

## 📁 交付文件清单

```
solfoundry-program-testing/
├── src/
│ ├── index.ts ✅ 主入口
│ ├── types.ts ✅ 类型定义
│ ├── runner.ts ✅ 测试运行器
│ ├── assert.ts ✅ 断言库
│ ├── mock.ts ✅ Mock 工具
│ ├── fuzz.ts ✅ 模糊测试
│ └── coverage.ts ✅ 覆盖率追踪
├── tests/
│ ├── unit/
│ │ ├── assert.test.ts ✅ 断言测试
│ │ └── mock.test.ts ✅ Mock 测试
│ ├── integration/ 📁 集成测试目录
│ └── fuzz/ 📁 模糊测试目录
├── examples/
│ ├── basic-test.ts ✅ 基础示例
│ ├── mock-test.ts ✅ Mock 示例
│ └── fuzz-test.ts ✅ 模糊测试示例
├── package.json ✅
├── tsconfig.json ✅
├── docker-compose.yml ✅
├── .env.example ✅
├── Dockerfile ✅
├── README.md ✅
└── CHECKLIST.md ✅ 本文件
```

---

## 🚀 部署说明

### 本地开发
```bash
cd solfoundry-program-testing
pnpm install
pnpm build
pnpm test
```

### Docker 部署
```bash
docker-compose up -d
docker-compose exec app pnpm test
```

### 生成覆盖率报告
```bash
pnpm test:coverage
open coverage/index.html
```

---

## 💰 收款信息

**USDT TRC20**: `TMLkvEDrjvHEUbWYU1jfqyUKmbLNZkx6T1`

---

## 📝 PR 提交

- **分支**: `bounty-497-program-testing`
- **PR 标题**: `[BOUNTY #497] Program Testing Framework (275k $FNDRY)`
- **提交时间**: 2026-03-23
35 changes: 35 additions & 0 deletions bounty-497-program-testing/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
FROM node:20-alpine

# 安装必要的工具
RUN apk add --no-cache \
git \
python3 \
make \
g++

# 设置工作目录
WORKDIR /app

# 安装 pnpm
RUN npm install -g pnpm@8

# 复制 package 文件
COPY package.json pnpm-lock.yaml* ./

# 安装依赖
RUN pnpm install --frozen-lockfile || pnpm install

# 复制源代码
COPY . .

# 构建项目
RUN pnpm build

# 创建非 root 用户
RUN addgroup -g 1001 -S nodejs && \
adduser -S nodejs -u 1001

USER nodejs

# 默认命令
CMD ["pnpm", "test"]
Loading