| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 'use strict';
- const assert = require('assert/strict');
- const fs = require('fs');
- const os = require('os');
- const path = require('path');
- const { runUpdateHelper } = require('../mcp/src/core/update-service');
- async function main() {
- const archive = path.resolve(String(process.env.QIWEI_UPDATE_TEST_ARCHIVE || '').trim());
- if (!archive || !fs.existsSync(archive)) {
- process.stdout.write(JSON.stringify({ status: 'skipped', reason: 'set QIWEI_UPDATE_TEST_ARCHIVE to a local Bun ZIP' }) + '\n');
- return;
- }
- const root = fs.mkdtempSync(path.join(os.tmpdir(), 'qiwei-update-apply-'));
- try {
- fs.mkdirSync(path.join(root, 'outputs', 'runtime'), { recursive: true });
- fs.mkdirSync(path.join(root, 'knowledge'), { recursive: true });
- fs.writeFileSync(path.join(root, 'version.json'), JSON.stringify({ version: '0.5.2' }), 'utf8');
- fs.writeFileSync(path.join(root, '.env.local'), 'QIWEI_TEST_KEEP=1\n', 'utf8');
- fs.writeFileSync(path.join(root, 'knowledge', '客户资料.md'), 'keep-knowledge', 'utf8');
- fs.writeFileSync(path.join(root, 'outputs', 'runtime', 'keep.txt'), 'keep-output', 'utf8');
- fs.writeFileSync(path.join(root, 'qiwei.runtime.config.mjs'), 'export default {}\n', 'utf8');
- process.env.QIWEI_UPDATE_RESTART = '0';
- const result = await runUpdateHelper(['--archive', archive, '--package-root', root]);
- assert.equal(result.version, '0.5.3');
- assert.equal(fs.readFileSync(path.join(root, '.env.local'), 'utf8'), 'QIWEI_TEST_KEEP=1\n');
- assert.equal(fs.readFileSync(path.join(root, 'knowledge', '客户资料.md'), 'utf8'), 'keep-knowledge');
- assert.equal(fs.readFileSync(path.join(root, 'outputs', 'runtime', 'keep.txt'), 'utf8'), 'keep-output');
- assert.equal(fs.existsSync(path.join(root, 'qiwei.runtime.config.mjs')), true);
- process.stdout.write(JSON.stringify({ status: 'passed', checks: ['version-replaced', 'env-preserved', 'knowledge-preserved', 'outputs-preserved', 'runtime-config-preserved'] }, null, 2) + '\n');
- } finally {
- // Keep the temporary tree for inspection on Windows; recursive removal of
- // a freshly extracted 100 MB package can crash the host Node process.
- if (process.env.QIWEI_UPDATE_TEST_CLEANUP === '1') fs.rmSync(root, { recursive: true, force: true });
- }
- }
- main().catch(error => {
- process.stderr.write(JSON.stringify({ status: 'failed', message: error.message, stack: error.stack }, null, 2) + '\n');
- process.exitCode = 1;
- });
|