itaywol/testless
GitHub: itaywol/testless
testless 通过静态 AST 分析代码改动与函数级依赖图,智能筛选出受影响的测试子集,帮助开发者显著减少不必要的测试运行时间。
Stars: 0 | Forks: 0
将你的测试时间缩减至最低。通过分析代码而非覆盖率,从 500 个测试中只运行 5 个。
[](https://github.com/itaywol/testless/actions/workflows/ci.yml)
[](https://crates.io/crates/testless)
[](https://www.npmjs.com/package/testless-cli)
[](LICENSE)

testless 使用 tree-sitter 将你的代码库解析为函数级别的图,进行结构化的 diff(忽略注释和格式差异),并遍历该图以找出改动可能破坏的所有测试。它会输出你的测试运行器自带的 CLI 调用命令,可直接执行。
**筛选出的测试范围始终是真正受影响测试的超集。** testless 会扩大范围而非盲目猜测,并且绝不会静默跳过任何可能失败的测试。
## 安装
| 生态系统 | 命令 |
|---|---|
| JS / TS | `npm i -D testless-cli` (可执行文件: `testless`) |
| Go | `curl -fsSL https://testless.itaywol.tools/install.sh \| sh` |
| Rust | `cargo binstall testless` 或 `cargo install testless` |
预编译二进制文件请见 [Releases](https://github.com/itaywol/testless/releases)。Nix flake 仓库:`nix develop`。
## 使用
```
testless index # build the graph (.testless/)
testless select --from origin/main # tests impacted by your changes
testless select --from origin/main --format args # runnable vitest / go test / cargo test lines
```
通过管道传输时输出 JSON,在 TTY 上输出人类可读的文本。当回退到运行所有测试时,`--format args` 将不会输出内容并以退出码 2 结束,因此你可以根据退出码进行分支处理:
```
testless select --from origin/main --format args > cmds.txt || RUN_ALL=1
```
## 语言
TypeScript / JavaScript (vitest, jest `-t` 匹配模式) · Go (`go test -run`) · Rust (`cargo test`)
添加一种新语言大约只需要一个插件文件:请参阅 [CONTRIBUTING](CONTRIBUTING.md)。
## 状态
这是一个年轻的项目。筛选引擎在上述三种语言上均已实现端到端运行;精确度会在每次发布中逐步提升。路线图位于 [issues](https://github.com/itaywol/testless/issues)。
[MIT](LICENSE)标签:LNA, SOC Prime, 云安全监控, 可视化界面, 开发工具, 日志审计, 暗色界面, 测试工具, 测试影响分析, 通知系统, 静态分析