SiteD 插件测试工具 Node.js 版,用于多多猫插件者在电脑/桌面平台测试自己的插件。
[ README-EN]
- 在 Windows/Linux/macOS 上自动测试 SiteD 插件
- 实现以下需要 sited_js:
- 支持
schema0/1/2
- 支持运行
buildUrl
,parseUrl(CALL::)
,parse(get/post/@null)
,require(含网络 js 库)
- 支持
header(cookie/referer)
,ua
配置 - 支持
hots
,updates
,tags
,tag(subtag)
,search
,book[12345678](sections)
,section[123]
节点
/**
* 在 Nodejs 环境输出节点数据到控制台
* @param sitedPath: .sited或.sited.xml文件路径, 建议填绝对路径
* @param key: 用于在搜索节点上搜索的关键词字符串
* @param callback: 输出home/search/book等节点的入口测试函数
* @param nodeName@doTest@home_test: 字符串 'hots', 'updates' 或者 'tags', 用于开始hots/updates/tags节点的测试函数
* @param bookUrl@book_test: book节点函数的url参数, 用于book节点单独测试
*/
sited_test(
sitedPath: string,
key: string,
callback: (
home_test: (
cback: (
doTest: (nodeName: 'hots' | 'updates' | 'tags', cb: () => Promise<void>
) => Promise<void>
) => Promise<void>
) => Promise<void>,
search_test: (cb: () => Promise<void>) => Promise<void>,
book_test: (bookUrl: string, from_where: 'from_外部传值', cb: () => Promise<void>) => Promise<void>,
tag_test: (tagUrl: string, from_where: string, cb: () => Promise<void>) => Promise<void>,
section_test: (sectionUrl: string, from_where: string, cb: () => Promise<void>) => Promise<void>,
subtag_test: (subtagUrl: string, from_where: string, cb: () => Promise<void>) => Promise<void>
) => Promise<void>
): Promise<void>
A. 在 sited_test 文件夹里通过 Nodejs 运行像 demo.js 般调用 API 接口的 js 脚本:
// demo.js文件,已经写了 .sited 或 .sited.xml 文件路径
(async () => {
var { sited_test, LogWriter } = require('./index');
var path = require('path');
var sitedPath = path.resolve(__dirname, 'demo.sited.xml');
var key = '我们';
await sited_test(
sitedPath,
key,
async (home_test, search_test, book_test, ...args) => {
async function cb(...args) {}
async function cback(doTest) {
if (doTest) {
await doTest('hots', cb);
await doTest('updates', cb);
await doTest('tags', cb);
}
}
await home_test(cback);
await search_test(cb);
// var bookUrl = 'http://... book节点函数的url参数如已收藏漫画链接';
// await book_test(bookUrl, 'from_外部传值', cb);
}
);
LogWriter.tryClose();
})();
cd /path/to/node_modules/sited_test
node demo.js
或者 B.
# 不需要 cd
node /path/to/node_modules/sited_test/bin.js <sitedPath> [<key>]
# sitedPath: .sited 或 .sited.xml 的文件路径
# key(可选): 用于在搜索节点上搜索的关键词字符串,如果没输入,会使用 bin.js 内置的关键词
或者 C. 其实,在 VS Code 上编辑 sited 插件文件时用 Code Runner 插件 或者内置的调试器来调用 Nodejs 是很快的。
a. 配置 Code Runner 对.sited 和 .sited.xml 文件通过以下 node 命令运行,就可以在编辑器当前焦点所处 sited 插件文件时启动 Code Runner,直接测试插件,不需要填写插件路径,会通过 $fullFileName 识别。
"code-runner.executorMapByGlob": {
"*.{sited,sited.xml}": "node /path/to/node_modules/sited_test/bin.js $fullFileName key"
}
// 把 /path/to/node_modules/sited_test/bin.js 替换为bin.js实际路径。如果删除(key),会使用 bin.js 内置的关键词
或者 b. 增加新的调试配置通过以下 node 命令运行,就可以在编辑器当前焦点所处 sited 插件文件时启动调试(sited_test),直接测试插件,不需要填写插件路径,会通过 ${file} 识别。想要 VS Code 对插件 xml 文件里面的 js 代码打断点和暂停,须要在全局函数外面和每一个想暂停的函数里添加 debugger;
声明。
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "sited_test",
"type": "node",
"request": "launch",
// "cwd": "${fileDirname}",
"program": "/path/to/node_modules/sited_test/bin.js",
"args": ["${file}", "搜索词"],
// "stopOnEntry": true,
"console": "internalConsole" // internalConsole integratedTerminal
}
]
}
把 /path/to/node_modules/sited_test/bin.js 替换为 bin.js 实际路径。如果删除 "搜索词"
,会使用 bin.js 内置的关键词
在命令行界面单独输入
sited_test
会看到:
Tests own SiteD plugin on Nodejs
sitedPath: File path of .sited or .sited.xml.
key(optional): A keyword string that is used for searching on search node, if not be inputted, built-in keyword of bin.js would be used.
Usage: sited_test <sitedPath> [key]
Usage: sited_test [options]
Options:
--version Show version number
--help Show help
--demo Tests a demo sited plugin
Examples:
sited_test /path/to/sited.sited.xml #Outputs nodes' data to console on Nodejs.
npm run test
: 在命令行界面项目文件夹下,运行该代码,可以测试样本 sited 插件并显示结果在控制台
-
SiteD plugin center SiteD 插件中心官方版
-
ddcat_plugin_develop 多多猫插件开发指南,关于多多猫插件开发相关知识
-
DDCat SiteD VS Code 扩展插件,对 .sited 和 .sited.xml 文件识别为 SiteD 语言,提供语法高亮
-
generators-sited-plugin Yeoman 生成器快速初始化项目
-
sited_test_py SiteD 插件测试工具 Python 版