Skip to content

Commit

Permalink
refactor: rename chunkFiles gitDir arg to baseDir, since it's used fo…
Browse files Browse the repository at this point in the history
…r resolving
  • Loading branch information
iiroj committed Apr 9, 2020
1 parent 69acfa3 commit a85c7b5
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
8 changes: 5 additions & 3 deletions lib/chunkFiles.js
Expand Up @@ -27,18 +27,20 @@ function chunkArray(arr, chunkCount) {
* Chunk files into sub-arrays based on the length of the resulting argument string
* @param {Object} opts
* @param {Array<String>} opts.files
* @param {String} opts.gitDir
* @param {String} [opts.baseDir] The optional base directory to resolve relative paths.
* @param {number} [opts.maxArgLength] the maximum argument string length
* @param {Boolean} [opts.relative] whether files are relative to `gitDir` or should be resolved as absolute
* @returns {Array<Array<String>>}
*/
module.exports = function chunkFiles({ files, gitDir, maxArgLength = null, relative = false }) {
module.exports = function chunkFiles({ files, baseDir, maxArgLength = null, relative = false }) {
if (!maxArgLength) {
debug('Skip chunking files because of undefined maxArgLength')
return [files]
}

const normalizedFiles = files.map(file => normalize(relative ? file : path.resolve(gitDir, file)))
const normalizedFiles = files.map(file =>
normalize(relative || !baseDir ? file : path.resolve(baseDir, file))
)
const fileListLength = normalizedFiles.join(' ').length
debug(
`Resolved an argument string length of ${fileListLength} characters from ${normalizedFiles.length} files`
Expand Down
2 changes: 1 addition & 1 deletion lib/runAll.js
Expand Up @@ -109,7 +109,7 @@ const runAll = async (
return logger.log(`${symbols.info} No staged files found.`)
}

const stagedFileChunks = chunkFiles({ files, gitDir, maxArgLength, relative })
const stagedFileChunks = chunkFiles({ baseDir: gitDir, files, maxArgLength, relative })
const chunkCount = stagedFileChunks.length
if (chunkCount > 1) debugLog(`Chunked staged files into ${chunkCount} part`, chunkCount)

Expand Down
10 changes: 5 additions & 5 deletions test/chunkFiles.spec.js
Expand Up @@ -2,25 +2,25 @@ import chunkFiles from '../lib/chunkFiles'

describe('chunkFiles', () => {
const files = ['example.js', 'foo.js', 'bar.js', 'foo/bar.js']
const gitDir = '/opt/git/example.git'
const baseDir = '/opt/git/example.git'

it('should default to sane value', () => {
const chunkedFiles = chunkFiles({ files: ['foo.js'], gitDir, relative: true })
const chunkedFiles = chunkFiles({ baseDir, files: ['foo.js'], relative: true })
expect(chunkedFiles).toEqual([['foo.js']])
})

it('should not chunk short argument string', () => {
const chunkedFiles = chunkFiles({ files, gitDir, maxArgLength: 1000 })
const chunkedFiles = chunkFiles({ baseDir, files, maxArgLength: 1000 })
expect(chunkedFiles).toEqual([files])
})

it('should chunk too long argument string', () => {
const chunkedFiles = chunkFiles({ files, gitDir, maxArgLength: 20 })
const chunkedFiles = chunkFiles({ baseDir, files, maxArgLength: 20 })
expect(chunkedFiles).toEqual(files.map(file => [file]))
})

it('should take into account relative setting', () => {
const chunkedFiles = chunkFiles({ files, gitDir, maxArgLength: 20, relative: true })
const chunkedFiles = chunkFiles({ baseDir, files, maxArgLength: 20, relative: true })
expect(chunkedFiles).toEqual([
[files[0], files[1]],
[files[2], files[3]]
Expand Down

0 comments on commit a85c7b5

Please sign in to comment.