From defcdfc78633a963b85394227513ca06d29eb5f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iiro=20Ja=CC=88ppinen?= Date: Tue, 4 Jun 2019 14:27:21 +0300 Subject: [PATCH] refactor: generateTasks doesn't calculate gitDir itself --- src/generateTasks.js | 4 +--- src/runAll.js | 2 +- test/generateTasks.spec.js | 34 ++++++++++++++++++++++++---------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/generateTasks.js b/src/generateTasks.js index 8e60adc58..a17300f94 100644 --- a/src/generateTasks.js +++ b/src/generateTasks.js @@ -4,17 +4,15 @@ const path = require('path') const micromatch = require('micromatch') const pathIsInside = require('path-is-inside') const { getConfig } = require('./getConfig') -const resolveGitDir = require('./resolveGitDir') const debug = require('debug')('lint-staged:gen-tasks') -module.exports = async function generateTasks(config, stagedRelFiles) { +module.exports = async function generateTasks(config, gitDir, stagedRelFiles) { debug('Generating linter tasks') const normalizedConfig = getConfig(config) // Ensure we have a normalized config const { linters, globOptions, ignore } = normalizedConfig - const gitDir = await resolveGitDir() const cwd = process.cwd() const stagedFiles = stagedRelFiles.map(file => path.resolve(gitDir, file)) diff --git a/src/runAll.js b/src/runAll.js index 0e5020732..94822427c 100644 --- a/src/runAll.js +++ b/src/runAll.js @@ -34,7 +34,7 @@ module.exports = async function runAll(config) { const filenames = files.map(file => file.filename) debug('Loaded list of staged files in git:\n%O', filenames) - const tasks = (await generateTasks(config, filenames)).map(task => ({ + const tasks = (await generateTasks(config, gitDir, filenames)).map(task => ({ title: `Running tasks for ${task.pattern}`, task: async () => new Listr( diff --git a/test/generateTasks.spec.js b/test/generateTasks.spec.js index 64c3952cd..c3072c675 100644 --- a/test/generateTasks.spec.js +++ b/test/generateTasks.spec.js @@ -53,6 +53,7 @@ describe('generateTasks', () => { { '*.js': 'lint' }, + workDir, ['test.js'] ) const commands = result.map(match => match.commands) @@ -66,6 +67,7 @@ describe('generateTasks', () => { '*.js': 'lint' } }, + workDir, ['test.js'] ) const commands = result.map(match => match.commands) @@ -79,6 +81,7 @@ describe('generateTasks', () => { '*': 'lint' } }, + workDir, files ) task.fileList.forEach(file => { @@ -94,6 +97,7 @@ describe('generateTasks', () => { }, relative: true }, + workDir, files ) task.fileList.forEach(file => { @@ -103,8 +107,7 @@ describe('generateTasks', () => { it('should not match non-children files', async () => { const relPath = path.join(process.cwd(), '..') - resolveGitDir.mockResolvedValueOnce(relPath) - const result = await generateTasks({ ...config }, files) + const result = await generateTasks({ ...config }, relPath, files) const linter = result.find(item => item.pattern === '*.js') expect(linter).toEqual({ pattern: '*.js', @@ -114,7 +117,7 @@ describe('generateTasks', () => { }) it('should return an empty file list for linters with no matches.', async () => { - const result = await generateTasks(config, files) + const result = await generateTasks(config, workDir, files) result.forEach(task => { if (task.commands === 'unknown-js') { @@ -126,7 +129,7 @@ describe('generateTasks', () => { }) it('should match pattern "*.js"', async () => { - const result = await generateTasks(config, files) + const result = await generateTasks(config, workDir, files) const linter = result.find(item => item.pattern === '*.js') expect(linter).toEqual({ pattern: '*.js', @@ -142,7 +145,11 @@ describe('generateTasks', () => { }) it('should match pattern "*.js" and return relative path', async () => { - const result = await generateTasks(Object.assign({}, config, { relative: true }), files) + const result = await generateTasks( + Object.assign({}, config, { relative: true }), + workDir, + files + ) const linter = result.find(item => item.pattern === '*.js') expect(linter).toEqual({ pattern: '*.js', @@ -158,7 +165,7 @@ describe('generateTasks', () => { }) it('should match pattern "**/*.js"', async () => { - const result = await generateTasks(config, files) + const result = await generateTasks(config, workDir, files) const linter = result.find(item => item.pattern === '**/*.js') expect(linter).toEqual({ pattern: '**/*.js', @@ -174,7 +181,11 @@ describe('generateTasks', () => { }) it('should match pattern "**/*.js" with relative path', async () => { - const result = await generateTasks(Object.assign({}, config, { relative: true }), files) + const result = await generateTasks( + Object.assign({}, config, { relative: true }), + workDir, + files + ) const linter = result.find(item => item.pattern === '**/*.js') expect(linter).toEqual({ pattern: '**/*.js', @@ -190,7 +201,7 @@ describe('generateTasks', () => { }) it('should match pattern "deeper/*.js"', async () => { - const result = await generateTasks(config, files) + const result = await generateTasks(config, workDir, files) const linter = result.find(item => item.pattern === 'deeper/*.js') expect(linter).toEqual({ pattern: 'deeper/*.js', @@ -200,7 +211,7 @@ describe('generateTasks', () => { }) it('should match pattern ".hidden/*.js"', async () => { - const result = await generateTasks(config, files) + const result = await generateTasks(config, workDir, files) const linter = result.find(item => item.pattern === '.hidden/*.js') expect(linter).toEqual({ pattern: '.hidden/*.js', @@ -210,7 +221,7 @@ describe('generateTasks', () => { }) it('should match pattern "*.{css,js}"', async () => { - const result = await generateTasks(config, files) + const result = await generateTasks(config, workDir, files) const linter = result.find(item => item.pattern === '*.{css,js}') expect(linter).toEqual({ pattern: '*.{css,js}', @@ -241,6 +252,7 @@ describe('generateTasks', () => { 'TeSt.*': 'lint' } }, + workDir, files ) const linter = result.find(item => item.pattern === 'TeSt.*') @@ -261,6 +273,7 @@ describe('generateTasks', () => { ignore: ['**/ignore/**', '**/ignore.*'], linters: { [pattern]: commands } }, + workDir, ['ignore/me.js', 'ignore.me.js', 'cool/js.js'] ) expect(result[0]).toEqual({ @@ -279,6 +292,7 @@ describe('generateTasks', () => { '../outside/*.js': 'my-cmd' } }, + workDir, ['root.js', 'prj/test.js', 'outside/test.js', 'outside/test2.js'] )