mirror of
https://github.com/JimLiu/baoyu-skills.git
synced 2026-07-12 05:51:44 +08:00
edcdc19ac5
Add CI check to ensure commits touching skills/<name>/** use Conventional Commit subjects. Also validates SKILL.md version alignment during publish/sync.
70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
changedSkillsForPaths,
|
|
formatSkillReleaseFailures,
|
|
parseConventionalCommitSubject,
|
|
validateSkillReleaseCommit,
|
|
} from "./skill-release-guard.mjs";
|
|
|
|
test("parseConventionalCommitSubject accepts scoped, unscoped, and breaking subjects", () => {
|
|
assert.deepEqual(parseConventionalCommitSubject("fix(baoyu-post-to-wechat): repair editor paste"), {
|
|
type: "fix",
|
|
scope: "baoyu-post-to-wechat",
|
|
breaking: false,
|
|
description: "repair editor paste",
|
|
});
|
|
assert.deepEqual(parseConventionalCommitSubject("feat!: change skill metadata format"), {
|
|
type: "feat",
|
|
scope: "",
|
|
breaking: true,
|
|
description: "change skill metadata format",
|
|
});
|
|
assert.equal(parseConventionalCommitSubject("Fix WeChat browser article publishing"), null);
|
|
});
|
|
|
|
test("changedSkillsForPaths returns sorted unique skills", () => {
|
|
assert.deepEqual(
|
|
changedSkillsForPaths([
|
|
"README.md",
|
|
"skills/baoyu-post-to-wechat/scripts/wechat-article.ts",
|
|
"skills/baoyu-post-to-wechat/SKILL.md",
|
|
"skills/baoyu-url-to-markdown/SKILL.md",
|
|
]),
|
|
["baoyu-post-to-wechat", "baoyu-url-to-markdown"],
|
|
);
|
|
});
|
|
|
|
test("validateSkillReleaseCommit ignores non-skill changes", () => {
|
|
assert.deepEqual(
|
|
validateSkillReleaseCommit({
|
|
subject: "Fix test workflow",
|
|
paths: [".github/workflows/test.yml"],
|
|
}),
|
|
[],
|
|
);
|
|
});
|
|
|
|
test("validateSkillReleaseCommit rejects non-conventional skill commit subjects", () => {
|
|
const failures = validateSkillReleaseCommit({
|
|
commit: "81377416b4a7",
|
|
subject: "Fix WeChat browser article publishing",
|
|
paths: ["skills/baoyu-post-to-wechat/scripts/wechat-article.ts"],
|
|
});
|
|
|
|
assert.equal(failures.length, 1);
|
|
assert.match(failures[0]!.message, /Conventional Commit/);
|
|
assert.match(formatSkillReleaseFailures(failures), /fix\(baoyu-post-to-wechat\):/);
|
|
});
|
|
|
|
test("validateSkillReleaseCommit accepts conventional skill commit subjects", () => {
|
|
assert.deepEqual(
|
|
validateSkillReleaseCommit({
|
|
subject: "fix(browser): ensure tab activation before copy/paste in WeChat editor",
|
|
paths: ["skills/baoyu-post-to-wechat/scripts/wechat-article.ts"],
|
|
}),
|
|
[],
|
|
);
|
|
});
|