dsh-market/tests/web/fixtures/fixture-a

1.4kStar83Fork35Issue2Watching

dsh-market 端到端测试专用夹具:在 DSH_HOME 写入存在性标记文件,证明插件安装与卸载链路真实生效。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科

此插件是大仓库 dsh-market/dsh-market 的子包,星数与活跃度统计的是整个仓库。

语言
TypeScript
License
MIT
分支
main
deepseek-harnessdsh-pluginmarketplace

安装

$ dsh plugin --profile web add github:dsh-market/dsh-market/tests/web/fixtures/fixture-a

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 dsh-market/dsh-market/tests/web/fixtures/fixture-a:先查看仓库 https://github.com/dsh-market/dsh-market.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

这是 dsh-market 仓库内嵌的一个 E2E 测试夹具(fixture),通过向 DSH_HOME 目录写入一个 .alive 标记文件,让测试代码判断插件是否真的被 cordis 加载并按预期卸载。它不是给普通用户安装的功能插件。

核心能力

  • DSH_HOME 目录下创建名为 e2e-dshm-e2e-fixture-a.alive 的标记文件,写入当前时间戳
  • 通过 ctx.effect 注册一次性副作用:插件加载时建立标记,卸载时自动删除
  • cordis.patch.yml 中声明自身的 bundle 插入规则,模拟一个真实的社区插件注册流程
  • 作为 ground-truth 探针,证明 install 链路(cordis 解析包 → 加载模块 → 执行 apply() → 满足注入)完整跑通

技术实现

  • 语言: JavaScript (ESM)
  • 关键依赖: node:fsnode:path(仅使用 Node 内置模块,无第三方依赖)
  • 架构模式: Cordis 注入式插件 —— apply(ctx) 通过 ctx.inject(['webServer'], ...) 等待宿主注入 webServer 服务,再用 host.effect() 注册可撤销的副作用
  • 入口文件: tests/web/fixtures/fixture-a/index.js

适用场景

仅供 dsh-market 自身的 tests/web/install.e2e.ts 等端到端测试使用。测试需要一种独立于插件市场内置 activation[name].state 推断的"插件是否真的活着"的判定方式 —— 因为该推断在历史 issue #103/#135/#147 中曾出过错。fixture-a 通过磁盘上文件的存在与否给出确定性答案,作为 ground truth。

前置依赖与兼容性

依赖最低版本说明
DSH未声明仅在 dsh-market 仓库的 e2e 测试场景中被引用
Node未声明使用了 node:fsnode:path,对应 Node.js 内置模块
平台跨平台仅依赖 Node.js 标准库,无系统调用
原生模块全部为内置模块

安装方式

dsh plugin --profile web add github:dsh-market/dsh-market/tests/web/fixtures/fixture-a

配置项

本插件无需额外配置。

常见问题

Q: 这个插件能给普通用户用吗?

A: 不能。它是测试夹具,没有任何面向用户的功能;装上后只会生成一个隐藏的标记文件,看不到任何界面。

Q: 安装之后会留下什么痕迹?

A: 会在 DSH_HOME 环境变量指定的目录(未设置时是当前目录)下生成 e2e-dshm-e2e-fixture-a.alive 文件,里面是一段毫秒级时间戳。卸载时该文件会被自动移除。

Q: 标记文件为什么不用 HTTP 路由来做?

A: 源码注释说明:插件注册的 HTTP 路由在插件被 dispose 后仍然存活,所以基于路由的探针会把已禁用的插件误判为仍然活着。文件存在性则与 ctx.effect 的 dispose 回调严格绑定,更可靠。

Q: 它和 cordis.patch.yml 是什么关系?

A: package.json#dsh.bundle.patch 指向 ./cordis.patch.yml,后者声明把这个 fixture 以 dshm-fixture-a 的 id 插入到 profile 的 bundle 层栈中。这样它能像普通社区插件一样走完整的 hot-mount 流程,而无需重启宿主。

Q: 安装来源为什么是 GitHub 而不是 npm?

A: 因为这个包 private: true,从未发布到 npm。它只能通过 github: 形式的源码 spec 直接安装。

上手难度

入门 — 单文件、32 行、无第三方依赖、无配置项,主要理解成本来自 ctx.effect 这类 cordis 注入语义。

已知问题与限制

  • 仅作为测试夹具存在,没有 README、配置项或用户可见功能
  • 标记文件路径会回退到当前工作目录(当 DSH_HOME 未设置时),可能污染运行目录
  • 与 fixture-b / fixture-clash / fixture-cross / fixture-carrier 等其它夹具共享同一组 e2e 测试假设,需同时运行才能形成完整断言

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/dsh-market/dsh-market/tests/web/fixtures/fixture-a)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录