Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #1027 by removing dangling chars #1028

Merged
merged 2 commits into from Oct 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 8 additions & 0 deletions lib/resolveGitRepo.js
Expand Up @@ -26,6 +26,11 @@ const resolveGitConfigDir = async (gitDir) => {
}

const determineGitDir = (cwd, relativeDir) => {
// if relative dir and cwd have different endings normalize it
// this happens under windows, where normalize is unable to normalize git's output
if (relativeDir && relativeDir.endsWith(path.sep)) {
relativeDir = relativeDir.slice(0, -1)
}
if (relativeDir) {
// the current working dir is inside the git top-level directory
return normalize(cwd.substring(0, cwd.lastIndexOf(relativeDir)))
Expand Down Expand Up @@ -65,3 +70,6 @@ const resolveGitRepo = async (cwd = process.cwd()) => {
}

module.exports = resolveGitRepo

// exported for test
module.exports.determineGitDir = determineGitDir
25 changes: 24 additions & 1 deletion test/resolveGitRepo.spec.js
@@ -1,7 +1,7 @@
import normalize from 'normalize-path'
import path from 'path'

import resolveGitRepo from '../lib/resolveGitRepo'
import resolveGitRepo, { determineGitDir } from '../lib/resolveGitRepo'

/**
* resolveGitRepo runs execa, so the mock needs to be disabled for these tests
Expand Down Expand Up @@ -48,4 +48,27 @@ describe('resolveGitRepo', () => {
const { gitDir } = await resolveGitRepo({ cwd: '/' }) // assume root is not a git directory
expect(gitDir).toEqual(null)
})

describe('determineGitDir', () => {
it('should resolve to current working dir when relative dir is empty', () => {
const cwd = process.cwd()
const relativeDir = undefined
const rootDir = determineGitDir(cwd, relativeDir)
expect(rootDir).toEqual(normalize(cwd))
})

it('should resolve to parent dir when relative dir is child', () => {
const relativeDir = 'bar'
const cwd = process.cwd() + path.sep + 'bar'
const rootDir = determineGitDir(cwd, relativeDir)
expect(rootDir).toEqual(normalize(process.cwd()))
})

it('should resolve to parent dir when relative dir is child and child has trailing dir separator', () => {
const relativeDir = 'bar' + path.sep
const cwd = process.cwd() + path.sep + 'bar'
const rootDir = determineGitDir(cwd, relativeDir)
expect(rootDir).toEqual(normalize(process.cwd()))
})
})
})