From d952879a60e29a5c8ac0bd3f9d3725a1cc0e7ad5 Mon Sep 17 00:00:00 2001 From: gonzaloriestra <14979109+gonzaloriestra@users.noreply.github.com> Date: Tue, 11 Aug 2026 00:40:41 +0000 Subject: [PATCH] [Tests] Add coverage for checkIfIgnoredInGitRepository Add unit tests for checkIfIgnoredInGitRepository in packages/cli-kit/src/public/node/git.test.ts to cover: - Path matching when files are ignored. - Graceful empty array fallback on AbortError with exitCode 1. - Other execution errors being re-thrown correctly. --- packages/cli-kit/src/public/node/git.test.ts | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/cli-kit/src/public/node/git.test.ts b/packages/cli-kit/src/public/node/git.test.ts index acff89c5765..cc42681a946 100644 --- a/packages/cli-kit/src/public/node/git.test.ts +++ b/packages/cli-kit/src/public/node/git.test.ts @@ -175,6 +175,40 @@ describe('downloadRepository()', async () => { }) }) +describe('checkIfIgnoredInGitRepository()', () => { + test('returns the list of ignored files when git check-ignore finds ignored files', async () => { + const directory = '/tmp/git-repo' + const files = ['/tmp/git-repo/file1.txt', '/tmp/git-repo/file2.txt'] + mockGitCommand('/tmp/git-repo/file1.txt\n/tmp/git-repo/file2.txt\n') + + const result = await git.checkIfIgnoredInGitRepository(directory, files) + + expect(mockedExeca).toHaveBeenCalledWith('git', ['check-ignore', ...files], {cwd: directory}) + expect(result).toEqual(['/tmp/git-repo/file1.txt', '/tmp/git-repo/file2.txt']) + }) + + test('returns empty array if no files are ignored (returns exitCode 1)', async () => { + const directory = '/tmp/git-repo' + const files = ['/tmp/git-repo/file1.txt'] + const error = Object.assign(new Error('exit code 1'), {exitCode: 1}) + mockedExeca.mockRejectedValue(error) + + const result = await git.checkIfIgnoredInGitRepository(directory, files) + + expect(mockedExeca).toHaveBeenCalledWith('git', ['check-ignore', ...files], {cwd: directory}) + expect(result).toEqual([]) + }) + + test('re-throws other errors when git check-ignore fails with a non-1 exit code', async () => { + const directory = '/tmp/git-repo' + const files = ['/tmp/git-repo/file1.txt'] + const error = Object.assign(new Error('fatal error'), {exitCode: 128}) + mockedExeca.mockRejectedValue(error) + + await expect(git.checkIfIgnoredInGitRepository(directory, files)).rejects.toThrowError('fatal error') + }) +}) + describe('initializeRepository()', () => { test('calls git init and checkout in the given directory', async () => { const directory = '/tmp/git-repo'