From 7e5ae5b55c311b26a2457b93f4843a8c0c0a57e5 Mon Sep 17 00:00:00 2001 From: yokomotod Date: Sat, 6 Mar 2021 11:50:24 +0900 Subject: [PATCH] fix: jest --watch fails with ambiguous argument --- e2e/__tests__/jestChangedFiles.test.ts | 10 ++++++++- packages/jest-changed-files/src/git.ts | 28 +++++++++++++++++--------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/e2e/__tests__/jestChangedFiles.test.ts b/e2e/__tests__/jestChangedFiles.test.ts index 46cf856616f2..d928557d138d 100644 --- a/e2e/__tests__/jestChangedFiles.test.ts +++ b/e2e/__tests__/jestChangedFiles.test.ts @@ -44,6 +44,10 @@ function gitInit(dir: string) { run(initCommand, dir); } +function gitCreateBranch(branchName: string, dir: string) { + run(`git branch ${branchName}`, dir); +} + beforeEach(() => cleanup(DIR)); afterEach(() => cleanup(DIR)); @@ -171,9 +175,11 @@ test('gets changed files for git', async () => { gitInit(DIR); const roots = [ - '', + // same first root name with existing branch name makes pitfall that + // causes "ambiguous argument" git error. 'nested-dir', 'nested-dir/second-nested-dir', + '', ].map(filename => path.resolve(DIR, filename)); let {changedFiles: files} = await getChangedFilesForRoots(roots, {}); @@ -190,6 +196,8 @@ test('gets changed files for git', async () => { // returns files and not parts of commit messages. run(`${GIT} commit --no-gpg-sign -m "test" -m "extra-line"`, DIR); + gitCreateBranch('nested-dir', DIR); + ({changedFiles: files} = await getChangedFilesForRoots(roots, {})); expect(Array.from(files)).toEqual([]); diff --git a/packages/jest-changed-files/src/git.ts b/packages/jest-changed-files/src/git.ts index 6ea2233aa582..88d98910c373 100644 --- a/packages/jest-changed-files/src/git.ts +++ b/packages/jest-changed-files/src/git.ts @@ -44,7 +44,7 @@ const adapter: SCMAdapter = { if (options && options.lastCommit) { return findChangedFilesUsingCommand( - ['show', '--name-only', '--pretty=format:', 'HEAD'].concat( + ['show', '--name-only', '--pretty=format:', 'HEAD', '--'].concat( includePaths, ), cwd, @@ -53,19 +53,23 @@ const adapter: SCMAdapter = { if (changedSince) { const [committed, staged, unstaged] = await Promise.all([ findChangedFilesUsingCommand( - ['diff', '--name-only', `${changedSince}...HEAD`].concat( + ['diff', '--name-only', `${changedSince}...HEAD`, '--'].concat( includePaths, ), cwd, ), findChangedFilesUsingCommand( - ['diff', '--cached', '--name-only'].concat(includePaths), + ['diff', '--cached', '--name-only', '--'].concat(includePaths), cwd, ), findChangedFilesUsingCommand( - ['ls-files', '--other', '--modified', '--exclude-standard'].concat( - includePaths, - ), + [ + 'ls-files', + '--other', + '--modified', + '--exclude-standard', + '--', + ].concat(includePaths), cwd, ), ]); @@ -73,13 +77,17 @@ const adapter: SCMAdapter = { } const [staged, unstaged] = await Promise.all([ findChangedFilesUsingCommand( - ['diff', '--cached', '--name-only'].concat(includePaths), + ['diff', '--cached', '--name-only', '--'].concat(includePaths), cwd, ), findChangedFilesUsingCommand( - ['ls-files', '--other', '--modified', '--exclude-standard'].concat( - includePaths, - ), + [ + 'ls-files', + '--other', + '--modified', + '--exclude-standard', + '--', + ].concat(includePaths), cwd, ), ]);