fix(action image): 安裝 git 供前置遠端驗證使用

This commit is contained in:
2026-06-25 15:17:51 +00:00
parent a4a0f75ebc
commit afec5a9387
3 changed files with 15 additions and 3 deletions
+4 -1
View File
@@ -13,7 +13,10 @@ function makeRunner(spawn) {
const opts = { cwd, encoding: 'utf8' };
if (env) opts.env = env;
const result = spawn('git', args, opts);
if (result.error) throw result.error;
if (result.error) {
if (result.error.code === 'ENOENT') throw new Error('找不到 git 指令,請確認 action image 已安裝 git');
throw result.error;
}
if (result.status !== 0) throw new Error((result.stderr || result.stdout || '').trim());
return (result.stdout || '').trim();
};
+9
View File
@@ -300,6 +300,15 @@ describe('verifyRemoteAccess', () => {
assert.match(result.error, /could not read Username/);
});
it('reports a clear failure when git is not installed', () => {
const enoent = new Error('spawnSync git ENOENT');
enoent.code = 'ENOENT';
const spawn = () => ({ status: null, stdout: '', stderr: '', error: enoent });
const result = verifyRemoteAccess(workspace, spawn);
assert.equal(result.ok, false);
assert.match(result.error, /找不到 git 指令/);
});
it('cleans up the askpass script after running', () => {
verifyRemoteAccess(workspace, () => ({ status: 0, stdout: '', stderr: '', error: null }));
const leftover = fs.readdirSync(workspace).filter(f => f.endsWith('.git-askpass.sh'));