refactor: update commitAndPush function to accept repoDir parameter and adjust related tests
This commit is contained in:
+6
-7
@@ -38,7 +38,6 @@ describe('commitAndPush', () => {
|
||||
before(() => { workspace = makeTmpWorkspace(); });
|
||||
after(() => { fs.rmSync(workspace, { recursive: true, force: true }); });
|
||||
beforeEach(() => {
|
||||
// Remove leftover askpass scripts between tests
|
||||
for (const f of fs.readdirSync(workspace)) {
|
||||
if (f.endsWith('.git-askpass.sh')) fs.unlinkSync(path.join(workspace, f));
|
||||
}
|
||||
@@ -46,7 +45,7 @@ describe('commitAndPush', () => {
|
||||
|
||||
it('does not embed token in any git command argument', async () => {
|
||||
const spawn = makeSpawn();
|
||||
await commitAndPush(workspace, spawn);
|
||||
await commitAndPush(workspace, path.join(workspace, 'repo'), spawn);
|
||||
|
||||
for (const { args } of spawn.calls) {
|
||||
assert.ok(!args.join(' ').includes('test-token'), `Token leaked in git args: ${args.join(' ')}`);
|
||||
@@ -55,7 +54,7 @@ describe('commitAndPush', () => {
|
||||
|
||||
it('uses GIT_ASKPASS env for network operations (fetch, push, clone)', async () => {
|
||||
const spawn = makeSpawn();
|
||||
await commitAndPush(workspace, spawn);
|
||||
await commitAndPush(workspace, path.join(workspace, 'repo'), spawn);
|
||||
|
||||
const networkOps = ['fetch', 'push', 'clone'];
|
||||
const networkCalls = spawn.calls.filter(c => networkOps.includes(c.args[0]));
|
||||
@@ -67,28 +66,28 @@ describe('commitAndPush', () => {
|
||||
});
|
||||
|
||||
it('cleans up askpass script after successful run', async () => {
|
||||
await commitAndPush(workspace, makeSpawn());
|
||||
await commitAndPush(workspace, path.join(workspace, 'repo'), makeSpawn());
|
||||
const leftover = fs.readdirSync(workspace).filter(f => f.endsWith('.git-askpass.sh'));
|
||||
assert.equal(leftover.length, 0, 'askpass script was not cleaned up');
|
||||
});
|
||||
|
||||
it('cleans up askpass script even when git fails', async () => {
|
||||
const failSpawn = () => ({ status: 1, stdout: '', stderr: 'fatal: error', error: null });
|
||||
await commitAndPush(workspace, failSpawn);
|
||||
await commitAndPush(workspace, path.join(workspace, 'repo'), failSpawn);
|
||||
const leftover = fs.readdirSync(workspace).filter(f => f.endsWith('.git-askpass.sh'));
|
||||
assert.equal(leftover.length, 0, 'askpass script was not cleaned up after failure');
|
||||
});
|
||||
|
||||
it('skips commit when status shows no changes', async () => {
|
||||
const spawn = makeSpawn({ status: () => ({ status: 0, stdout: '', stderr: '', error: null }) });
|
||||
await commitAndPush(workspace, spawn);
|
||||
await commitAndPush(workspace, path.join(workspace, 'repo'), spawn);
|
||||
const commitCalled = spawn.calls.some(c => c.args[0] === 'commit');
|
||||
assert.equal(commitCalled, false, 'commit should not run when there are no changes');
|
||||
});
|
||||
|
||||
it('does not throw when git command fails', async () => {
|
||||
const failSpawn = () => ({ status: 1, stdout: '', stderr: 'fatal: error', error: null });
|
||||
await assert.doesNotReject(() => commitAndPush(workspace, failSpawn));
|
||||
await assert.doesNotReject(() => commitAndPush(workspace, path.join(workspace, 'repo'), failSpawn));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user