107 lines
4 KiB
JavaScript
107 lines
4 KiB
JavaScript
|
|
#!/usr/bin/env node
|
||
|
|
|
||
|
|
const fs = require("node:fs");
|
||
|
|
const path = require("node:path");
|
||
|
|
const assert = require("node:assert/strict");
|
||
|
|
|
||
|
|
const root = __dirname;
|
||
|
|
const ini = fs.readFileSync(path.join(root, "app.ini.fragment"), "utf8");
|
||
|
|
const jdCandidateIni = fs.readFileSync(
|
||
|
|
path.join(root, "candidate-app.jd.ini"),
|
||
|
|
"utf8",
|
||
|
|
);
|
||
|
|
const enterpriseCandidateIni = fs.readFileSync(
|
||
|
|
path.join(root, "candidate-app.enterprise.ini"),
|
||
|
|
"utf8",
|
||
|
|
);
|
||
|
|
const installer = fs.readFileSync(
|
||
|
|
path.join(root, "install-candidate.sh"),
|
||
|
|
"utf8",
|
||
|
|
);
|
||
|
|
const relayPreparer = fs.readFileSync(
|
||
|
|
path.join(root, "prepare-release-on-sg.sh"),
|
||
|
|
"utf8",
|
||
|
|
);
|
||
|
|
const policy = JSON.parse(
|
||
|
|
fs.readFileSync(path.join(root, "update-policy.json"), "utf8"),
|
||
|
|
);
|
||
|
|
|
||
|
|
assert.match(ini, /\[cron\.update_checker\][\s\S]*ENABLED\s*=\s*false/i);
|
||
|
|
assert.match(jdCandidateIni, /HoloLake Code Channel · Fifth Domain/);
|
||
|
|
assert.match(enterpriseCandidateIni, /HoloLake Code Channel · Enterprise/);
|
||
|
|
for (const candidateIni of [jdCandidateIni, enterpriseCandidateIni]) {
|
||
|
|
assert.match(
|
||
|
|
candidateIni,
|
||
|
|
/\[server\][\s\S]*HTTP_ADDR\s*=\s*127\.0\.0\.1[\s\S]*HTTP_PORT\s*=\s*3340/i,
|
||
|
|
);
|
||
|
|
assert.match(candidateIni, /RUN_USER\s*=\s*guanghu/i);
|
||
|
|
assert.match(
|
||
|
|
candidateIni,
|
||
|
|
/\/var\/lib\/guanghu\/code-channel\/candidates\/hlcc-v16\.0\.1/,
|
||
|
|
);
|
||
|
|
assert.match(
|
||
|
|
candidateIni,
|
||
|
|
/\[cron\.update_checker\][\s\S]*ENABLED\s*=\s*false/i,
|
||
|
|
);
|
||
|
|
assert.match(candidateIni, /\[actions\][\s\S]*ENABLED\s*=\s*false/i);
|
||
|
|
assert.match(candidateIni, /\[mirror\][\s\S]*ENABLED\s*=\s*false/i);
|
||
|
|
}
|
||
|
|
assert.match(
|
||
|
|
installer,
|
||
|
|
/\/var\/lib\/guanghu\/code-channel\/offline-source\/hlcc-v/,
|
||
|
|
);
|
||
|
|
assert.match(installer, /HLCC_VERSION="16\.0\.1"/);
|
||
|
|
assert.doesNotMatch(installer, /curl|wget|keyserver/);
|
||
|
|
assert.match(
|
||
|
|
installer,
|
||
|
|
/HLCC_RELEASE_KEY="EB114F5E6C0DC2BCDD183550A4B61A2DC5923710"/,
|
||
|
|
);
|
||
|
|
assert.match(installer, /gpg[\s\S]*--verify/);
|
||
|
|
assert.match(installer, /HLCC_SOURCE_ARCHIVE[\s\S]*sha256sum --check MANIFEST\.sha256/);
|
||
|
|
assert.match(installer, /candidate-app\.ini/);
|
||
|
|
assert.match(installer, /No service was started/);
|
||
|
|
assert.match(relayPreparer, /RELEASE_URL="https:\/\/code\.forgejo\.org\//);
|
||
|
|
assert.match(relayPreparer, /id -un\)" != "ubuntu"/);
|
||
|
|
assert.match(relayPreparer, /forgejo-upstream-all\.bundle/);
|
||
|
|
assert.match(relayPreparer, /guanghu-code-channel\.bundle/);
|
||
|
|
assert.match(relayPreparer, /MANIFEST\.sha256/);
|
||
|
|
assert.match(
|
||
|
|
relayPreparer,
|
||
|
|
/No service was started and no transfer to a domestic node was attempted/,
|
||
|
|
);
|
||
|
|
assert.equal(policy.product_id, "HLP-MOD-CODE-CHANNEL");
|
||
|
|
assert.equal(policy.official_upstream.automatic_fetch, false);
|
||
|
|
assert.equal(policy.official_upstream.automatic_merge, false);
|
||
|
|
assert.equal(policy.official_upstream.automatic_build, false);
|
||
|
|
assert.equal(policy.official_upstream.automatic_deploy, false);
|
||
|
|
assert.equal(policy.official_upstream.push_enabled, false);
|
||
|
|
assert.equal(policy.forgejo_builtin_update_checker.enabled, false);
|
||
|
|
assert.equal(
|
||
|
|
policy.guanghu_update_channel.manifest_url,
|
||
|
|
"https://guanghulab.com/api/code-channel/updates/v1/manifest.json",
|
||
|
|
);
|
||
|
|
assert.equal(policy.guanghu_update_channel.require_signature, true);
|
||
|
|
assert.equal(policy.guanghu_update_channel.require_artifact_sha256, true);
|
||
|
|
assert.equal(policy.guanghu_update_channel.require_rollback_release, true);
|
||
|
|
assert.equal(
|
||
|
|
policy.guanghu_update_channel.fallback_when_unavailable,
|
||
|
|
"MANUAL_RELEASE_ONLY",
|
||
|
|
);
|
||
|
|
assert.equal(
|
||
|
|
policy.source_baseline.upstream_commit,
|
||
|
|
"b3d7e4ac3cbccc220703097a51fa4c16bf302579",
|
||
|
|
);
|
||
|
|
assert.deepEqual(policy.offline_distribution.domestic_archive_nodes, [
|
||
|
|
"JD-FD-PRIMARY",
|
||
|
|
"AW-GZ-001",
|
||
|
|
]);
|
||
|
|
assert.deepEqual(policy.offline_distribution.runtime_nodes, [
|
||
|
|
"JD-FD-PRIMARY",
|
||
|
|
"AW-GZ-001",
|
||
|
|
]);
|
||
|
|
assert.equal(policy.offline_distribution.require_manifest_sha256, true);
|
||
|
|
assert.equal(policy.offline_distribution.require_domestic_gpg_reverification, true);
|
||
|
|
assert.equal(policy.offline_distribution.shared_runtime_data, false);
|
||
|
|
assert.equal(policy.offline_distribution.automatic_transfer, false);
|
||
|
|
|
||
|
|
console.log("HoloLake Code Channel update boundary: PASS");
|