@sfmc-bds/bds-tools 0.2.0-beta.16 → 0.2.0-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bds-manager.d.ts.map +1 -1
- package/dist/bds-manager.js +8 -1
- package/dist/bds-manager.js.map +2 -2
- package/dist/changelog.d.ts +11 -7
- package/dist/changelog.d.ts.map +1 -1
- package/dist/changelog.js +60 -34
- package/dist/changelog.js.map +2 -2
- package/dist/check-update.d.ts.map +1 -1
- package/dist/check-update.js +50 -13
- package/dist/check-update.js.map +2 -2
- package/dist/qq-events-notify.d.ts +1 -1
- package/dist/qq-events-notify.d.ts.map +1 -1
- package/dist/qq-events-notify.js.map +1 -1
- package/dist/qqutil.d.ts.map +1 -1
- package/dist/qqutil.js +14 -12
- package/dist/qqutil.js.map +2 -2
- package/dist/server-properties-i18n.d.ts.map +1 -1
- package/dist/server-properties-i18n.js +4 -0
- package/dist/server-properties-i18n.js.map +2 -2
- package/dist/server-properties.d.ts +3 -0
- package/dist/server-properties.d.ts.map +1 -1
- package/dist/server-properties.js +15 -0
- package/dist/server-properties.js.map +2 -2
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/dependency-negotiator.test.js +0 -120
- package/dist/dependency-negotiator.test.js.map +0 -7
- package/dist/fsx.test.js +0 -60
- package/dist/fsx.test.js.map +0 -7
- package/dist/level-dat.test.js +0 -172
- package/dist/level-dat.test.js.map +0 -7
- package/dist/pack-manager-lifecycle.test.js +0 -252
- package/dist/pack-manager-lifecycle.test.js.map +0 -7
- package/dist/pack-update/config.test.js +0 -75
- package/dist/pack-update/config.test.js.map +0 -7
- package/dist/pack-update/version-policy.test.js +0 -137
- package/dist/pack-update/version-policy.test.js.map +0 -7
- package/dist/process-probe.test.js +0 -76
- package/dist/process-probe.test.js.map +0 -7
- package/dist/server-properties.test.js +0 -127
- package/dist/server-properties.test.js.map +0 -7
- package/dist/world-packs.test.js +0 -698
- package/dist/world-packs.test.js.map +0 -7
- package/dist/zipx.test.js +0 -36
- package/dist/zipx.test.js.map +0 -7
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import fs from "node:fs";
|
|
3
|
-
import os from "node:os";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { describe, it, before, after } from "node:test";
|
|
6
|
-
import { fileURLToPath } from "node:url";
|
|
7
|
-
import { spawnSync } from "node:child_process";
|
|
8
|
-
const CLI = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "dist", "cli-pack-manager.js");
|
|
9
|
-
function run(args) {
|
|
10
|
-
const r = spawnSync(process.execPath, [CLI, ...args], { encoding: "utf8" });
|
|
11
|
-
return { status: r.status, out: r.stdout ?? "", err: r.stderr ?? "" };
|
|
12
|
-
}
|
|
13
|
-
describe("pack-manager CLI extensions", () => {
|
|
14
|
-
let tmp;
|
|
15
|
-
before(() => {
|
|
16
|
-
tmp = fs.mkdtempSync(path.join(os.tmpdir(), "sfmc-pm-"));
|
|
17
|
-
});
|
|
18
|
-
after(() => {
|
|
19
|
-
fs.rmSync(tmp, { recursive: true, force: true });
|
|
20
|
-
});
|
|
21
|
-
it("assemble-rp --modules-json \u53EA\u7528\u663E\u5F0F map(\u4E0D\u626B\u6574\u6811)", async () => {
|
|
22
|
-
const { loadModuleResourcePackMap, assembleResourcePack } = await import("./pack-manager.js");
|
|
23
|
-
const modA = path.join(tmp, "mod-a", "resource_pack");
|
|
24
|
-
const modB = path.join(tmp, "mod-b", "resource_pack");
|
|
25
|
-
fs.mkdirSync(modA, { recursive: true });
|
|
26
|
-
fs.mkdirSync(modB, { recursive: true });
|
|
27
|
-
fs.writeFileSync(path.join(modA, "a.txt"), "a");
|
|
28
|
-
fs.writeFileSync(path.join(modB, "b.txt"), "b");
|
|
29
|
-
const mapFile = path.join(tmp, "map.json");
|
|
30
|
-
fs.writeFileSync(mapFile, JSON.stringify({ "mod-a": modA }));
|
|
31
|
-
const map = loadModuleResourcePackMap(mapFile);
|
|
32
|
-
assert.deepEqual(Object.keys(map), ["mod-a"]);
|
|
33
|
-
const out = path.join(tmp, "rp-out");
|
|
34
|
-
await assembleResourcePack({
|
|
35
|
-
moduleResourceDirs: map,
|
|
36
|
-
outDir: out,
|
|
37
|
-
projectName: "test-rp",
|
|
38
|
-
uuid: "11111111-1111-1111-1111-111111111111",
|
|
39
|
-
version: [1, 0, 0]
|
|
40
|
-
});
|
|
41
|
-
assert.ok(fs.existsSync(path.join(out, "mod-a", "a.txt")));
|
|
42
|
-
assert.ok(!fs.existsSync(path.join(out, "mod-b")));
|
|
43
|
-
const cli = run([
|
|
44
|
-
"assemble-rp",
|
|
45
|
-
"--modules-json",
|
|
46
|
-
mapFile,
|
|
47
|
-
"--out",
|
|
48
|
-
path.join(tmp, "rp-cli"),
|
|
49
|
-
"--name",
|
|
50
|
-
"test-rp-cli",
|
|
51
|
-
"--uuid",
|
|
52
|
-
"22222222-2222-2222-2222-222222222222"
|
|
53
|
-
]);
|
|
54
|
-
assert.equal(cli.status, 0, cli.err || cli.out);
|
|
55
|
-
});
|
|
56
|
-
it("deploy --clear-rp \u5220\u9664\u4E16\u754C\u5185\u6B8B\u7559 RP \u76EE\u5F55", async () => {
|
|
57
|
-
const { deployToBDS } = await import("./pack-manager.js");
|
|
58
|
-
const bds = path.join(tmp, "bds");
|
|
59
|
-
const level = "Bedrock level";
|
|
60
|
-
const worlds = path.join(bds, "worlds", level);
|
|
61
|
-
const bpSrc = path.join(tmp, "bp-src");
|
|
62
|
-
const rpDst = path.join(worlds, "resource_packs", "sfmc-modules-rp");
|
|
63
|
-
fs.mkdirSync(bpSrc, { recursive: true });
|
|
64
|
-
fs.writeFileSync(path.join(bpSrc, "dummy.txt"), "bp");
|
|
65
|
-
fs.mkdirSync(rpDst, { recursive: true });
|
|
66
|
-
fs.writeFileSync(path.join(rpDst, "stale.txt"), "old");
|
|
67
|
-
await deployToBDS({
|
|
68
|
-
bdsRoot: bds,
|
|
69
|
-
levelName: level,
|
|
70
|
-
behaviorPackSrc: bpSrc,
|
|
71
|
-
bpName: "sfmc-modules",
|
|
72
|
-
rpName: "sfmc-modules-rp",
|
|
73
|
-
clearResourcePack: true
|
|
74
|
-
});
|
|
75
|
-
assert.ok(!fs.existsSync(rpDst));
|
|
76
|
-
assert.ok(fs.existsSync(path.join(worlds, "behavior_packs", "sfmc-modules", "dummy.txt")));
|
|
77
|
-
});
|
|
78
|
-
it("read-manifest / has-pack / list-packs CLI \u5951\u7EA6", async () => {
|
|
79
|
-
const { assembleBehaviorPack, enablePackInWorld, worldPackListHas, readWorldPackList } = await import("./pack-manager.js");
|
|
80
|
-
const bpOut = path.join(tmp, "bp-assembled");
|
|
81
|
-
const src = path.join(tmp, "bp-empty-src");
|
|
82
|
-
fs.mkdirSync(path.join(src, "scripts"), { recursive: true });
|
|
83
|
-
fs.writeFileSync(path.join(src, "scripts", "main.js"), "//\n");
|
|
84
|
-
const uuid = "33333333-3333-3333-3333-333333333333";
|
|
85
|
-
await assembleBehaviorPack({
|
|
86
|
-
srcDir: src,
|
|
87
|
-
outDir: bpOut,
|
|
88
|
-
projectName: "sfmc-modules",
|
|
89
|
-
uuid,
|
|
90
|
-
version: [1, 2, 3]
|
|
91
|
-
});
|
|
92
|
-
const rm = run(["read-manifest", "--pack-dir", bpOut]);
|
|
93
|
-
assert.equal(rm.status, 0, rm.err);
|
|
94
|
-
const header = JSON.parse(rm.out.trim());
|
|
95
|
-
assert.equal(header.uuid, uuid);
|
|
96
|
-
assert.deepEqual(header.version, [1, 2, 3]);
|
|
97
|
-
const worldsDir = path.join(tmp, "worlds-root");
|
|
98
|
-
await enablePackInWorld({
|
|
99
|
-
worldsDir,
|
|
100
|
-
levelName: "L1",
|
|
101
|
-
kind: "behavior",
|
|
102
|
-
packUuid: uuid,
|
|
103
|
-
version: [1, 2, 3]
|
|
104
|
-
});
|
|
105
|
-
assert.equal(worldPackListHas(worldsDir, "L1", "behavior", uuid), true);
|
|
106
|
-
assert.equal(worldPackListHas(worldsDir, "L1", "behavior", "00000000-0000-0000-0000-000000000000"), false);
|
|
107
|
-
const hp = run([
|
|
108
|
-
"has-pack",
|
|
109
|
-
"--worlds-dir",
|
|
110
|
-
worldsDir,
|
|
111
|
-
"--level",
|
|
112
|
-
"L1",
|
|
113
|
-
"--kind",
|
|
114
|
-
"behavior",
|
|
115
|
-
"--pack-id",
|
|
116
|
-
uuid
|
|
117
|
-
]);
|
|
118
|
-
assert.equal(hp.status, 0);
|
|
119
|
-
assert.equal(hp.out.trim(), "1");
|
|
120
|
-
const lp = run(["list-packs", "--worlds-dir", worldsDir, "--level", "L1", "--kind", "behavior"]);
|
|
121
|
-
assert.equal(lp.status, 0, lp.err);
|
|
122
|
-
const listed = JSON.parse(lp.out.trim());
|
|
123
|
-
assert.equal(listed.length, 1);
|
|
124
|
-
assert.equal(listed[0].pack_id, uuid);
|
|
125
|
-
assert.deepEqual(readWorldPackList(worldsDir, "L1", "behavior"), listed);
|
|
126
|
-
});
|
|
127
|
-
it("readLevelNameSync \u4E0E async \u540C\u5951\u7EA6\uFF08\u4F9B sfmc resolveBdsContext\uFF09", async () => {
|
|
128
|
-
const { readLevelName, readLevelNameSync } = await import("./pack-manager.js");
|
|
129
|
-
const bds = path.join(tmp, "bds-level");
|
|
130
|
-
fs.mkdirSync(bds, { recursive: true });
|
|
131
|
-
assert.equal(readLevelNameSync(bds), "Bedrock level");
|
|
132
|
-
assert.equal(await readLevelName(bds), "Bedrock level");
|
|
133
|
-
fs.writeFileSync(path.join(bds, "server.properties"), "level-name=My World\n", "utf8");
|
|
134
|
-
assert.equal(readLevelNameSync(bds), "My World");
|
|
135
|
-
assert.equal(await readLevelName(bds), "My World");
|
|
136
|
-
});
|
|
137
|
-
it("BDS \u8DEF\u5F84 helpers \u5355\u4E00\u6743\u5A01\uFF08Demeter/DRY\uFF09", async () => {
|
|
138
|
-
const {
|
|
139
|
-
bdsWorldsDir,
|
|
140
|
-
bdsWorldLevelDir,
|
|
141
|
-
worldPackListFile,
|
|
142
|
-
configPermissionPath,
|
|
143
|
-
hasConfigPermission,
|
|
144
|
-
serverPropertiesPath,
|
|
145
|
-
ensureConfigPermission
|
|
146
|
-
} = await import("./pack-manager.js");
|
|
147
|
-
const bds = path.join(tmp, "bds-paths");
|
|
148
|
-
fs.mkdirSync(bds, { recursive: true });
|
|
149
|
-
assert.equal(bdsWorldsDir(bds), path.join(bds, "worlds"));
|
|
150
|
-
assert.equal(bdsWorldLevelDir(bds, "L1"), path.join(bds, "worlds", "L1"));
|
|
151
|
-
assert.equal(
|
|
152
|
-
worldPackListFile(bdsWorldsDir(bds), "L1", "behavior"),
|
|
153
|
-
path.join(bds, "worlds", "L1", "world_behavior_packs.json")
|
|
154
|
-
);
|
|
155
|
-
assert.equal(
|
|
156
|
-
worldPackListFile(bdsWorldsDir(bds), "L1", "resource"),
|
|
157
|
-
path.join(bds, "worlds", "L1", "world_resource_packs.json")
|
|
158
|
-
);
|
|
159
|
-
assert.equal(serverPropertiesPath(bds), path.join(bds, "server.properties"));
|
|
160
|
-
const uuid = "00000000-0000-4000-8000-000000000099";
|
|
161
|
-
assert.equal(configPermissionPath(bds, uuid), path.join(bds, "config", uuid, "permission.json"));
|
|
162
|
-
assert.equal(hasConfigPermission(bds, uuid), false);
|
|
163
|
-
assert.equal(await ensureConfigPermission(bds, uuid), true);
|
|
164
|
-
assert.equal(hasConfigPermission(bds, uuid), true);
|
|
165
|
-
assert.equal(await ensureConfigPermission(bds, uuid), false);
|
|
166
|
-
});
|
|
167
|
-
it("readWorldPackListResult \u533A\u5206\u7F3A\u5931\u4E0E JSON \u635F\u574F\uFF08doctor parseFail\uFF09", async () => {
|
|
168
|
-
const { readWorldPackListResult } = await import("./pack-manager.js");
|
|
169
|
-
const worldsDir = path.join(tmp, "worlds-parse");
|
|
170
|
-
const levelDir = path.join(worldsDir, "Lbad");
|
|
171
|
-
fs.mkdirSync(levelDir, { recursive: true });
|
|
172
|
-
const missing = readWorldPackListResult(worldsDir, "Lbad", "behavior");
|
|
173
|
-
assert.deepEqual(missing.entries, []);
|
|
174
|
-
assert.equal(missing.parseFailedFile, void 0);
|
|
175
|
-
const badFile = path.join(levelDir, "world_behavior_packs.json");
|
|
176
|
-
fs.writeFileSync(badFile, "{not-json", "utf8");
|
|
177
|
-
const bad = readWorldPackListResult(worldsDir, "Lbad", "behavior");
|
|
178
|
-
assert.deepEqual(bad.entries, []);
|
|
179
|
-
assert.equal(bad.parseFailedFile, badFile);
|
|
180
|
-
fs.writeFileSync(badFile, '{"not":"array"}', "utf8");
|
|
181
|
-
const notArr = readWorldPackListResult(worldsDir, "Lbad", "behavior");
|
|
182
|
-
assert.deepEqual(notArr.entries, []);
|
|
183
|
-
assert.equal(notArr.parseFailedFile, badFile);
|
|
184
|
-
});
|
|
185
|
-
it("\u65E0 deploy-catalog \u65F6\u4ECD\u53EF\u51ED\u78C1\u76D8 RP manifest \u5378\u4E16\u754C\u6E05\u5355(BLOCKER \u56DE\u5F52)", async () => {
|
|
186
|
-
const {
|
|
187
|
-
assembleResourcePack,
|
|
188
|
-
deployToBDS,
|
|
189
|
-
enablePackInWorld,
|
|
190
|
-
disablePackInWorld,
|
|
191
|
-
readPackManifestHeader,
|
|
192
|
-
worldPackListHas
|
|
193
|
-
} = await import("./pack-manager.js");
|
|
194
|
-
const bds = path.join(tmp, "bds-stale");
|
|
195
|
-
const level = "Bedrock level";
|
|
196
|
-
const worlds = path.join(bds, "worlds", level);
|
|
197
|
-
const worldsDir = path.join(bds, "worlds");
|
|
198
|
-
const bpSrc = path.join(tmp, "bp-stale-src");
|
|
199
|
-
const rpMod = path.join(tmp, "mod-stale", "resource_pack");
|
|
200
|
-
fs.mkdirSync(path.join(bpSrc, "scripts"), { recursive: true });
|
|
201
|
-
fs.writeFileSync(path.join(bpSrc, "scripts", "main.js"), "//\n");
|
|
202
|
-
fs.mkdirSync(rpMod, { recursive: true });
|
|
203
|
-
fs.writeFileSync(path.join(rpMod, "x.txt"), "x");
|
|
204
|
-
const staleUuid = "44444444-4444-4444-4444-444444444444";
|
|
205
|
-
const rpAssembled = path.join(tmp, "rp-stale-assembled");
|
|
206
|
-
await assembleResourcePack({
|
|
207
|
-
moduleResourceDirs: { stale: rpMod },
|
|
208
|
-
outDir: rpAssembled,
|
|
209
|
-
projectName: "sfmc-modules-rp",
|
|
210
|
-
uuid: staleUuid,
|
|
211
|
-
version: [1, 0, 0]
|
|
212
|
-
});
|
|
213
|
-
await deployToBDS({
|
|
214
|
-
bdsRoot: bds,
|
|
215
|
-
levelName: level,
|
|
216
|
-
behaviorPackSrc: bpSrc,
|
|
217
|
-
resourcePackSrc: rpAssembled,
|
|
218
|
-
bpName: "sfmc-modules",
|
|
219
|
-
rpName: "sfmc-modules-rp"
|
|
220
|
-
});
|
|
221
|
-
await enablePackInWorld({
|
|
222
|
-
worldsDir,
|
|
223
|
-
levelName: level,
|
|
224
|
-
kind: "resource",
|
|
225
|
-
packUuid: staleUuid,
|
|
226
|
-
version: [1, 0, 0]
|
|
227
|
-
});
|
|
228
|
-
assert.equal(worldPackListHas(worldsDir, level, "resource", staleUuid), true);
|
|
229
|
-
const rpDst = path.join(worlds, "resource_packs", "sfmc-modules-rp");
|
|
230
|
-
const header = readPackManifestHeader(rpDst);
|
|
231
|
-
assert.equal(header?.uuid, staleUuid);
|
|
232
|
-
assert.ok(header);
|
|
233
|
-
await deployToBDS({
|
|
234
|
-
bdsRoot: bds,
|
|
235
|
-
levelName: level,
|
|
236
|
-
behaviorPackSrc: bpSrc,
|
|
237
|
-
bpName: "sfmc-modules",
|
|
238
|
-
rpName: "sfmc-modules-rp",
|
|
239
|
-
clearResourcePack: true
|
|
240
|
-
});
|
|
241
|
-
assert.ok(!fs.existsSync(rpDst));
|
|
242
|
-
await disablePackInWorld({
|
|
243
|
-
worldsDir,
|
|
244
|
-
levelName: level,
|
|
245
|
-
kind: "resource",
|
|
246
|
-
packUuid: header.uuid,
|
|
247
|
-
version: [1, 0, 0]
|
|
248
|
-
});
|
|
249
|
-
assert.equal(worldPackListHas(worldsDir, level, "resource", staleUuid), false);
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
//# sourceMappingURL=pack-manager-lifecycle.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/pack-manager-lifecycle.test.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * pack-manager SOLID \u56DE\u5F52:modules-json / clear-rp / has-pack / read-manifest\n */\nimport assert from \"node:assert/strict\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { describe, it, before, after } from \"node:test\";\nimport { fileURLToPath } from \"node:url\";\nimport { spawnSync } from \"node:child_process\";\n\nconst CLI = path.join(path.dirname(fileURLToPath(import.meta.url)), \"..\", \"dist\", \"cli-pack-manager.js\");\n\nfunction run(args) {\n const r = spawnSync(process.execPath, [CLI, ...args], { encoding: \"utf8\" });\n return { status: r.status, out: r.stdout ?? \"\", err: r.stderr ?? \"\" };\n}\n\ndescribe(\"pack-manager CLI extensions\", () => {\n /** @type {string} */\n let tmp;\n before(() => {\n tmp = fs.mkdtempSync(path.join(os.tmpdir(), \"sfmc-pm-\"));\n });\n after(() => {\n fs.rmSync(tmp, { recursive: true, force: true });\n });\n\n it(\"assemble-rp --modules-json \u53EA\u7528\u663E\u5F0F map(\u4E0D\u626B\u6574\u6811)\", async () => {\n const { loadModuleResourcePackMap, assembleResourcePack } = await import(\"./pack-manager.js\");\n const modA = path.join(tmp, \"mod-a\", \"resource_pack\");\n const modB = path.join(tmp, \"mod-b\", \"resource_pack\");\n fs.mkdirSync(modA, { recursive: true });\n fs.mkdirSync(modB, { recursive: true });\n fs.writeFileSync(path.join(modA, \"a.txt\"), \"a\");\n fs.writeFileSync(path.join(modB, \"b.txt\"), \"b\");\n const mapFile = path.join(tmp, \"map.json\");\n /* \u4EC5\u542F\u7528 mod-a */\n fs.writeFileSync(mapFile, JSON.stringify({ \"mod-a\": modA }));\n const map = loadModuleResourcePackMap(mapFile);\n assert.deepEqual(Object.keys(map), [\"mod-a\"]);\n\n const out = path.join(tmp, \"rp-out\");\n await assembleResourcePack({\n moduleResourceDirs: map,\n outDir: out,\n projectName: \"test-rp\",\n uuid: \"11111111-1111-1111-1111-111111111111\",\n version: [1, 0, 0],\n });\n assert.ok(fs.existsSync(path.join(out, \"mod-a\", \"a.txt\")));\n assert.ok(!fs.existsSync(path.join(out, \"mod-b\")));\n\n const cli = run([\n \"assemble-rp\",\n \"--modules-json\",\n mapFile,\n \"--out\",\n path.join(tmp, \"rp-cli\"),\n \"--name\",\n \"test-rp-cli\",\n \"--uuid\",\n \"22222222-2222-2222-2222-222222222222\",\n ]);\n assert.equal(cli.status, 0, cli.err || cli.out);\n });\n\n it(\"deploy --clear-rp \u5220\u9664\u4E16\u754C\u5185\u6B8B\u7559 RP \u76EE\u5F55\", async () => {\n const { deployToBDS } = await import(\"./pack-manager.js\");\n const bds = path.join(tmp, \"bds\");\n const level = \"Bedrock level\";\n const worlds = path.join(bds, \"worlds\", level);\n const bpSrc = path.join(tmp, \"bp-src\");\n const rpDst = path.join(worlds, \"resource_packs\", \"sfmc-modules-rp\");\n fs.mkdirSync(bpSrc, { recursive: true });\n fs.writeFileSync(path.join(bpSrc, \"dummy.txt\"), \"bp\");\n fs.mkdirSync(rpDst, { recursive: true });\n fs.writeFileSync(path.join(rpDst, \"stale.txt\"), \"old\");\n\n await deployToBDS({\n bdsRoot: bds,\n levelName: level,\n behaviorPackSrc: bpSrc,\n bpName: \"sfmc-modules\",\n rpName: \"sfmc-modules-rp\",\n clearResourcePack: true,\n });\n assert.ok(!fs.existsSync(rpDst));\n assert.ok(fs.existsSync(path.join(worlds, \"behavior_packs\", \"sfmc-modules\", \"dummy.txt\")));\n });\n\n it(\"read-manifest / has-pack / list-packs CLI \u5951\u7EA6\", async () => {\n const { assembleBehaviorPack, enablePackInWorld, worldPackListHas, readWorldPackList } =\n await import(\"./pack-manager.js\");\n const bpOut = path.join(tmp, \"bp-assembled\");\n const src = path.join(tmp, \"bp-empty-src\");\n fs.mkdirSync(path.join(src, \"scripts\"), { recursive: true });\n fs.writeFileSync(path.join(src, \"scripts\", \"main.js\"), \"//\\n\");\n const uuid = \"33333333-3333-3333-3333-333333333333\";\n await assembleBehaviorPack({\n srcDir: src,\n outDir: bpOut,\n projectName: \"sfmc-modules\",\n uuid,\n version: [1, 2, 3],\n });\n\n const rm = run([\"read-manifest\", \"--pack-dir\", bpOut]);\n assert.equal(rm.status, 0, rm.err);\n const header = JSON.parse(rm.out.trim());\n assert.equal(header.uuid, uuid);\n assert.deepEqual(header.version, [1, 2, 3]);\n\n const worldsDir = path.join(tmp, \"worlds-root\");\n await enablePackInWorld({\n worldsDir,\n levelName: \"L1\",\n kind: \"behavior\",\n packUuid: uuid,\n version: [1, 2, 3],\n });\n assert.equal(worldPackListHas(worldsDir, \"L1\", \"behavior\", uuid), true);\n assert.equal(worldPackListHas(worldsDir, \"L1\", \"behavior\", \"00000000-0000-0000-0000-000000000000\"), false);\n\n const hp = run([\n \"has-pack\",\n \"--worlds-dir\",\n worldsDir,\n \"--level\",\n \"L1\",\n \"--kind\",\n \"behavior\",\n \"--pack-id\",\n uuid,\n ]);\n assert.equal(hp.status, 0);\n assert.equal(hp.out.trim(), \"1\");\n\n const lp = run([\"list-packs\", \"--worlds-dir\", worldsDir, \"--level\", \"L1\", \"--kind\", \"behavior\"]);\n assert.equal(lp.status, 0, lp.err);\n const listed = JSON.parse(lp.out.trim());\n assert.equal(listed.length, 1);\n assert.equal(listed[0].pack_id, uuid);\n assert.deepEqual(readWorldPackList(worldsDir, \"L1\", \"behavior\"), listed);\n });\n\n it(\"readLevelNameSync \u4E0E async \u540C\u5951\u7EA6\uFF08\u4F9B sfmc resolveBdsContext\uFF09\", async () => {\n const { readLevelName, readLevelNameSync } = await import(\"./pack-manager.js\");\n const bds = path.join(tmp, \"bds-level\");\n fs.mkdirSync(bds, { recursive: true });\n assert.equal(readLevelNameSync(bds), \"Bedrock level\");\n assert.equal(await readLevelName(bds), \"Bedrock level\");\n fs.writeFileSync(path.join(bds, \"server.properties\"), \"level-name=My World\\n\", \"utf8\");\n assert.equal(readLevelNameSync(bds), \"My World\");\n assert.equal(await readLevelName(bds), \"My World\");\n });\n\n it(\"BDS \u8DEF\u5F84 helpers \u5355\u4E00\u6743\u5A01\uFF08Demeter/DRY\uFF09\", async () => {\n const {\n bdsWorldsDir,\n bdsWorldLevelDir,\n worldPackListFile,\n configPermissionPath,\n hasConfigPermission,\n serverPropertiesPath,\n ensureConfigPermission,\n } = await import(\"./pack-manager.js\");\n const bds = path.join(tmp, \"bds-paths\");\n fs.mkdirSync(bds, { recursive: true });\n assert.equal(bdsWorldsDir(bds), path.join(bds, \"worlds\"));\n assert.equal(bdsWorldLevelDir(bds, \"L1\"), path.join(bds, \"worlds\", \"L1\"));\n assert.equal(\n worldPackListFile(bdsWorldsDir(bds), \"L1\", \"behavior\"),\n path.join(bds, \"worlds\", \"L1\", \"world_behavior_packs.json\")\n );\n assert.equal(\n worldPackListFile(bdsWorldsDir(bds), \"L1\", \"resource\"),\n path.join(bds, \"worlds\", \"L1\", \"world_resource_packs.json\")\n );\n assert.equal(serverPropertiesPath(bds), path.join(bds, \"server.properties\"));\n const uuid = \"00000000-0000-4000-8000-000000000099\";\n assert.equal(configPermissionPath(bds, uuid), path.join(bds, \"config\", uuid, \"permission.json\"));\n assert.equal(hasConfigPermission(bds, uuid), false);\n assert.equal(await ensureConfigPermission(bds, uuid), true);\n assert.equal(hasConfigPermission(bds, uuid), true);\n assert.equal(await ensureConfigPermission(bds, uuid), false);\n });\n\n it(\"readWorldPackListResult \u533A\u5206\u7F3A\u5931\u4E0E JSON \u635F\u574F\uFF08doctor parseFail\uFF09\", async () => {\n const { readWorldPackListResult } = await import(\"./pack-manager.js\");\n const worldsDir = path.join(tmp, \"worlds-parse\");\n const levelDir = path.join(worldsDir, \"Lbad\");\n fs.mkdirSync(levelDir, { recursive: true });\n\n const missing = readWorldPackListResult(worldsDir, \"Lbad\", \"behavior\");\n assert.deepEqual(missing.entries, []);\n assert.equal(missing.parseFailedFile, undefined);\n\n const badFile = path.join(levelDir, \"world_behavior_packs.json\");\n fs.writeFileSync(badFile, \"{not-json\", \"utf8\");\n const bad = readWorldPackListResult(worldsDir, \"Lbad\", \"behavior\");\n assert.deepEqual(bad.entries, []);\n assert.equal(bad.parseFailedFile, badFile);\n\n fs.writeFileSync(badFile, '{\"not\":\"array\"}', \"utf8\");\n const notArr = readWorldPackListResult(worldsDir, \"Lbad\", \"behavior\");\n assert.deepEqual(notArr.entries, []);\n assert.equal(notArr.parseFailedFile, badFile);\n });\n\n it(\"\u65E0 deploy-catalog \u65F6\u4ECD\u53EF\u51ED\u78C1\u76D8 RP manifest \u5378\u4E16\u754C\u6E05\u5355(BLOCKER \u56DE\u5F52)\", async () => {\n const {\n assembleResourcePack,\n deployToBDS,\n enablePackInWorld,\n disablePackInWorld,\n readPackManifestHeader,\n worldPackListHas,\n } = await import(\"./pack-manager.js\");\n\n const bds = path.join(tmp, \"bds-stale\");\n const level = \"Bedrock level\";\n const worlds = path.join(bds, \"worlds\", level);\n const worldsDir = path.join(bds, \"worlds\");\n const bpSrc = path.join(tmp, \"bp-stale-src\");\n const rpMod = path.join(tmp, \"mod-stale\", \"resource_pack\");\n fs.mkdirSync(path.join(bpSrc, \"scripts\"), { recursive: true });\n fs.writeFileSync(path.join(bpSrc, \"scripts\", \"main.js\"), \"//\\n\");\n fs.mkdirSync(rpMod, { recursive: true });\n fs.writeFileSync(path.join(rpMod, \"x.txt\"), \"x\");\n\n const staleUuid = \"44444444-4444-4444-4444-444444444444\";\n const rpAssembled = path.join(tmp, \"rp-stale-assembled\");\n await assembleResourcePack({\n moduleResourceDirs: { stale: rpMod },\n outDir: rpAssembled,\n projectName: \"sfmc-modules-rp\",\n uuid: staleUuid,\n version: [1, 0, 0],\n });\n\n await deployToBDS({\n bdsRoot: bds,\n levelName: level,\n behaviorPackSrc: bpSrc,\n resourcePackSrc: rpAssembled,\n bpName: \"sfmc-modules\",\n rpName: \"sfmc-modules-rp\",\n });\n await enablePackInWorld({\n worldsDir,\n levelName: level,\n kind: \"resource\",\n packUuid: staleUuid,\n version: [1, 0, 0],\n });\n assert.equal(worldPackListHas(worldsDir, level, \"resource\", staleUuid), true);\n\n /* \u6A21\u62DF catalog \u7F3A\u5931:\u53EA\u7559\u78C1\u76D8 RP,lifecycle \u5E94\u5728 clear \u524D\u8BFB manifest */\n const rpDst = path.join(worlds, \"resource_packs\", \"sfmc-modules-rp\");\n const header = readPackManifestHeader(rpDst);\n assert.equal(header?.uuid, staleUuid);\n assert.ok(header);\n\n await deployToBDS({\n bdsRoot: bds,\n levelName: level,\n behaviorPackSrc: bpSrc,\n bpName: \"sfmc-modules\",\n rpName: \"sfmc-modules-rp\",\n clearResourcePack: true,\n });\n assert.ok(!fs.existsSync(rpDst));\n\n await disablePackInWorld({\n worldsDir,\n levelName: level,\n kind: \"resource\",\n packUuid: header.uuid,\n version: [1, 0, 0],\n });\n assert.equal(worldPackListHas(worldsDir, level, \"resource\", staleUuid), false);\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import fs from "node:fs";
|
|
3
|
-
import os from "node:os";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { after, before, describe, it } from "node:test";
|
|
6
|
-
import {
|
|
7
|
-
DEFAULT_PACK_UNINSTALL,
|
|
8
|
-
createPackSourceProvider,
|
|
9
|
-
createPackUpdateApi,
|
|
10
|
-
createTestPackUpdateDeps,
|
|
11
|
-
providerShortLabel,
|
|
12
|
-
resolveConfiguredPackProvider
|
|
13
|
-
} from "./index.js";
|
|
14
|
-
const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), "bds-pack-upd-cfg-"));
|
|
15
|
-
const api = createPackUpdateApi(createTestPackUpdateDeps(tmpRoot));
|
|
16
|
-
const { loadPackUpdateConfig, getPackMatchConfig, resolveUninstallTrashDir } = api;
|
|
17
|
-
describe("pack-update config + provider resolve", () => {
|
|
18
|
-
before(() => {
|
|
19
|
-
fs.mkdirSync(path.join(tmpRoot, "configs"), { recursive: true });
|
|
20
|
-
});
|
|
21
|
-
after(() => {
|
|
22
|
-
try {
|
|
23
|
-
fs.rmSync(tmpRoot, { recursive: true, force: true });
|
|
24
|
-
} catch {
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
it("defaultBindingEnabled \u9ED8\u8BA4 false\uFF0C\u4E14\u51FA\u73B0\u5728\u7C7B\u578B\u5316\u914D\u7F6E\u4E0A", () => {
|
|
28
|
-
const cfgPath = path.join(tmpRoot, "configs", "pack-update.json");
|
|
29
|
-
if (fs.existsSync(cfgPath)) fs.unlinkSync(cfgPath);
|
|
30
|
-
const cfg = loadPackUpdateConfig();
|
|
31
|
-
assert.equal(cfg.defaultBindingEnabled, false);
|
|
32
|
-
assert.equal(typeof cfg.match.nameMinScore, "number");
|
|
33
|
-
assert.equal(cfg.uninstall.recycleBin, true);
|
|
34
|
-
assert.equal(cfg.uninstall.trashRelativeDir, "packs/_trash");
|
|
35
|
-
assert.equal(cfg.uninstall.trashRelativeDir, DEFAULT_PACK_UNINSTALL.trashRelativeDir);
|
|
36
|
-
assert.equal(resolveUninstallTrashDir({ purge: true }), null);
|
|
37
|
-
const trashAbs = String(resolveUninstallTrashDir({})).replace(/\\/g, "/");
|
|
38
|
-
assert.ok(
|
|
39
|
-
trashAbs.includes(DEFAULT_PACK_UNINSTALL.trashRelativeDir),
|
|
40
|
-
`trash dir should contain ${DEFAULT_PACK_UNINSTALL.trashRelativeDir}: ${trashAbs}`
|
|
41
|
-
);
|
|
42
|
-
});
|
|
43
|
-
it("\u65E7\u7248 providers.curseforge.match \u63D0\u5347\u5230\u9876\u5C42 match", () => {
|
|
44
|
-
const cfgPath = path.join(tmpRoot, "configs", "pack-update.json");
|
|
45
|
-
fs.writeFileSync(
|
|
46
|
-
cfgPath,
|
|
47
|
-
JSON.stringify({
|
|
48
|
-
providers: {
|
|
49
|
-
curseforge: {
|
|
50
|
-
enabled: true,
|
|
51
|
-
apiKey: "",
|
|
52
|
-
match: { nameMinScore: 0.91, stripFolderTags: false }
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}),
|
|
56
|
-
"utf8"
|
|
57
|
-
);
|
|
58
|
-
const cfg = loadPackUpdateConfig();
|
|
59
|
-
assert.equal(cfg.match.nameMinScore, 0.91);
|
|
60
|
-
assert.equal(cfg.match.stripFolderTags, false);
|
|
61
|
-
assert.equal(getPackMatchConfig(cfg).nameMinScore, 0.91);
|
|
62
|
-
assert.equal("match" in cfg.providers.curseforge, false);
|
|
63
|
-
});
|
|
64
|
-
it("providerShortLabel / resolveConfiguredPackProvider \u5951\u7EA6", () => {
|
|
65
|
-
assert.equal(providerShortLabel("curseforge"), "cf");
|
|
66
|
-
const cfg = loadPackUpdateConfig();
|
|
67
|
-
assert.equal(resolveConfiguredPackProvider(cfg), null);
|
|
68
|
-
cfg.providers.curseforge.apiKey = "test-key-not-real";
|
|
69
|
-
const p = resolveConfiguredPackProvider(cfg);
|
|
70
|
-
assert.ok(p);
|
|
71
|
-
assert.equal(p.id, "curseforge");
|
|
72
|
-
assert.equal(createPackSourceProvider(cfg, "curseforge").id, "curseforge");
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
//# sourceMappingURL=config.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/pack-update/config.test.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * pack-update \u914D\u7F6E / provider \u89E3\u6790\u5951\u7EA6\u6D4B\u8BD5\n */\nimport assert from \"node:assert/strict\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { after, before, describe, it } from \"node:test\";\nimport {\n DEFAULT_PACK_UNINSTALL,\n createPackSourceProvider,\n createPackUpdateApi,\n createTestPackUpdateDeps,\n providerShortLabel,\n resolveConfiguredPackProvider,\n} from \"./index.js\";\n\nconst tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), \"bds-pack-upd-cfg-\"));\nconst api = createPackUpdateApi(createTestPackUpdateDeps(tmpRoot));\nconst { loadPackUpdateConfig, getPackMatchConfig, resolveUninstallTrashDir } = api;\n\ndescribe(\"pack-update config + provider resolve\", () => {\n before(() => {\n fs.mkdirSync(path.join(tmpRoot, \"configs\"), { recursive: true });\n });\n\n after(() => {\n try {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n } catch {\n /* ignore */\n }\n });\n\n it(\"defaultBindingEnabled \u9ED8\u8BA4 false\uFF0C\u4E14\u51FA\u73B0\u5728\u7C7B\u578B\u5316\u914D\u7F6E\u4E0A\", () => {\n const cfgPath = path.join(tmpRoot, \"configs\", \"pack-update.json\");\n if (fs.existsSync(cfgPath)) fs.unlinkSync(cfgPath);\n const cfg = loadPackUpdateConfig();\n assert.equal(cfg.defaultBindingEnabled, false);\n assert.equal(typeof cfg.match.nameMinScore, \"number\");\n assert.equal(cfg.uninstall.recycleBin, true);\n assert.equal(cfg.uninstall.trashRelativeDir, \"packs/_trash\");\n\n assert.equal(cfg.uninstall.trashRelativeDir, DEFAULT_PACK_UNINSTALL.trashRelativeDir);\n assert.equal(resolveUninstallTrashDir({ purge: true }), null);\n const trashAbs = String(resolveUninstallTrashDir({})).replace(/\\\\/g, \"/\");\n assert.ok(\n trashAbs.includes(DEFAULT_PACK_UNINSTALL.trashRelativeDir),\n `trash dir should contain ${DEFAULT_PACK_UNINSTALL.trashRelativeDir}: ${trashAbs}`\n );\n });\n\n it(\"\u65E7\u7248 providers.curseforge.match \u63D0\u5347\u5230\u9876\u5C42 match\", () => {\n const cfgPath = path.join(tmpRoot, \"configs\", \"pack-update.json\");\n fs.writeFileSync(\n cfgPath,\n JSON.stringify({\n providers: {\n curseforge: {\n enabled: true,\n apiKey: \"\",\n match: { nameMinScore: 0.91, stripFolderTags: false },\n },\n },\n }),\n \"utf8\"\n );\n const cfg = loadPackUpdateConfig();\n assert.equal(cfg.match.nameMinScore, 0.91);\n assert.equal(cfg.match.stripFolderTags, false);\n assert.equal(getPackMatchConfig(cfg).nameMinScore, 0.91);\n assert.equal(\"match\" in cfg.providers.curseforge, false);\n });\n\n it(\"providerShortLabel / resolveConfiguredPackProvider \u5951\u7EA6\", () => {\n assert.equal(providerShortLabel(\"curseforge\"), \"cf\");\n const cfg = loadPackUpdateConfig();\n assert.equal(resolveConfiguredPackProvider(cfg), null);\n cfg.providers.curseforge.apiKey = \"test-key-not-real\";\n const p = resolveConfiguredPackProvider(cfg);\n assert.ok(p);\n assert.equal(p.id, \"curseforge\");\n assert.equal(createPackSourceProvider(cfg, \"curseforge\").id, \"curseforge\");\n });\n});\n"],
|
|
5
|
-
"mappings": "AAGA,OAAO,YAAY;AACnB,OAAO,QAAQ;AACf,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,OAAO,QAAQ,UAAU,UAAU;AAC5C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,UAAU,GAAG,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,mBAAmB,CAAC;AAC1E,MAAM,MAAM,oBAAoB,yBAAyB,OAAO,CAAC;AACjE,MAAM,EAAE,sBAAsB,oBAAoB,yBAAyB,IAAI;AAE/E,SAAS,yCAAyC,MAAM;AACtD,SAAO,MAAM;AACX,OAAG,UAAU,KAAK,KAAK,SAAS,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACjE,CAAC;AAED,QAAM,MAAM;AACV,QAAI;AACF,SAAG,OAAO,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IACrD,QAAQ;AAAA,IAER;AAAA,EACF,CAAC;AAED,KAAG,8GAA6C,MAAM;AACpD,UAAM,UAAU,KAAK,KAAK,SAAS,WAAW,kBAAkB;AAChE,QAAI,GAAG,WAAW,OAAO,EAAG,IAAG,WAAW,OAAO;AACjD,UAAM,MAAM,qBAAqB;AACjC,WAAO,MAAM,IAAI,uBAAuB,KAAK;AAC7C,WAAO,MAAM,OAAO,IAAI,MAAM,cAAc,QAAQ;AACpD,WAAO,MAAM,IAAI,UAAU,YAAY,IAAI;AAC3C,WAAO,MAAM,IAAI,UAAU,kBAAkB,cAAc;AAE3D,WAAO,MAAM,IAAI,UAAU,kBAAkB,uBAAuB,gBAAgB;AACpF,WAAO,MAAM,yBAAyB,EAAE,OAAO,KAAK,CAAC,GAAG,IAAI;AAC5D,UAAM,WAAW,OAAO,yBAAyB,CAAC,CAAC,CAAC,EAAE,QAAQ,OAAO,GAAG;AACxE,WAAO;AAAA,MACL,SAAS,SAAS,uBAAuB,gBAAgB;AAAA,MACzD,4BAA4B,uBAAuB,gBAAgB,KAAK,QAAQ;AAAA,IAClF;AAAA,EACF,CAAC;AAED,KAAG,gFAA6C,MAAM;AACpD,UAAM,UAAU,KAAK,KAAK,SAAS,WAAW,kBAAkB;AAChE,OAAG;AAAA,MACD;AAAA,MACA,KAAK,UAAU;AAAA,QACb,WAAW;AAAA,UACT,YAAY;AAAA,YACV,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,OAAO,EAAE,cAAc,MAAM,iBAAiB,MAAM;AAAA,UACtD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,MACD;AAAA,IACF;AACA,UAAM,MAAM,qBAAqB;AACjC,WAAO,MAAM,IAAI,MAAM,cAAc,IAAI;AACzC,WAAO,MAAM,IAAI,MAAM,iBAAiB,KAAK;AAC7C,WAAO,MAAM,mBAAmB,GAAG,EAAE,cAAc,IAAI;AACvD,WAAO,MAAM,WAAW,IAAI,UAAU,YAAY,KAAK;AAAA,EACzD,CAAC;AAED,KAAG,mEAAyD,MAAM;AAChE,WAAO,MAAM,mBAAmB,YAAY,GAAG,IAAI;AACnD,UAAM,MAAM,qBAAqB;AACjC,WAAO,MAAM,8BAA8B,GAAG,GAAG,IAAI;AACrD,QAAI,UAAU,WAAW,SAAS;AAClC,UAAM,IAAI,8BAA8B,GAAG;AAC3C,WAAO,GAAG,CAAC;AACX,WAAO,MAAM,EAAE,IAAI,YAAY;AAC/B,WAAO,MAAM,yBAAyB,KAAK,YAAY,EAAE,IAAI,YAAY;AAAA,EAC3E,CAAC;AACH,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import { describe, it } from "node:test";
|
|
3
|
-
import {
|
|
4
|
-
buildSearchQueries,
|
|
5
|
-
buildSearchQueriesFromSources,
|
|
6
|
-
collectQuerySeeds,
|
|
7
|
-
decideVersionPolicy,
|
|
8
|
-
extractLatinPhrase,
|
|
9
|
-
insertCjkLatinBoundaries,
|
|
10
|
-
nextEnabledVersion,
|
|
11
|
-
normalizePackSearchName,
|
|
12
|
-
packSourceScore,
|
|
13
|
-
toCfSlugCandidate
|
|
14
|
-
} from "./index.js";
|
|
15
|
-
describe("version-policy", () => {
|
|
16
|
-
it("\u540C major \u66F4\u65B0\u5E94 bump RP", () => {
|
|
17
|
-
const d = decideVersionPolicy([1, 21, 100], [1, 21, 110], {
|
|
18
|
-
authority: "behavior_pack",
|
|
19
|
-
onUpdateOverwriteBoth: true,
|
|
20
|
-
rpBumpWhenSameMajor: true,
|
|
21
|
-
rpBumpComponent: "patch",
|
|
22
|
-
majorHigherSkipRpBump: true
|
|
23
|
-
});
|
|
24
|
-
assert.equal(d.remoteNewer, true);
|
|
25
|
-
assert.equal(d.shouldBumpRp, true);
|
|
26
|
-
});
|
|
27
|
-
it("major \u66F4\u9AD8\u5219\u4E0D\u989D\u5916 bump RP", () => {
|
|
28
|
-
const d = decideVersionPolicy([1, 21, 100], [2, 0, 0], {
|
|
29
|
-
authority: "behavior_pack",
|
|
30
|
-
onUpdateOverwriteBoth: true,
|
|
31
|
-
rpBumpWhenSameMajor: true,
|
|
32
|
-
rpBumpComponent: "patch",
|
|
33
|
-
majorHigherSkipRpBump: true
|
|
34
|
-
});
|
|
35
|
-
assert.equal(d.majorHigher, true);
|
|
36
|
-
assert.equal(d.shouldBumpRp, false);
|
|
37
|
-
});
|
|
38
|
-
it("\u540C\u7248\u672C\u672A\u66F4\u9AD8\u65F6\u9ED8\u8BA4\u4E0D bump\uFF1BtreatAsUpdate \u5F3A\u5236\u540C\u6B65\u4ECD\u53EF bump RP", () => {
|
|
39
|
-
const policy = {
|
|
40
|
-
authority: "behavior_pack",
|
|
41
|
-
onUpdateOverwriteBoth: true,
|
|
42
|
-
rpBumpWhenSameMajor: true,
|
|
43
|
-
rpBumpComponent: "patch",
|
|
44
|
-
majorHigherSkipRpBump: true
|
|
45
|
-
};
|
|
46
|
-
const plain = decideVersionPolicy([1, 0, 0], [1, 0, 0], policy);
|
|
47
|
-
assert.equal(plain.remoteNewer, false);
|
|
48
|
-
assert.equal(plain.shouldBumpRp, false);
|
|
49
|
-
const forced = decideVersionPolicy([1, 0, 0], [1, 0, 0], policy, { treatAsUpdate: true });
|
|
50
|
-
assert.equal(forced.remoteNewer, false);
|
|
51
|
-
assert.equal(forced.shouldBumpRp, true);
|
|
52
|
-
});
|
|
53
|
-
it("\u8FDC\u7A0B\u66F4\u65E7\u4F46 treatAsUpdate \u65F6\u4ECD\u6309\u540C major \u89C4\u5219 bump RP", () => {
|
|
54
|
-
const d = decideVersionPolicy(
|
|
55
|
-
[1, 2, 0],
|
|
56
|
-
[1, 1, 0],
|
|
57
|
-
{
|
|
58
|
-
authority: "behavior_pack",
|
|
59
|
-
onUpdateOverwriteBoth: true,
|
|
60
|
-
rpBumpWhenSameMajor: true,
|
|
61
|
-
rpBumpComponent: "patch",
|
|
62
|
-
majorHigherSkipRpBump: true
|
|
63
|
-
},
|
|
64
|
-
{ treatAsUpdate: true }
|
|
65
|
-
);
|
|
66
|
-
assert.equal(d.remoteNewer, false);
|
|
67
|
-
assert.equal(d.majorHigher, false);
|
|
68
|
-
assert.equal(d.shouldBumpRp, true);
|
|
69
|
-
});
|
|
70
|
-
it("nextEnabledVersion = bump(max(remote, previous))", () => {
|
|
71
|
-
assert.deepEqual(nextEnabledVersion([1, 0, 5], [1, 0, 8], "patch"), [1, 0, 9]);
|
|
72
|
-
assert.deepEqual(nextEnabledVersion([1, 0, 0], [1, 21, 100], "patch"), [1, 21, 101]);
|
|
73
|
-
assert.deepEqual(nextEnabledVersion([2, 0, 0], [1, 99, 99], "patch"), [2, 0, 1]);
|
|
74
|
-
assert.deepEqual(nextEnabledVersion([1, 2, 0], [1, 1, 9], "minor"), [1, 3, 0]);
|
|
75
|
-
});
|
|
76
|
-
it("normalize \u53BB\u6389\u65B9\u62EC\u53F7\u3001\u7248\u672C\u4E0E BP", () => {
|
|
77
|
-
const n = normalizePackSearchName("[BA] [\u73A9\u6CD5] Slash Blade v4 BP");
|
|
78
|
-
assert.equal(n, "Slash Blade");
|
|
79
|
-
});
|
|
80
|
-
it("CJK \u7C98\u8FDE\u5206\u754C\u5E76\u63D0\u53D6\u62C9\u4E01\u6838\u5FC3", () => {
|
|
81
|
-
const folder = "[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP";
|
|
82
|
-
assert.equal(normalizePackSearchName(folder), "\u62D4\u5200\u5251 Slash Blade");
|
|
83
|
-
assert.equal(
|
|
84
|
-
extractLatinPhrase(insertCjkLatinBoundaries(folder.replace(/\[[^\]]*\]/g, " "))),
|
|
85
|
-
"Slash Blade v4 BP"
|
|
86
|
-
);
|
|
87
|
-
const seeds = collectQuerySeeds(folder);
|
|
88
|
-
assert.ok(seeds.includes("Slash Blade v4 BP"));
|
|
89
|
-
assert.ok(seeds.includes("Slash Blade v4"));
|
|
90
|
-
assert.ok(seeds.includes("Slash Blade"));
|
|
91
|
-
assert.ok(seeds.some((s) => s.includes("\u62D4\u5200\u5251")));
|
|
92
|
-
});
|
|
93
|
-
it("\u810F\u6587\u4EF6\u5939\u540D\u6D3E\u751F\u542B slug / Title-Slug / addon", () => {
|
|
94
|
-
const qs = buildSearchQueries("[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP");
|
|
95
|
-
assert.ok(qs.includes("slash-blade"), `queries=${JSON.stringify(qs)}`);
|
|
96
|
-
assert.ok(qs.includes("slash-blade-addon"), `queries=${JSON.stringify(qs)}`);
|
|
97
|
-
assert.ok(qs.includes("Slash Blade"), `queries=${JSON.stringify(qs)}`);
|
|
98
|
-
assert.ok(
|
|
99
|
-
qs.some((q) => q.toLowerCase() === "slash-blade"),
|
|
100
|
-
`queries=${JSON.stringify(qs)}`
|
|
101
|
-
);
|
|
102
|
-
const iSlug = qs.findIndex((q) => q === "slash-blade-addon");
|
|
103
|
-
const iCjk = qs.findIndex((q) => q.includes("\u62D4\u5200\u5251"));
|
|
104
|
-
assert.ok(iSlug >= 0 && (iCjk < 0 || iSlug < iCjk));
|
|
105
|
-
});
|
|
106
|
-
it("header+\u6587\u4EF6\u5939\u53CC\u6E90\uFF1A\u6709\u62C9\u4E01\u65F6\u4E0D\u641C\u7EAF\u4E2D\u6587\uFF0C\u4E14\u6587\u4EF6\u5939\u8D21\u732E slug", () => {
|
|
107
|
-
const qs = buildSearchQueries(["\u62D4\u5200\u5251", "[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP"]);
|
|
108
|
-
assert.ok(qs.includes("slash-blade-addon"));
|
|
109
|
-
assert.ok(qs.includes("Slash Blade"));
|
|
110
|
-
assert.ok(qs.every((q) => /[A-Za-z]/.test(q)), `\u4E0D\u5E94\u518D\u641C\u7EAF\u4E2D\u6587: ${JSON.stringify(qs)}`);
|
|
111
|
-
});
|
|
112
|
-
it("\u53CC\u6E90\u8F6E\u8BE2\uFF1Aheader \u4E0E folder \u90FD\u4F1A\u8D21\u732E", () => {
|
|
113
|
-
const plan = buildSearchQueriesFromSources([
|
|
114
|
-
{ id: "header", raw: "Cool Swords Pack" },
|
|
115
|
-
{ id: "folder", raw: "[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP" }
|
|
116
|
-
]);
|
|
117
|
-
assert.ok(plan.perSource.header?.some((q) => /cool|swords/i.test(q)));
|
|
118
|
-
assert.ok(plan.perSource.folder?.some((q) => /slash-blade/i.test(q)));
|
|
119
|
-
assert.ok(plan.queries.some((q) => /slash-blade/i.test(q)));
|
|
120
|
-
assert.ok(plan.queries.some((q) => /cool|swords/i.test(q)));
|
|
121
|
-
});
|
|
122
|
-
it("slug \u5019\u9009\u65E0\u7A7A\u683C", () => {
|
|
123
|
-
assert.equal(toCfSlugCandidate("Slash Blade v4"), "slash-blade");
|
|
124
|
-
const qs = buildSearchQueries("Slash Blade v4");
|
|
125
|
-
assert.ok(qs.includes("Slash Blade"));
|
|
126
|
-
assert.ok(qs.includes("slash-blade"));
|
|
127
|
-
assert.ok(qs.includes("slash-blade-addon"));
|
|
128
|
-
});
|
|
129
|
-
it("slug \u547D\u4E2D slash-blade-addon \u9AD8\u5206", () => {
|
|
130
|
-
const score = packSourceScore("Slash Blade v4", {
|
|
131
|
-
name: "Slash Blade Addon",
|
|
132
|
-
slug: "slash-blade-addon"
|
|
133
|
-
});
|
|
134
|
-
assert.ok(score >= 0.95, `score=${score}`);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
//# sourceMappingURL=version-policy.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/pack-update/version-policy.test.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * version-policy / slug \u5339\u914D\u6D4B\u8BD5\uFF08\u6D4B\u751F\u4EA7\u5951\u7EA6\uFF0C\u7981\u6B62\u5185\u8054\u590D\u5236\uFF09\n */\nimport assert from \"node:assert/strict\";\nimport { describe, it } from \"node:test\";\nimport {\n buildSearchQueries,\n buildSearchQueriesFromSources,\n collectQuerySeeds,\n decideVersionPolicy,\n extractLatinPhrase,\n insertCjkLatinBoundaries,\n nextEnabledVersion,\n normalizePackSearchName,\n packSourceScore,\n toCfSlugCandidate,\n} from \"./index.js\";\n\ndescribe(\"version-policy\", () => {\n it(\"\u540C major \u66F4\u65B0\u5E94 bump RP\", () => {\n const d = decideVersionPolicy([1, 21, 100], [1, 21, 110], {\n authority: \"behavior_pack\",\n onUpdateOverwriteBoth: true,\n rpBumpWhenSameMajor: true,\n rpBumpComponent: \"patch\",\n majorHigherSkipRpBump: true,\n });\n assert.equal(d.remoteNewer, true);\n assert.equal(d.shouldBumpRp, true);\n });\n\n it(\"major \u66F4\u9AD8\u5219\u4E0D\u989D\u5916 bump RP\", () => {\n const d = decideVersionPolicy([1, 21, 100], [2, 0, 0], {\n authority: \"behavior_pack\",\n onUpdateOverwriteBoth: true,\n rpBumpWhenSameMajor: true,\n rpBumpComponent: \"patch\",\n majorHigherSkipRpBump: true,\n });\n assert.equal(d.majorHigher, true);\n assert.equal(d.shouldBumpRp, false);\n });\n\n it(\"\u540C\u7248\u672C\u672A\u66F4\u9AD8\u65F6\u9ED8\u8BA4\u4E0D bump\uFF1BtreatAsUpdate \u5F3A\u5236\u540C\u6B65\u4ECD\u53EF bump RP\", () => {\n const policy = {\n authority: \"behavior_pack\" as const,\n onUpdateOverwriteBoth: true,\n rpBumpWhenSameMajor: true,\n rpBumpComponent: \"patch\" as const,\n majorHigherSkipRpBump: true,\n };\n const plain = decideVersionPolicy([1, 0, 0], [1, 0, 0], policy);\n assert.equal(plain.remoteNewer, false);\n assert.equal(plain.shouldBumpRp, false);\n\n const forced = decideVersionPolicy([1, 0, 0], [1, 0, 0], policy, { treatAsUpdate: true });\n assert.equal(forced.remoteNewer, false);\n assert.equal(forced.shouldBumpRp, true);\n });\n\n it(\"\u8FDC\u7A0B\u66F4\u65E7\u4F46 treatAsUpdate \u65F6\u4ECD\u6309\u540C major \u89C4\u5219 bump RP\", () => {\n const d = decideVersionPolicy(\n [1, 2, 0],\n [1, 1, 0],\n {\n authority: \"behavior_pack\",\n onUpdateOverwriteBoth: true,\n rpBumpWhenSameMajor: true,\n rpBumpComponent: \"patch\",\n majorHigherSkipRpBump: true,\n },\n { treatAsUpdate: true }\n );\n assert.equal(d.remoteNewer, false);\n assert.equal(d.majorHigher, false);\n assert.equal(d.shouldBumpRp, true);\n });\n\n it(\"nextEnabledVersion = bump(max(remote, previous))\", () => {\n assert.deepEqual(nextEnabledVersion([1, 0, 5], [1, 0, 8], \"patch\"), [1, 0, 9]);\n assert.deepEqual(nextEnabledVersion([1, 0, 0], [1, 21, 100], \"patch\"), [1, 21, 101]);\n assert.deepEqual(nextEnabledVersion([2, 0, 0], [1, 99, 99], \"patch\"), [2, 0, 1]);\n assert.deepEqual(nextEnabledVersion([1, 2, 0], [1, 1, 9], \"minor\"), [1, 3, 0]);\n });\n\n it(\"normalize \u53BB\u6389\u65B9\u62EC\u53F7\u3001\u7248\u672C\u4E0E BP\", () => {\n const n = normalizePackSearchName(\"[BA] [\u73A9\u6CD5] Slash Blade v4 BP\");\n assert.equal(n, \"Slash Blade\");\n });\n\n it(\"CJK \u7C98\u8FDE\u5206\u754C\u5E76\u63D0\u53D6\u62C9\u4E01\u6838\u5FC3\", () => {\n const folder = \"[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP\";\n assert.equal(normalizePackSearchName(folder), \"\u62D4\u5200\u5251 Slash Blade\");\n assert.equal(\n extractLatinPhrase(insertCjkLatinBoundaries(folder.replace(/\\[[^\\]]*\\]/g, \" \"))),\n \"Slash Blade v4 BP\"\n );\n const seeds = collectQuerySeeds(folder);\n assert.ok(seeds.includes(\"Slash Blade v4 BP\"));\n assert.ok(seeds.includes(\"Slash Blade v4\"));\n assert.ok(seeds.includes(\"Slash Blade\"));\n assert.ok(seeds.some((s) => s.includes(\"\u62D4\u5200\u5251\")));\n });\n\n it(\"\u810F\u6587\u4EF6\u5939\u540D\u6D3E\u751F\u542B slug / Title-Slug / addon\", () => {\n const qs = buildSearchQueries(\"[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP\");\n assert.ok(qs.includes(\"slash-blade\"), `queries=${JSON.stringify(qs)}`);\n assert.ok(qs.includes(\"slash-blade-addon\"), `queries=${JSON.stringify(qs)}`);\n assert.ok(qs.includes(\"Slash Blade\"), `queries=${JSON.stringify(qs)}`);\n assert.ok(\n qs.some((q) => q.toLowerCase() === \"slash-blade\"),\n `queries=${JSON.stringify(qs)}`\n );\n const iSlug = qs.findIndex((q) => q === \"slash-blade-addon\");\n const iCjk = qs.findIndex((q) => q.includes(\"\u62D4\u5200\u5251\"));\n assert.ok(iSlug >= 0 && (iCjk < 0 || iSlug < iCjk));\n });\n\n it(\"header+\u6587\u4EF6\u5939\u53CC\u6E90\uFF1A\u6709\u62C9\u4E01\u65F6\u4E0D\u641C\u7EAF\u4E2D\u6587\uFF0C\u4E14\u6587\u4EF6\u5939\u8D21\u732E slug\", () => {\n const qs = buildSearchQueries([\"\u62D4\u5200\u5251\", \"[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP\"]);\n assert.ok(qs.includes(\"slash-blade-addon\"));\n assert.ok(qs.includes(\"Slash Blade\"));\n assert.ok(qs.every((q) => /[A-Za-z]/.test(q)), `\u4E0D\u5E94\u518D\u641C\u7EAF\u4E2D\u6587: ${JSON.stringify(qs)}`);\n });\n\n it(\"\u53CC\u6E90\u8F6E\u8BE2\uFF1Aheader \u4E0E folder \u90FD\u4F1A\u8D21\u732E\", () => {\n const plan = buildSearchQueriesFromSources([\n { id: \"header\", raw: \"Cool Swords Pack\" },\n { id: \"folder\", raw: \"[BP] [BA] [\u73A9\u6CD5] \u62D4\u5200\u5251Slash Blade v4 BP\" },\n ]);\n assert.ok(plan.perSource.header?.some((q) => /cool|swords/i.test(q)));\n assert.ok(plan.perSource.folder?.some((q) => /slash-blade/i.test(q)));\n assert.ok(plan.queries.some((q) => /slash-blade/i.test(q)));\n assert.ok(plan.queries.some((q) => /cool|swords/i.test(q)));\n });\n\n it(\"slug \u5019\u9009\u65E0\u7A7A\u683C\", () => {\n assert.equal(toCfSlugCandidate(\"Slash Blade v4\"), \"slash-blade\");\n const qs = buildSearchQueries(\"Slash Blade v4\");\n assert.ok(qs.includes(\"Slash Blade\"));\n assert.ok(qs.includes(\"slash-blade\"));\n assert.ok(qs.includes(\"slash-blade-addon\"));\n });\n\n it(\"slug \u547D\u4E2D slash-blade-addon \u9AD8\u5206\", () => {\n const score = packSourceScore(\"Slash Blade v4\", {\n name: \"Slash Blade Addon\",\n slug: \"slash-blade-addon\",\n });\n assert.ok(score >= 0.95, `score=${score}`);\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import fs from "node:fs";
|
|
3
|
-
import os from "node:os";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { after, describe, it } from "node:test";
|
|
6
|
-
import * as probe from "./process-probe.js";
|
|
7
|
-
describe("process-probe pid file", () => {
|
|
8
|
-
let tempRoot = "";
|
|
9
|
-
after(() => {
|
|
10
|
-
if (tempRoot) {
|
|
11
|
-
fs.rmSync(tempRoot, { recursive: true, force: true });
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
it("read/write/clear bds.pid \u5728\u72EC\u7ACB temp \u6839\u76EE\u5F55", () => {
|
|
15
|
-
tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "sfmc-probe-"));
|
|
16
|
-
assert.equal(probe.readBdsPidFile(tempRoot), 0);
|
|
17
|
-
probe.writeBdsPidFile(4242, tempRoot);
|
|
18
|
-
assert.equal(probe.readBdsPidFile(tempRoot), 4242);
|
|
19
|
-
probe.clearBdsPidFile(tempRoot);
|
|
20
|
-
assert.equal(probe.readBdsPidFile(tempRoot), 0);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe("process-probe probeBdsStatus", () => {
|
|
24
|
-
let tempRoot = "";
|
|
25
|
-
const calls = [];
|
|
26
|
-
after(() => {
|
|
27
|
-
probe.setExecForTesting(null);
|
|
28
|
-
probe.setIsAliveForTesting(null);
|
|
29
|
-
if (tempRoot) {
|
|
30
|
-
fs.rmSync(tempRoot, { recursive: true, force: true });
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
it("managedPid + hasStdin \u4E14\u8FDB\u7A0B\u5B58\u6D3B \u2192 managed", async () => {
|
|
34
|
-
tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "sfmc-probe-"));
|
|
35
|
-
calls.length = 0;
|
|
36
|
-
probe.setIsAliveForTesting((pid) => pid === 100);
|
|
37
|
-
probe.setExecForTesting(async (cmd) => {
|
|
38
|
-
calls.push(cmd);
|
|
39
|
-
if (cmd.includes("PID eq 100")) {
|
|
40
|
-
return { stdout: "bedrock_server.exe 100 Console", stderr: "" };
|
|
41
|
-
}
|
|
42
|
-
return { stdout: "", stderr: "" };
|
|
43
|
-
});
|
|
44
|
-
const result = await probe.probeBdsStatus({ managedPid: 100, hasStdin: true, rootDir: tempRoot });
|
|
45
|
-
assert.deepEqual(result, { state: "managed", pid: 100 });
|
|
46
|
-
});
|
|
47
|
-
it("PID \u6587\u4EF6\u5B58\u6D3B\u4F46\u65E0 stdin \u2192 external", async () => {
|
|
48
|
-
probe.writeBdsPidFile(200, tempRoot);
|
|
49
|
-
probe.setIsAliveForTesting((pid) => pid === 200);
|
|
50
|
-
probe.setExecForTesting(async (cmd) => {
|
|
51
|
-
if (cmd.includes("PID eq 200")) {
|
|
52
|
-
return { stdout: "bedrock_server.exe 200 Console", stderr: "" };
|
|
53
|
-
}
|
|
54
|
-
return { stdout: "", stderr: "" };
|
|
55
|
-
});
|
|
56
|
-
const result = await probe.probeBdsStatus({ managedPid: 200, hasStdin: false, rootDir: tempRoot });
|
|
57
|
-
assert.equal(result.state, "external");
|
|
58
|
-
assert.equal(result.pid, 200);
|
|
59
|
-
});
|
|
60
|
-
it("\u65E0 PID \u6587\u4EF6\u4F46\u6709 bedrock_server \u955C\u50CF \u2192 external", async () => {
|
|
61
|
-
probe.clearBdsPidFile(tempRoot);
|
|
62
|
-
probe.setIsAliveForTesting(() => false);
|
|
63
|
-
probe.setExecForTesting(async (cmd) => {
|
|
64
|
-
if (cmd.includes("IMAGENAME eq bedrock_server.exe")) {
|
|
65
|
-
return { stdout: '"bedrock_server.exe","555","Console","1","999 K"\n', stderr: "" };
|
|
66
|
-
}
|
|
67
|
-
if (cmd.includes("pgrep")) {
|
|
68
|
-
return { stdout: "555\n", stderr: "" };
|
|
69
|
-
}
|
|
70
|
-
return { stdout: "", stderr: "" };
|
|
71
|
-
});
|
|
72
|
-
const result = await probe.probeBdsStatus({ rootDir: tempRoot });
|
|
73
|
-
assert.deepEqual(result, { state: "external", pid: 555 });
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
//# sourceMappingURL=process-probe.test.js.map
|