mirror of
https://github.com/kuaifan/dootask.git
synced 2026-05-31 20:58:29 +00:00
替换 UPLOAD_TOKEN/UPLOAD_URL 为 R2(S3 兼容)对象存储: - 新增 r2.js 封装上传/复制/删除/列举等操作 - 新增 release-index.js 从文件名解析平台/架构生成下载索引 - CI 环境变量同步切换为 R2_* 系列 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
37 lines
1.4 KiB
JavaScript
Vendored
37 lines
1.4 KiB
JavaScript
Vendored
const test = require('node:test');
|
|
const assert = require('node:assert');
|
|
const { parseFilename, buildReleaseIndex } = require('./release-index');
|
|
|
|
test('parseFilename: win exe x64', () => {
|
|
assert.deepStrictEqual(parseFilename('DooTask-v1.7.56-win-x64.exe'), { platform: 'win', arch: 'x64' });
|
|
});
|
|
|
|
test('parseFilename: mac dmg arm64', () => {
|
|
assert.deepStrictEqual(parseFilename('DooTask-v1.7.56-mac-arm64.dmg'), { platform: 'mac', arch: 'arm64' });
|
|
});
|
|
|
|
test('parseFilename: android apk has null arch', () => {
|
|
assert.deepStrictEqual(parseFilename('app-release.apk'), { platform: 'android', arch: null });
|
|
});
|
|
|
|
test('parseFilename: ignores yml/blockmap/zip', () => {
|
|
assert.strictEqual(parseFilename('latest.yml'), null);
|
|
assert.strictEqual(parseFilename('DooTask-v1.7.56-win-x64.exe.blockmap'), null);
|
|
assert.strictEqual(parseFilename('DooTask-v1.7.56-mac-arm64.zip'), null);
|
|
});
|
|
|
|
test('buildReleaseIndex: groups by platform/arch, .zip never overwrites .dmg', () => {
|
|
const index = buildReleaseIndex([
|
|
'DooTask-v1.7.56-mac-arm64.dmg',
|
|
'DooTask-v1.7.56-mac-arm64.zip',
|
|
'DooTask-v1.7.56-win-x64.exe',
|
|
'latest.yml',
|
|
'app-release.apk',
|
|
]);
|
|
assert.deepStrictEqual(index, {
|
|
mac: { arm64: 'DooTask-v1.7.56-mac-arm64.dmg' },
|
|
win: { x64: 'DooTask-v1.7.56-win-x64.exe' },
|
|
android: { default: 'app-release.apk' },
|
|
});
|
|
});
|