test(calculate-version): 補強測試覆蓋並拆分混合測試案例

- 新增 logger section/info/error 的輸出格式測試
- config 補上 GITEA_REPOSITORY 驗證測試,並拆分 isUnset/requireEnv 的正反例
- version 補回 compareVersionArrays 的 major 跨區段比較案例

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jeffery
2026-06-26 14:01:30 +08:00
co-authored by Claude Opus 4.8
parent b8804c5218
commit a9d137ac9e
3 changed files with 88 additions and 3 deletions
+32 -3
View File
@@ -10,15 +10,25 @@ const {
loadConfig,
} = require('../config');
test('isUnset undefined/空字串/null 字面值視為未設定', () => {
test('isUnset undefined/null/空字串/字面 "null" 視為未設定', () => {
assert.equal(isUnset(undefined), true);
assert.equal(isUnset(null), true);
assert.equal(isUnset(''), true);
assert.equal(isUnset('null'), true);
assert.equal(isUnset('value'), false);
});
test('requireEnv 未設定時拋錯,有值時回傳原值', () => {
test('isUnset 對其他非空值視為已設定', () => {
assert.equal(isUnset('value'), false);
assert.equal(isUnset('false'), false);
assert.equal(isUnset('0'), false);
});
test('requireEnv 未設定時拋錯', () => {
assert.throws(() => requireEnv('FOO', ''), /FOO 未設定/);
assert.throws(() => requireEnv('FOO', undefined), /FOO 未設定/);
});
test('requireEnv 有值時回傳原值', () => {
assert.equal(requireEnv('FOO', 'bar'), 'bar');
});
@@ -73,3 +83,22 @@ test('loadConfig 於 GITEA_SERVER_URL 使用非 http(s) 協定時拋錯', () =>
GITEA_REPOSITORY: 'owner/repo',
}), /必須使用 http 或 https/);
});
test('loadConfig 於 GITEA_REPOSITORY 格式錯誤或含路徑穿越時拋錯', () => {
assert.throws(() => loadConfig({
GITEA_SERVER_URL: 'https://gitea.example.com',
GITEA_REPOSITORY: '../evil',
}), /GITEA_REPOSITORY 格式錯誤/);
assert.throws(() => loadConfig({
GITEA_SERVER_URL: 'https://gitea.example.com',
GITEA_REPOSITORY: 'owner/repo/extra',
}), /GITEA_REPOSITORY 格式錯誤/);
});
test('loadConfig 接受含點號的合法 owner/repo', () => {
const config = loadConfig({
GITEA_SERVER_URL: 'https://gitea.example.com',
GITEA_REPOSITORY: 'my.org/my.repo',
});
assert.equal(config.repository, 'my.org/my.repo');
});