diff --git a/lib/manager/bundler/artifacts.spec.ts b/lib/manager/bundler/artifacts.spec.ts index 5d0a07c27fa72e..6ad0c4b5d6566d 100644 --- a/lib/manager/bundler/artifacts.spec.ts +++ b/lib/manager/bundler/artifacts.spec.ts @@ -8,11 +8,11 @@ import { setUtilConfig } from '../../util'; import { BinarySource } from '../../util/exec/common'; import * as docker from '../../util/exec/docker'; import * as _env from '../../util/exec/env'; -import * as _fs from '../../util/fs'; +import * as _gitfs from '../../util/gitfs'; import * as _bundlerHostRules from './host-rules'; import { updateArtifacts } from '.'; -const fs: jest.Mocked = _fs as any; +const gitfs: jest.Mocked = _gitfs as any; const exec: jest.Mock = _exec as any; const env = mocked(_env); const datasource = mocked(_datasource); @@ -22,7 +22,7 @@ jest.mock('fs-extra'); jest.mock('child_process'); jest.mock('../../../lib/util/exec/env'); jest.mock('../../../lib/datasource'); -jest.mock('../../../lib/util/fs'); +jest.mock('../../../lib/util/gitfs'); jest.mock('../../../lib/util/host-rules'); jest.mock('./host-rules'); @@ -59,13 +59,13 @@ describe('bundler.updateArtifacts()', () => { ).toBeNull(); }); it('returns null if Gemfile.lock was not changed', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); const execSnapshots = mockExecAll(exec); platform.getRepoStatus.mockResolvedValueOnce({ modified: [], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', @@ -77,14 +77,14 @@ describe('bundler.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('works for default binarySource', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); - fs.readLocalFile.mockResolvedValueOnce(null); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce(null); const execSnapshots = mockExecAll(exec); platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', @@ -96,14 +96,14 @@ describe('bundler.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('works explicit global binarySource', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); - fs.readLocalFile.mockResolvedValueOnce(null); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce(null); const execSnapshots = mockExecAll(exec); platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', @@ -123,9 +123,9 @@ describe('bundler.updateArtifacts()', () => { await setUtilConfig({ ...config, binarySource: BinarySource.Docker }); }); it('.ruby-version', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); - fs.readLocalFile.mockResolvedValueOnce('1.2.0'); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce('1.2.0'); datasource.getPkgReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, @@ -137,7 +137,7 @@ describe('bundler.updateArtifacts()', () => { platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', @@ -152,8 +152,8 @@ describe('bundler.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('compatibility options', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); datasource.getPkgReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, @@ -165,7 +165,7 @@ describe('bundler.updateArtifacts()', () => { platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', @@ -185,8 +185,8 @@ describe('bundler.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('invalid compatibility options', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); datasource.getPkgReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, @@ -198,7 +198,7 @@ describe('bundler.updateArtifacts()', () => { platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', @@ -219,9 +219,9 @@ describe('bundler.updateArtifacts()', () => { }); it('injects bundler host configuration environment variables', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); - fs.readLocalFile.mockResolvedValueOnce('1.2.0'); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce('1.2.0'); datasource.getPkgReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, @@ -245,7 +245,7 @@ describe('bundler.updateArtifacts()', () => { platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', @@ -264,8 +264,8 @@ describe('bundler.updateArtifacts()', () => { const execError = new Error(); (execError as any).stdout = ' foo was resolved to'; (execError as any).stderr = ''; - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); const execSnapshots = mockExecAll(exec, execError); platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], @@ -284,13 +284,13 @@ describe('bundler.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('performs lockFileMaintenance', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); - fs.writeLocalFile.mockResolvedValueOnce(null as never); + gitfs.readLocalFile.mockResolvedValueOnce('Current Gemfile.lock'); + gitfs.writeLocalFile.mockResolvedValueOnce(null as never); const execSnapshots = mockExecAll(exec); platform.getRepoStatus.mockResolvedValueOnce({ modified: ['Gemfile.lock'], } as Git.StatusResult); - fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any); expect( await updateArtifacts({ packageFileName: 'Gemfile', diff --git a/lib/manager/bundler/artifacts.ts b/lib/manager/bundler/artifacts.ts index 661c7f119514b0..780737a0f9920e 100644 --- a/lib/manager/bundler/artifacts.ts +++ b/lib/manager/bundler/artifacts.ts @@ -10,7 +10,7 @@ import { getSiblingFileName, readLocalFile, writeLocalFile, -} from '../../util/fs'; +} from '../../util/gitfs'; import { isValid } from '../../versioning/ruby'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; import { diff --git a/lib/manager/bundler/extract.spec.ts b/lib/manager/bundler/extract.spec.ts index 1f1c86a437009c..64e1319461dcbb 100644 --- a/lib/manager/bundler/extract.spec.ts +++ b/lib/manager/bundler/extract.spec.ts @@ -1,11 +1,11 @@ import { readFileSync } from 'fs'; -import * as _fs from '../../util/fs'; +import * as _gitfs from '../../util/gitfs'; import { isValid } from '../../versioning/ruby'; import { extractPackageFile } from './extract'; -jest.mock('../../util/fs'); +jest.mock('../../util/gitfs'); -const fs: any = _fs; +const gitfs: any = _gitfs; const railsGemfile = readFileSync( 'lib/manager/bundler/__fixtures__/Gemfile.rails', @@ -74,7 +74,7 @@ describe('lib/manager/bundler/extract', () => { expect(await extractPackageFile('nothing here', 'Gemfile')).toBeNull(); }); it('parses rails Gemfile', async () => { - fs.readLocalFile.mockReturnValueOnce(railsGemfileLock); + gitfs.readLocalFile.mockReturnValueOnce(railsGemfileLock); const res = await extractPackageFile(railsGemfile, 'Gemfile'); expect(res).toMatchSnapshot(); // couple of dependency of ruby rails are not present in the lock file. Filter out those before processing @@ -98,7 +98,7 @@ describe('lib/manager/bundler/extract', () => { validateGems(sourceGroupGemfile, res); }); it('parse webpacker Gemfile', async () => { - fs.readLocalFile.mockReturnValueOnce(webPackerGemfileLock); + gitfs.readLocalFile.mockReturnValueOnce(webPackerGemfileLock); const res = await extractPackageFile(webPackerGemfile, 'Gemfile'); expect(res).toMatchSnapshot(); expect( @@ -112,7 +112,7 @@ describe('lib/manager/bundler/extract', () => { validateGems(webPackerGemfile, res); }); it('parse mastodon Gemfile', async () => { - fs.readLocalFile.mockReturnValueOnce(mastodonGemfileLock); + gitfs.readLocalFile.mockReturnValueOnce(mastodonGemfileLock); const res = await extractPackageFile(mastodonGemfile, 'Gemfile'); expect(res).toMatchSnapshot(); expect( @@ -130,7 +130,7 @@ describe('lib/manager/bundler/extract', () => { validateGems(mastodonGemfile, res); }); it('parse Ruby CI Gemfile', async () => { - fs.readLocalFile.mockReturnValueOnce(rubyCIGemfileLock); + gitfs.readLocalFile.mockReturnValueOnce(rubyCIGemfileLock); const res = await extractPackageFile(rubyCIGemfile, 'Gemfile'); expect(res).toMatchSnapshot(); expect( @@ -145,7 +145,7 @@ describe('lib/manager/bundler/extract', () => { }); }); it('parse Gitlab Foss Gemfile', async () => { - fs.readLocalFile.mockReturnValueOnce(gitlabFossGemfileLock); + gitfs.readLocalFile.mockReturnValueOnce(gitlabFossGemfileLock); const res = await extractPackageFile(gitlabFossGemfile, 'Gemfile'); expect(res).toMatchSnapshot(); expect( @@ -160,7 +160,7 @@ describe('lib/manager/bundler/extract', () => { }); it('parse source blocks with spaces in Gemfile', async () => { - fs.readLocalFile.mockReturnValueOnce(sourceBlockWithNewLinesGemfileLock); + gitfs.readLocalFile.mockReturnValueOnce(sourceBlockWithNewLinesGemfileLock); const res = await extractPackageFile( sourceBlockWithNewLinesGemfile, 'Gemfile' diff --git a/lib/manager/bundler/extract.ts b/lib/manager/bundler/extract.ts index 91096269fb3776..01ec422d9c6285 100644 --- a/lib/manager/bundler/extract.ts +++ b/lib/manager/bundler/extract.ts @@ -1,7 +1,7 @@ import * as datasourceRubygems from '../../datasource/rubygems'; import { logger } from '../../logger'; import { SkipReason } from '../../types'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile } from '../../util/gitfs'; import { regEx } from '../../util/regex'; import { PackageDependency, PackageFile } from '../common'; import { extractLockFileEntries } from './locked-version'; diff --git a/lib/manager/bundler/utils.ts b/lib/manager/bundler/utils.ts index 322f5a2af1f25b..070f9fa516c1ad 100644 --- a/lib/manager/bundler/utils.ts +++ b/lib/manager/bundler/utils.ts @@ -1,6 +1,6 @@ import { join } from 'upath'; import { logger } from '../../logger'; -import { ensureDir } from '../../util/fs'; +import { ensureDir } from '../../util/gitfs'; import { UpdateArtifactsConfig } from '../common'; export async function getGemHome( diff --git a/lib/manager/cargo/artifacts.ts b/lib/manager/cargo/artifacts.ts index c94ff14e40329a..0efbc064425caf 100644 --- a/lib/manager/cargo/artifacts.ts +++ b/lib/manager/cargo/artifacts.ts @@ -5,7 +5,7 @@ import { getSiblingFileName, readLocalFile, writeLocalFile, -} from '../../util/fs'; +} from '../../util/gitfs'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; export async function updateArtifacts({ diff --git a/lib/manager/cocoapods/artifacts.ts b/lib/manager/cocoapods/artifacts.ts index 2436c02f383e97..11028be373013b 100644 --- a/lib/manager/cocoapods/artifacts.ts +++ b/lib/manager/cocoapods/artifacts.ts @@ -7,7 +7,7 @@ import { getSiblingFileName, readLocalFile, writeLocalFile, -} from '../../util/fs'; +} from '../../util/gitfs'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; import { getCocoaPodsHome } from './utils'; diff --git a/lib/manager/cocoapods/utils.ts b/lib/manager/cocoapods/utils.ts index cf2383a9788453..c1f081e4fd3bc1 100644 --- a/lib/manager/cocoapods/utils.ts +++ b/lib/manager/cocoapods/utils.ts @@ -1,6 +1,6 @@ import { join } from 'upath'; import { logger } from '../../logger'; -import { ensureDir } from '../../util/fs'; +import { ensureDir } from '../../util/gitfs'; import { UpdateArtifactsConfig } from '../common'; export async function getCocoaPodsHome( diff --git a/lib/manager/composer/artifacts.spec.ts b/lib/manager/composer/artifacts.spec.ts index 86bf0bf0a9fed7..60033b5845c38d 100644 --- a/lib/manager/composer/artifacts.spec.ts +++ b/lib/manager/composer/artifacts.spec.ts @@ -7,17 +7,17 @@ import { setUtilConfig } from '../../util'; import { BinarySource } from '../../util/exec/common'; import * as docker from '../../util/exec/docker'; import * as _env from '../../util/exec/env'; -import * as _fs from '../../util/fs'; +import * as _gitfs from '../../util/gitfs'; import * as composer from './artifacts'; jest.mock('child_process'); jest.mock('../../util/exec/env'); -jest.mock('../../util/fs'); +jest.mock('../../util/gitfs'); jest.mock('../../util/host-rules'); const hostRules = require('../../util/host-rules'); -const fs: jest.Mocked = _fs as any; +const gitfs: jest.Mocked = _gitfs as any; const exec: jest.Mock = _exec as any; const env = mocked(_env); @@ -48,9 +48,9 @@ describe('.updateArtifacts()', () => { ).toBeNull(); }); it('returns null if unchanged', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); const execSnapshots = mockExecAll(exec); - fs.readLocalFile.mockReturnValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockReturnValueOnce('Current composer.lock' as any); platform.getRepoStatus.mockResolvedValue({ modified: [] } as StatusResult); expect( await composer.updateArtifacts({ @@ -63,9 +63,9 @@ describe('.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('uses hostRules to write auth.json', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); const execSnapshots = mockExecAll(exec); - fs.readLocalFile.mockReturnValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockReturnValueOnce('Current composer.lock' as any); const authConfig = { ...config, registryUrls: ['https://packagist.renovatebot.com'], @@ -86,9 +86,9 @@ describe('.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('returns updated composer.lock', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); const execSnapshots = mockExecAll(exec); - fs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); + gitfs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); platform.getRepoStatus.mockResolvedValue({ modified: ['composer.lock'], } as StatusResult); @@ -103,9 +103,9 @@ describe('.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('performs lockFileMaintenance', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); const execSnapshots = mockExecAll(exec); - fs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); + gitfs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); platform.getRepoStatus.mockResolvedValue({ modified: ['composer.lock'], } as StatusResult); @@ -125,11 +125,11 @@ describe('.updateArtifacts()', () => { it('supports docker mode', async () => { jest.spyOn(docker, 'removeDanglingContainers').mockResolvedValueOnce(); await setUtilConfig({ ...config, binarySource: BinarySource.Docker }); - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); const execSnapshots = mockExecAll(exec); - fs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); + gitfs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); expect( await composer.updateArtifacts({ packageFileName: 'composer.json', @@ -141,9 +141,9 @@ describe('.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('supports global mode', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); const execSnapshots = mockExecAll(exec); - fs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); + gitfs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); expect( await composer.updateArtifacts({ packageFileName: 'composer.json', @@ -158,8 +158,8 @@ describe('.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); it('catches errors', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); - fs.writeLocalFile.mockImplementationOnce(() => { + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.writeLocalFile.mockImplementationOnce(() => { throw new Error('not found'); }); expect( @@ -172,8 +172,8 @@ describe('.updateArtifacts()', () => { ).toMatchSnapshot(); }); it('catches unmet requirements errors', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); - fs.writeLocalFile.mockImplementationOnce(() => { + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.writeLocalFile.mockImplementationOnce(() => { throw new Error( 'fooYour requirements could not be resolved to an installable set of packages.bar' ); @@ -188,8 +188,8 @@ describe('.updateArtifacts()', () => { ).toMatchSnapshot(); }); it('throws for disk space', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); - fs.writeLocalFile.mockImplementationOnce(() => { + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.writeLocalFile.mockImplementationOnce(() => { throw new Error( 'vendor/composer/07fe2366/sebastianbergmann-php-code-coverage-c896779/src/Report/Html/Renderer/Template/js/d3.min.js: write error (disk full?). Continue? (y/n/^C) ' ); @@ -204,9 +204,9 @@ describe('.updateArtifacts()', () => { ).rejects.toThrow(); }); it('disables ignorePlatformReqs', async () => { - fs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); + gitfs.readLocalFile.mockResolvedValueOnce('Current composer.lock' as any); const execSnapshots = mockExecAll(exec); - fs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); + gitfs.readLocalFile.mockReturnValueOnce('New composer.lock' as any); platform.getRepoStatus.mockResolvedValue({ modified: ['composer.lock'], } as StatusResult); diff --git a/lib/manager/composer/artifacts.ts b/lib/manager/composer/artifacts.ts index 1b1ad2286f9636..557e51f63db124 100644 --- a/lib/manager/composer/artifacts.ts +++ b/lib/manager/composer/artifacts.ts @@ -18,7 +18,7 @@ import { getSiblingFileName, readLocalFile, writeLocalFile, -} from '../../util/fs'; +} from '../../util/gitfs'; import * as hostRules from '../../util/host-rules'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; diff --git a/lib/manager/composer/extract.spec.ts b/lib/manager/composer/extract.spec.ts index 52565c2bc90e7b..701aede97679a4 100644 --- a/lib/manager/composer/extract.spec.ts +++ b/lib/manager/composer/extract.spec.ts @@ -1,10 +1,10 @@ import { readFileSync } from 'fs'; -import * as _fs from '../../util/fs'; +import * as _gitfs from '../../util/gitfs'; import { extractPackageFile } from './extract'; -jest.mock('../../util/fs'); +jest.mock('../../util/gitfs'); -const fs: any = _fs; +const gitfs: any = _gitfs; const requirements1 = readFileSync( 'lib/manager/composer/__fixtures__/composer1.json', @@ -63,13 +63,13 @@ describe('lib/manager/composer/extract', () => { expect(res.registryUrls).toHaveLength(2); }); it('extracts object repositories and registryUrls with lock file', async () => { - fs.readLocalFile.mockResolvedValue(requirements5Lock); + gitfs.readLocalFile.mockResolvedValue(requirements5Lock); const res = await extractPackageFile(requirements5, packageFile); expect(res).toMatchSnapshot(); expect(res.registryUrls).toHaveLength(2); }); it('extracts dependencies with lock file', async () => { - fs.readLocalFile.mockResolvedValue('some content'); + gitfs.readLocalFile.mockResolvedValue('some content'); const res = await extractPackageFile(requirements1, packageFile); expect(res).toMatchSnapshot(); }); diff --git a/lib/manager/composer/extract.ts b/lib/manager/composer/extract.ts index 1a53277532d68d..fbe806e7953b2e 100644 --- a/lib/manager/composer/extract.ts +++ b/lib/manager/composer/extract.ts @@ -3,7 +3,7 @@ import * as datasourceGitTags from '../../datasource/git-tags'; import * as datasourcePackagist from '../../datasource/packagist'; import { logger } from '../../logger'; import { SkipReason } from '../../types'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile } from '../../util/gitfs'; import { api as semverComposer } from '../../versioning/composer'; import { PackageDependency, PackageFile } from '../common'; diff --git a/lib/manager/gomod/artifacts.ts b/lib/manager/gomod/artifacts.ts index 48f219aba92abf..24c37169233809 100644 --- a/lib/manager/gomod/artifacts.ts +++ b/lib/manager/gomod/artifacts.ts @@ -6,7 +6,7 @@ import { logger } from '../../logger'; import { platform } from '../../platform'; import { ExecOptions, exec } from '../../util/exec'; import { BinarySource } from '../../util/exec/common'; -import { readLocalFile, writeLocalFile } from '../../util/fs'; +import { readLocalFile, writeLocalFile } from '../../util/gitfs'; import { find } from '../../util/host-rules'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts index d343734a36e4ce..1cbcef6df54469 100644 --- a/lib/manager/gradle-wrapper/artifacts.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts.spec.ts @@ -8,8 +8,8 @@ import * as httpMock from '../../../test/httpMock'; import { addReplacingSerializer, env, - fs, getName, + gitfs, partial, platform, } from '../../../test/util'; @@ -19,7 +19,7 @@ import { resetPrefetchedImages } from '../../util/exec/docker'; import * as dcUpdate from '.'; jest.mock('child_process'); -jest.mock('../../util/fs'); +jest.mock('../../util/gitfs'); jest.mock('../../util/exec/env'); const exec: jest.Mock = _exec as any; @@ -51,7 +51,7 @@ describe(getName(__filename), () => { await setUtilConfig(config); resetPrefetchedImages(); - fs.readLocalFile.mockResolvedValue('test'); + gitfs.readLocalFile.mockResolvedValue('test'); }); afterEach(() => { diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts index dc020ce7e44a69..f20fb0d6414bb1 100644 --- a/lib/manager/gradle-wrapper/artifacts.ts +++ b/lib/manager/gradle-wrapper/artifacts.ts @@ -4,7 +4,7 @@ import Git from 'simple-git/promise'; import { logger } from '../../logger'; import { platform } from '../../platform'; import { ExecOptions, exec } from '../../util/exec'; -import { readLocalFile, writeLocalFile } from '../../util/fs'; +import { readLocalFile, writeLocalFile } from '../../util/gitfs'; import { Http } from '../../util/http'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; import { gradleWrapperFileName, prepareGradleCommand } from '../gradle/index'; diff --git a/lib/manager/gradle/index.spec.ts b/lib/manager/gradle/index.spec.ts index 5d9e8635926063..8108888d7c8b73 100644 --- a/lib/manager/gradle/index.spec.ts +++ b/lib/manager/gradle/index.spec.ts @@ -9,7 +9,7 @@ import * as _util from '../../util'; import { BinarySource } from '../../util/exec/common'; import * as _docker from '../../util/exec/docker'; import * as _env from '../../util/exec/env'; -import * as _utilfs from '../../util/fs'; +import * as _utilfs from '../../util/gitfs'; import { ExtractConfig } from '../common'; import { ifSystemSupportsGradle } from './__testutil__/gradle'; import { GRADLE_DEPENDENCY_REPORT_FILENAME } from './gradle-updates-report'; @@ -44,16 +44,16 @@ async function setupMocks() { jest.mock('child_process'); jest.mock('../../util/exec/env'); - jest.mock('../../util/fs'); + jest.mock('../../util/gitfs'); jest.mock('os'); const os: jest.Mocked = require('os'); - const utilfs: jest.Mocked = require('../../util/fs'); + const gitfs: jest.Mocked = require('../../util/gitfs'); const env: jest.Mocked = require('../../util/exec/env'); const exec: jest.Mock = require('child_process').exec; const util: jest.Mocked = require('../../util'); - utilfs.readLocalFile.mockResolvedValue(` + gitfs.readLocalFile.mockResolvedValue(` dependency 'foo:foo:1.2.3' dependency "bar:bar:3.4.5" `); diff --git a/lib/manager/gradle/index.ts b/lib/manager/gradle/index.ts index 2af2a8e97e5492..06613990dd52eb 100644 --- a/lib/manager/gradle/index.ts +++ b/lib/manager/gradle/index.ts @@ -8,7 +8,7 @@ import { logger } from '../../logger'; import { ExternalHostError } from '../../types/errors/external-host-error'; import { ExecOptions, exec } from '../../util/exec'; import { BinarySource } from '../../util/exec/common'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile } from '../../util/gitfs'; import * as gradleVersioning from '../../versioning/gradle'; import { ExtractConfig, diff --git a/lib/manager/helm-requirements/extract.spec.ts b/lib/manager/helm-requirements/extract.spec.ts index 893c4583f22913..f73bc6be7f170d 100644 --- a/lib/manager/helm-requirements/extract.spec.ts +++ b/lib/manager/helm-requirements/extract.spec.ts @@ -1,16 +1,18 @@ -import * as _fs from '../../util/fs'; +import * as _gitfs from '../../util/gitfs'; import { extractPackageFile } from './extract'; -const fs: any = _fs; +jest.mock('../../util/gitfs'); + +const gitfs: any = _gitfs; describe('lib/manager/helm-requirements/extract', () => { describe('extractPackageFile()', () => { beforeEach(() => { jest.resetAllMocks(); - fs.readLocalFile = jest.fn(); + gitfs.readLocalFile = jest.fn(); }); it('skips invalid registry urls', async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes @@ -39,7 +41,7 @@ describe('lib/manager/helm-requirements/extract', () => { expect(result.deps.every((dep) => dep.skipReason)).toEqual(true); }); it('parses simple requirements.yaml correctly', async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes @@ -65,7 +67,7 @@ describe('lib/manager/helm-requirements/extract', () => { expect(result).toMatchSnapshot(); }); it('parses simple requirements.yaml but skips if necessary fields missing', async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes @@ -80,7 +82,7 @@ describe('lib/manager/helm-requirements/extract', () => { expect(result).toBeNull(); }); it('resolves aliased registry urls', async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes @@ -104,7 +106,7 @@ describe('lib/manager/helm-requirements/extract', () => { expect(result.deps.every((dep) => dep.skipReason)).toEqual(false); }); it("doesn't fail if Chart.yaml is invalid", async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` Invalid Chart.yaml content. arr: [ @@ -127,7 +129,7 @@ describe('lib/manager/helm-requirements/extract', () => { expect(result).toBeNull(); }); it('skips local dependencies', async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes @@ -153,7 +155,7 @@ describe('lib/manager/helm-requirements/extract', () => { expect(result).toMatchSnapshot(); }); it('returns null if no dependencies', async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes @@ -172,7 +174,7 @@ describe('lib/manager/helm-requirements/extract', () => { expect(result).toBeNull(); }); it('returns null if requirements.yaml is invalid', async () => { - fs.readLocalFile.mockResolvedValueOnce(` + gitfs.readLocalFile.mockResolvedValueOnce(` apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes diff --git a/lib/manager/helm-requirements/extract.ts b/lib/manager/helm-requirements/extract.ts index ad3b0472a5668e..7f9105e7c28631 100644 --- a/lib/manager/helm-requirements/extract.ts +++ b/lib/manager/helm-requirements/extract.ts @@ -3,7 +3,7 @@ import yaml from 'js-yaml'; import * as datasourceHelm from '../../datasource/helm'; import { logger } from '../../logger'; import { SkipReason } from '../../types'; -import { getSiblingFileName, readLocalFile } from '../../util/fs'; +import { getSiblingFileName, readLocalFile } from '../../util/gitfs'; import { ExtractConfig, PackageDependency, PackageFile } from '../common'; export async function extractPackageFile( diff --git a/lib/manager/maven/extract.ts b/lib/manager/maven/extract.ts index f10dda62103308..948ae5022f5175 100644 --- a/lib/manager/maven/extract.ts +++ b/lib/manager/maven/extract.ts @@ -5,7 +5,7 @@ import * as datasourceMaven from '../../datasource/maven'; import { MAVEN_REPO } from '../../datasource/maven/common'; import { logger } from '../../logger'; import { SkipReason } from '../../types'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile } from '../../util/gitfs'; import { ExtractConfig, PackageDependency, PackageFile } from '../common'; export function parsePom(raw: string): XmlDocument | null { diff --git a/lib/manager/maven/index.spec.ts b/lib/manager/maven/index.spec.ts index 6fcaf469b88d84..2f0487dfab5abb 100644 --- a/lib/manager/maven/index.spec.ts +++ b/lib/manager/maven/index.spec.ts @@ -1,12 +1,12 @@ import { readFileSync } from 'fs'; -import * as _fs from '../../util/fs'; +import * as _gitfs from '../../util/gitfs'; import { PackageDependency, PackageFile } from '../common'; import { extractPackage, resolveParents } from './extract'; import { extractAllPackageFiles, updateDependency } from './index'; -jest.mock('../../util/fs'); +jest.mock('../../util/gitfs'); -const fs: any = _fs; +const gitfs: any = _gitfs; const pomContent = readFileSync( 'lib/manager/maven/__fixtures__/simple.pom.xml', @@ -32,19 +32,19 @@ function selectDep(deps: PackageDependency[], name = 'org.example:quuz') { describe('manager/maven', () => { describe('extractAllPackageFiles', () => { it('should return empty if package has no content', async () => { - fs.readLocalFile.mockReturnValueOnce(null); + gitfs.readLocalFile.mockReturnValueOnce(null); const res = await extractAllPackageFiles({}, ['random.pom.xml']); expect(res).toEqual([]); }); it('should return empty for packages with invalid content', async () => { - fs.readLocalFile.mockReturnValueOnce('invalid content'); + gitfs.readLocalFile.mockReturnValueOnce('invalid content'); const res = await extractAllPackageFiles({}, ['random.pom.xml']); expect(res).toEqual([]); }); it('should return package files info', async () => { - fs.readLocalFile.mockReturnValueOnce(pomContent); + gitfs.readLocalFile.mockReturnValueOnce(pomContent); const packages = await extractAllPackageFiles({}, ['random.pom.xml']); // windows path fix for (const p of packages) { @@ -99,7 +99,7 @@ describe('manager/maven', () => { }); it('should include registryUrls from parent pom files', async () => { - fs.readLocalFile + gitfs.readLocalFile .mockReturnValueOnce(pomParent) .mockReturnValueOnce(pomChild); const packages = await extractAllPackageFiles({}, [ @@ -134,7 +134,7 @@ describe('manager/maven', () => { }); it('should update to version of the latest dep in implicit group', async () => { - fs.readLocalFile.mockReturnValueOnce(origContent); + gitfs.readLocalFile.mockReturnValueOnce(origContent); const [{ deps }] = await extractAllPackageFiles({}, ['pom.xml']); const dep1 = selectDep(deps, 'org.example:foo-1'); @@ -179,7 +179,7 @@ describe('manager/maven', () => { }); it('should return null for ungrouped deps if content was updated outside', async () => { - fs.readLocalFile.mockReturnValueOnce(origContent); + gitfs.readLocalFile.mockReturnValueOnce(origContent); const [{ deps }] = await extractAllPackageFiles({}, ['pom.xml']); const dep = selectDep(deps, 'org.example:bar'); const upgrade = { ...dep, newValue: '2.0.2' }; diff --git a/lib/manager/mix/artifacts.ts b/lib/manager/mix/artifacts.ts index c037f01da1896f..cb5972c91b3d24 100644 --- a/lib/manager/mix/artifacts.ts +++ b/lib/manager/mix/artifacts.ts @@ -4,7 +4,7 @@ import upath from 'upath'; import { logger } from '../../logger'; import { exec } from '../../util/exec'; import { BinarySource } from '../../util/exec/common'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile } from '../../util/gitfs'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; export async function updateArtifacts({ diff --git a/lib/manager/npm/extract/index.spec.ts b/lib/manager/npm/extract/index.spec.ts index 1afa441d944716..7cb181416ea5a1 100644 --- a/lib/manager/npm/extract/index.spec.ts +++ b/lib/manager/npm/extract/index.spec.ts @@ -1,10 +1,10 @@ import fs from 'fs'; import path from 'path'; import { getConfig } from '../../../config/defaults'; -import * as _fs from '../../../util/fs'; +import * as _gitfs from '../../../util/gitfs/fs'; import * as npmExtract from '.'; -const utilfs: any = _fs; +const gitfs: any = _gitfs; // TODO: fix types const defaultConfig = getConfig(); @@ -25,7 +25,7 @@ const invalidNameContent = readFixture('invalid-name.json'); describe('manager/npm/extract', () => { describe('.extractPackageFile()', () => { beforeEach(() => { - utilfs.readLocalFile = jest.fn(() => null); + gitfs.readLocalFile = jest.fn(() => null); }); it('returns null if cannot parse', async () => { const res = await npmExtract.extractPackageFile( @@ -85,7 +85,7 @@ describe('manager/npm/extract', () => { expect(res).toMatchSnapshot(); }); it('finds a lock file', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === 'yarn.lock') { return '# yarn.lock'; } @@ -99,7 +99,7 @@ describe('manager/npm/extract', () => { expect(res).toMatchSnapshot(); }); it('finds and filters .npmrc', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === '.npmrc') { return 'save-exact = true\npackage-lock = false\n'; } @@ -113,7 +113,7 @@ describe('manager/npm/extract', () => { expect(res.npmrc).toBeDefined(); }); it('finds and discards .npmrc', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === '.npmrc') { // eslint-disable-next-line return '//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}\n'; @@ -128,7 +128,7 @@ describe('manager/npm/extract', () => { expect(res.npmrc).toBeUndefined(); }); it('finds lerna', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === 'lerna.json') { return '{}'; } @@ -142,7 +142,7 @@ describe('manager/npm/extract', () => { expect(res).toMatchSnapshot(); }); it('finds "npmClient":"npm" in lerna.json', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === 'lerna.json') { return '{ "npmClient": "npm" }'; } @@ -156,7 +156,7 @@ describe('manager/npm/extract', () => { expect(res).toMatchSnapshot(); }); it('finds "npmClient":"yarn" in lerna.json', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === 'lerna.json') { return '{ "npmClient": "yarn" }'; } @@ -170,7 +170,7 @@ describe('manager/npm/extract', () => { expect(res).toMatchSnapshot(); }); it('finds simple yarn workspaces', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === 'lerna.json') { return '{}'; } @@ -184,7 +184,7 @@ describe('manager/npm/extract', () => { expect(res).toMatchSnapshot(); }); it('finds complex yarn workspaces', async () => { - utilfs.readLocalFile = jest.fn((fileName) => { + gitfs.readLocalFile = jest.fn((fileName) => { if (fileName === 'lerna.json') { return '{}'; } diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts index 514fc773482a70..5142e8c5c35b8e 100644 --- a/lib/manager/npm/extract/index.ts +++ b/lib/manager/npm/extract/index.ts @@ -10,7 +10,7 @@ import { deleteLocalFile, getSiblingFileName, readLocalFile, -} from '../../../util/fs'; +} from '../../../util/gitfs'; import * as nodeVersioning from '../../../versioning/node'; import { isValid, isVersion } from '../../../versioning/npm'; import { diff --git a/lib/manager/npm/extract/npm.spec.ts b/lib/manager/npm/extract/npm.spec.ts index 69bd2345b1d70a..61e399f5e3634e 100644 --- a/lib/manager/npm/extract/npm.spec.ts +++ b/lib/manager/npm/extract/npm.spec.ts @@ -1,15 +1,15 @@ import { readFileSync } from 'fs'; -import * as _fs from '../../../util/fs'; +import * as _gitfs from '../../../util/gitfs'; import { getNpmLock } from './npm'; -jest.mock('../../../util/fs'); +jest.mock('../../../util/gitfs'); -const fs: any = _fs; +const gitfs: any = _gitfs; describe('manager/npm/extract/npm', () => { describe('.getNpmLock()', () => { it('returns empty if failed to parse', async () => { - fs.readLocalFile.mockReturnValueOnce('abcd'); + gitfs.readLocalFile.mockReturnValueOnce('abcd'); const res = await getNpmLock('package.json'); expect(Object.keys(res)).toHaveLength(0); }); @@ -17,13 +17,13 @@ describe('manager/npm/extract/npm', () => { const plocktest1Lock = readFileSync( 'lib/manager/npm/__fixtures__/plocktest1/package-lock.json' ); - fs.readLocalFile.mockReturnValueOnce(plocktest1Lock); + gitfs.readLocalFile.mockReturnValueOnce(plocktest1Lock); const res = await getNpmLock('package.json'); expect(res).toMatchSnapshot(); expect(Object.keys(res)).toHaveLength(7); }); it('returns empty if no deps', async () => { - fs.readLocalFile.mockResolvedValueOnce('{}'); + gitfs.readLocalFile.mockResolvedValueOnce('{}'); const res = await getNpmLock('package.json'); expect(Object.keys(res)).toHaveLength(0); }); diff --git a/lib/manager/npm/extract/npm.ts b/lib/manager/npm/extract/npm.ts index bfabceffa2c0ee..99da47163c96fd 100644 --- a/lib/manager/npm/extract/npm.ts +++ b/lib/manager/npm/extract/npm.ts @@ -1,5 +1,5 @@ import { logger } from '../../../logger'; -import { readLocalFile } from '../../../util/fs'; +import { readLocalFile } from '../../../util/gitfs'; import { LockFileEntry } from './common'; export async function getNpmLock( diff --git a/lib/manager/npm/extract/yarn.spec.ts b/lib/manager/npm/extract/yarn.spec.ts index 05ed6faba5ff33..850e8e26b6d3c8 100644 --- a/lib/manager/npm/extract/yarn.spec.ts +++ b/lib/manager/npm/extract/yarn.spec.ts @@ -1,15 +1,15 @@ import { readFileSync } from 'fs'; -import * as _fs from '../../../util/fs'; +import * as _gitfs from '../../../util/gitfs'; import { getYarnLock } from './yarn'; -jest.mock('../../../util/fs'); +jest.mock('../../../util/gitfs'); -const fs: any = _fs; +const gitfs: any = _gitfs; describe('manager/npm/extract/yarn', () => { describe('.getYarnLock()', () => { it('returns empty if exception parsing', async () => { - fs.readLocalFile.mockReturnValueOnce('abcd'); + gitfs.readLocalFile.mockReturnValueOnce('abcd'); const res = await getYarnLock('package.json'); expect(Object.keys(res)).toHaveLength(0); }); @@ -18,7 +18,7 @@ describe('manager/npm/extract/yarn', () => { 'lib/manager/npm/__fixtures__/plocktest1/yarn.lock', 'utf8' ); - fs.readLocalFile.mockReturnValueOnce(plocktest1Lock); + gitfs.readLocalFile.mockReturnValueOnce(plocktest1Lock); const res = await getYarnLock('package.json'); expect(res).toMatchSnapshot(); expect(Object.keys(res)).toHaveLength(7); diff --git a/lib/manager/npm/extract/yarn.ts b/lib/manager/npm/extract/yarn.ts index 5af375e6c21906..b40f8636efea86 100644 --- a/lib/manager/npm/extract/yarn.ts +++ b/lib/manager/npm/extract/yarn.ts @@ -1,6 +1,6 @@ import { parse } from '@yarnpkg/lockfile'; import { logger } from '../../../logger'; -import { readLocalFile } from '../../../util/fs'; +import { readLocalFile } from '../../../util/gitfs'; import { LockFileEntry } from './common'; export type YarnLock = Record; diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts index f380fb289096ca..86e542d8b55f97 100644 --- a/lib/manager/npm/post-update/index.ts +++ b/lib/manager/npm/post-update/index.ts @@ -8,7 +8,7 @@ import { logger } from '../../../logger'; import { platform } from '../../../platform'; import { ExternalHostError } from '../../../types/errors/external-host-error'; import { getChildProcessEnv } from '../../../util/exec/env'; -import { deleteLocalFile } from '../../../util/fs'; +import { deleteLocalFile } from '../../../util/gitfs'; import * as hostRules from '../../../util/host-rules'; import { PackageFile, PostUpdateConfig, Upgrade } from '../../common'; import * as lerna from './lerna'; diff --git a/lib/manager/npm/post-update/node-version.spec.ts b/lib/manager/npm/post-update/node-version.spec.ts index e529d1d3236f69..fb3d4c9e148632 100644 --- a/lib/manager/npm/post-update/node-version.spec.ts +++ b/lib/manager/npm/post-update/node-version.spec.ts @@ -1,8 +1,10 @@ import { mocked } from '../../../../test/util'; -import * as fs_ from '../../../util/fs'; +import * as _gitfs from '../../../util/gitfs'; import { getNodeConstraint } from './node-version'; -const fs = mocked(fs_); +jest.mock('../../../util/gitfs'); + +const gitfs = mocked(_gitfs); describe('getNodeConstraint', () => { const config = { @@ -10,36 +12,36 @@ describe('getNodeConstraint', () => { compatibility: { node: '^12.16.0' }, }; it('returns package.json range', async () => { - fs.readLocalFile = jest.fn(); - fs.readLocalFile.mockResolvedValueOnce(null); - fs.readLocalFile.mockResolvedValueOnce(null); + gitfs.readLocalFile = jest.fn(); + gitfs.readLocalFile.mockResolvedValueOnce(null); + gitfs.readLocalFile.mockResolvedValueOnce(null); const res = await getNodeConstraint(config); expect(res).toEqual('^12.16.0'); }); it('returns .node-version value', async () => { - fs.readLocalFile = jest.fn(); - fs.readLocalFile.mockResolvedValueOnce(null); - fs.readLocalFile.mockResolvedValueOnce('12.16.1\n'); + gitfs.readLocalFile = jest.fn(); + gitfs.readLocalFile.mockResolvedValueOnce(null); + gitfs.readLocalFile.mockResolvedValueOnce('12.16.1\n'); const res = await getNodeConstraint(config); expect(res).toEqual('12.16.1'); }); it('returns .nvmrc value', async () => { - fs.readLocalFile = jest.fn(); - fs.readLocalFile.mockResolvedValueOnce('12.16.2\n'); + gitfs.readLocalFile = jest.fn(); + gitfs.readLocalFile.mockResolvedValueOnce('12.16.2\n'); const res = await getNodeConstraint(config); expect(res).toEqual('12.16.2'); }); it('ignores unusable ranges in dotfiles', async () => { - fs.readLocalFile = jest.fn(); - fs.readLocalFile.mockResolvedValueOnce('latest'); - fs.readLocalFile.mockResolvedValueOnce('lts'); + gitfs.readLocalFile = jest.fn(); + gitfs.readLocalFile.mockResolvedValueOnce('latest'); + gitfs.readLocalFile.mockResolvedValueOnce('lts'); const res = await getNodeConstraint(config); expect(res).toEqual('^12.16.0'); }); it('returns no constraint', async () => { - fs.readLocalFile = jest.fn(); - fs.readLocalFile.mockResolvedValueOnce(null); - fs.readLocalFile.mockResolvedValueOnce(null); + gitfs.readLocalFile = jest.fn(); + gitfs.readLocalFile.mockResolvedValueOnce(null); + gitfs.readLocalFile.mockResolvedValueOnce(null); const res = await getNodeConstraint({ ...config, compatibility: null }); expect(res).toBeNull(); }); diff --git a/lib/manager/npm/post-update/node-version.ts b/lib/manager/npm/post-update/node-version.ts index b929499b63137e..aa0be56fbf3759 100644 --- a/lib/manager/npm/post-update/node-version.ts +++ b/lib/manager/npm/post-update/node-version.ts @@ -1,6 +1,6 @@ import { validRange } from 'semver'; import { logger } from '../../../logger'; -import { getSiblingFileName, readLocalFile } from '../../../util/fs'; +import { getSiblingFileName, readLocalFile } from '../../../util/gitfs'; import { PostUpdateConfig } from '../../common'; async function getNodeFile(filename: string): Promise | null { diff --git a/lib/manager/pip_requirements/artifacts.ts b/lib/manager/pip_requirements/artifacts.ts index 98a3bfeb82bce8..f0f175a6222378 100644 --- a/lib/manager/pip_requirements/artifacts.ts +++ b/lib/manager/pip_requirements/artifacts.ts @@ -1,7 +1,7 @@ import is from '@sindresorhus/is'; import { logger } from '../../logger'; import { ExecOptions, exec } from '../../util/exec'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile } from '../../util/gitfs'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; export async function updateArtifacts({ diff --git a/lib/manager/pipenv/artifacts.ts b/lib/manager/pipenv/artifacts.ts index 9e33a4dd91b4d7..a82a43471132f2 100644 --- a/lib/manager/pipenv/artifacts.ts +++ b/lib/manager/pipenv/artifacts.ts @@ -3,7 +3,7 @@ import { join } from 'upath'; import { logger } from '../../logger'; import { platform } from '../../platform'; import { ExecOptions, exec } from '../../util/exec'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile } from '../../util/gitfs'; import { UpdateArtifact, UpdateArtifactsConfig, diff --git a/lib/manager/poetry/artifacts.ts b/lib/manager/poetry/artifacts.ts index 9c6c87c508a9e0..0da8632431b770 100644 --- a/lib/manager/poetry/artifacts.ts +++ b/lib/manager/poetry/artifacts.ts @@ -8,7 +8,7 @@ import { getSiblingFileName, readLocalFile, writeLocalFile, -} from '../../util/fs'; +} from '../../util/gitfs'; import { UpdateArtifact, UpdateArtifactsConfig, diff --git a/lib/util/fs.spec.ts b/lib/util/gitfs/fs.spec.ts similarity index 92% rename from lib/util/fs.spec.ts rename to lib/util/gitfs/fs.spec.ts index 10199a460d821c..bcbf606cf5f9be 100644 --- a/lib/util/fs.spec.ts +++ b/lib/util/gitfs/fs.spec.ts @@ -1,4 +1,4 @@ -import { getName } from '../../test/util'; +import { getName } from '../../../test/util'; import { readLocalFile } from './fs'; describe(getName(__filename), () => { diff --git a/lib/util/fs.ts b/lib/util/gitfs/fs.ts similarity index 94% rename from lib/util/fs.ts rename to lib/util/gitfs/fs.ts index d94bb19c37386a..b94d2c2364106a 100644 --- a/lib/util/fs.ts +++ b/lib/util/gitfs/fs.ts @@ -1,7 +1,7 @@ import * as fs from 'fs-extra'; import { join, parse } from 'upath'; -import { RenovateConfig } from '../config/common'; -import { logger } from '../logger'; +import { RenovateConfig } from '../../config/common'; +import { logger } from '../../logger'; let localDir = ''; diff --git a/lib/util/gitfs/index.ts b/lib/util/gitfs/index.ts new file mode 100644 index 00000000000000..c6a897d250b7ed --- /dev/null +++ b/lib/util/gitfs/index.ts @@ -0,0 +1 @@ +export * from './fs'; diff --git a/lib/util/index.ts b/lib/util/index.ts index 58b1c8631c6788..c72f151a0a852b 100644 --- a/lib/util/index.ts +++ b/lib/util/index.ts @@ -2,7 +2,7 @@ import findUp from 'find-up'; import { join } from 'upath'; import { RenovateConfig } from '../config/common'; import { setExecConfig } from './exec'; -import { setFsConfig } from './fs'; +import { setFsConfig } from './gitfs'; export async function setUtilConfig( config: Partial diff --git a/lib/workers/branch/auto-replace.spec.ts b/lib/workers/branch/auto-replace.spec.ts index 3ab53b7745e040..f0a297b0242eca 100644 --- a/lib/workers/branch/auto-replace.spec.ts +++ b/lib/workers/branch/auto-replace.spec.ts @@ -10,7 +10,7 @@ const sampleHtml = readFileSync( 'utf8' ); -jest.mock('../../util/fs'); +jest.mock('../../util/gitfs'); describe('workers/branch/auto-replace', () => { describe('doAutoReplace', () => { diff --git a/lib/workers/branch/auto-replace.ts b/lib/workers/branch/auto-replace.ts index 0cd88d02e3912b..6d17fa28e45e77 100644 --- a/lib/workers/branch/auto-replace.ts +++ b/lib/workers/branch/auto-replace.ts @@ -2,7 +2,7 @@ import { WORKER_FILE_UPDATE_FAILED } from '../../constants/error-messages'; import { logger } from '../../logger'; import { get } from '../../manager'; import { PackageDependency } from '../../manager/common'; -import { writeLocalFile } from '../../util/fs'; +import { writeLocalFile } from '../../util/gitfs'; import { escapeRegExp, regEx } from '../../util/regex'; import { matchAt, replaceAt } from '../../util/string'; import { compile } from '../../util/template'; diff --git a/lib/workers/branch/index.ts b/lib/workers/branch/index.ts index ce865f3cc70c46..f5f4521e180abc 100644 --- a/lib/workers/branch/index.ts +++ b/lib/workers/branch/index.ts @@ -24,7 +24,7 @@ import { BranchStatus } from '../../types'; import { ExternalHostError } from '../../types/errors/external-host-error'; import { emojify } from '../../util/emoji'; import { exec } from '../../util/exec'; -import { readLocalFile, writeLocalFile } from '../../util/fs'; +import { readLocalFile, writeLocalFile } from '../../util/gitfs'; import { regEx } from '../../util/regex'; import { BranchConfig, PrResult, ProcessBranchResult } from '../common'; import { checkAutoMerge, ensurePr } from '../pr'; diff --git a/lib/workers/repository/extract/manager-files.spec.ts b/lib/workers/repository/extract/manager-files.spec.ts index 482547ae7f6d17..f68fddc3e591ec 100644 --- a/lib/workers/repository/extract/manager-files.spec.ts +++ b/lib/workers/repository/extract/manager-files.spec.ts @@ -1,15 +1,15 @@ import { getConfig, mocked } from '../../../../test/util'; import { RenovateConfig } from '../../../config'; import * as _html from '../../../manager/html'; -import * as _fs from '../../../util/fs'; +import * as _gitfs from '../../../util/gitfs'; import * as _fileMatch from './file-match'; import { getManagerPackageFiles } from './manager-files'; jest.mock('./file-match'); jest.mock('../../../manager/html'); -jest.mock('../../../util/fs'); +jest.mock('../../../util/gitfs'); -const fs: any = _fs; +const gitfs: any = _gitfs; const fileMatch = mocked(_fileMatch); const html = mocked(_html); @@ -44,7 +44,7 @@ describe('workers/repository/extract/manager-files', () => { fileList: ['Dockerfile'], }; fileMatch.getMatchingFiles.mockResolvedValue(['Dockerfile']); - fs.readLocalFile.mockResolvedValueOnce('some content'); + gitfs.readLocalFile.mockResolvedValueOnce('some content'); html.extractPackageFile = jest.fn(() => ({ deps: [{}, { replaceString: 'abc' }], })) as never; @@ -58,7 +58,7 @@ describe('workers/repository/extract/manager-files', () => { fileList: ['package.json'], }; fileMatch.getMatchingFiles.mockResolvedValue(['package.json']); - fs.readLocalFile.mockResolvedValueOnce( + gitfs.readLocalFile.mockResolvedValueOnce( '{"dependencies":{"chalk":"2.0.0"}}' ); const res = await getManagerPackageFiles(managerConfig); diff --git a/lib/workers/repository/extract/manager-files.ts b/lib/workers/repository/extract/manager-files.ts index c3e8880ffccc0c..374b7974f32855 100644 --- a/lib/workers/repository/extract/manager-files.ts +++ b/lib/workers/repository/extract/manager-files.ts @@ -7,7 +7,7 @@ import { get, } from '../../../manager'; import { PackageFile } from '../../../manager/common'; -import { readLocalFile } from '../../../util/fs'; +import { readLocalFile } from '../../../util/gitfs'; export async function getManagerPackageFiles( config: RenovateConfig diff --git a/lib/workers/repository/init/config.spec.ts b/lib/workers/repository/init/config.spec.ts index 38a3c5e8809cb0..ae19098d527527 100644 --- a/lib/workers/repository/init/config.spec.ts +++ b/lib/workers/repository/init/config.spec.ts @@ -1,14 +1,14 @@ import { RenovateConfig, - fs, getConfig, + gitfs, mocked, platform, } from '../../../../test/util'; import * as _migrateAndValidate from '../../../config/migrate-validate'; import { mergeRenovateConfig } from './config'; -jest.mock('../../../util/fs'); +jest.mock('../../../util/gitfs'); const migrateAndValidate = mocked(_migrateAndValidate); @@ -32,7 +32,7 @@ describe('workers/repository/init/config', () => { }); it('returns config if not found', async () => { platform.getFileList.mockResolvedValue(['package.json']); - fs.readLocalFile.mockResolvedValue('{}'); + gitfs.readLocalFile.mockResolvedValue('{}'); const res = await mergeRenovateConfig(config); expect(res).toMatchObject(config); }); @@ -44,13 +44,13 @@ describe('workers/repository/init/config', () => { prHourlyLimit: 10, }, }); - fs.readLocalFile.mockResolvedValue(pJson); + gitfs.readLocalFile.mockResolvedValue(pJson); const renovateConfig = await mergeRenovateConfig(config); expect(renovateConfig).toBeTruthy(); }); it('returns error if cannot parse', async () => { platform.getFileList.mockResolvedValue(['package.json', 'renovate.json']); - fs.readLocalFile.mockResolvedValue('cannot parse'); + gitfs.readLocalFile.mockResolvedValue('cannot parse'); let e; try { await mergeRenovateConfig(config); @@ -64,7 +64,7 @@ describe('workers/repository/init/config', () => { }); it('throws error if duplicate keys', async () => { platform.getFileList.mockResolvedValue(['package.json', '.renovaterc']); - fs.readLocalFile.mockResolvedValue( + gitfs.readLocalFile.mockResolvedValue( '{ "enabled": true, "enabled": false }' ); let e; @@ -83,7 +83,7 @@ describe('workers/repository/init/config', () => { 'package.json', 'renovate.json5', ]); - fs.readLocalFile.mockResolvedValue(`{ + gitfs.readLocalFile.mockResolvedValue(`{ // this is json5 format }`); const renovateConfig = await mergeRenovateConfig(config); @@ -94,7 +94,7 @@ describe('workers/repository/init/config', () => { 'package.json', '.github/renovate.json', ]); - fs.readLocalFile.mockResolvedValue('{}'); + gitfs.readLocalFile.mockResolvedValue('{}'); const renovateConfig = await mergeRenovateConfig(config); expect(renovateConfig).toBeTruthy(); }); @@ -103,7 +103,7 @@ describe('workers/repository/init/config', () => { 'package.json', '.gitlab/renovate.json', ]); - fs.readLocalFile.mockResolvedValue('{}'); + gitfs.readLocalFile.mockResolvedValue('{}'); const renovateConfig = await mergeRenovateConfig(config); expect(renovateConfig).toBeTruthy(); }); @@ -112,7 +112,7 @@ describe('workers/repository/init/config', () => { 'package.json', '.renovaterc.json', ]); - fs.readLocalFile.mockResolvedValue('{}'); + gitfs.readLocalFile.mockResolvedValue('{}'); const renovateConfig = await mergeRenovateConfig(config); expect(renovateConfig).toBeTruthy(); }); @@ -121,7 +121,7 @@ describe('workers/repository/init/config', () => { 'package.json', '.renovaterc.json', ]); - fs.readLocalFile.mockResolvedValue('{}'); + gitfs.readLocalFile.mockResolvedValue('{}'); migrateAndValidate.migrateAndValidate.mockResolvedValueOnce({ errors: [{ depName: 'dep', message: 'test error' }], }); diff --git a/lib/workers/repository/init/config.ts b/lib/workers/repository/init/config.ts index 2eeb01658605d0..cdc7d8fa1fc149 100644 --- a/lib/workers/repository/init/config.ts +++ b/lib/workers/repository/init/config.ts @@ -12,7 +12,7 @@ import * as npmApi from '../../../datasource/npm'; import { logger } from '../../../logger'; import { platform } from '../../../platform'; import { ExternalHostError } from '../../../types/errors/external-host-error'; -import { readLocalFile } from '../../../util/fs'; +import { readLocalFile } from '../../../util/gitfs'; import * as hostRules from '../../../util/host-rules'; import { flattenPackageRules } from './flatten'; diff --git a/lib/workers/repository/onboarding/branch/check.ts b/lib/workers/repository/onboarding/branch/check.ts index 363c697cec7548..bf6baab0aedd0a 100644 --- a/lib/workers/repository/onboarding/branch/check.ts +++ b/lib/workers/repository/onboarding/branch/check.ts @@ -4,7 +4,7 @@ import { REPOSITORY_DISABLED } from '../../../../constants/error-messages'; import { PR_STATE_NOT_OPEN } from '../../../../constants/pull-requests'; import { logger } from '../../../../logger'; import { platform } from '../../../../platform'; -import { readLocalFile } from '../../../../util/fs'; +import { readLocalFile } from '../../../../util/gitfs'; const findFile = async (fileName: string): Promise => { logger.debug(`findFile(${fileName})`); diff --git a/lib/workers/repository/onboarding/branch/config.ts b/lib/workers/repository/onboarding/branch/config.ts index 45cee4492b8ebd..5ebfb796df02d3 100644 --- a/lib/workers/repository/onboarding/branch/config.ts +++ b/lib/workers/repository/onboarding/branch/config.ts @@ -2,7 +2,7 @@ import is from '@sindresorhus/is'; import { RenovateConfig } from '../../../../config'; import { logger } from '../../../../logger'; import { clone } from '../../../../util/clone'; -import { readLocalFile } from '../../../../util/fs'; +import { readLocalFile } from '../../../../util/gitfs'; export async function getOnboardingConfig( config: RenovateConfig diff --git a/lib/workers/repository/onboarding/branch/index.spec.ts b/lib/workers/repository/onboarding/branch/index.spec.ts index a9d53d2703ac9e..7df826de279d6e 100644 --- a/lib/workers/repository/onboarding/branch/index.spec.ts +++ b/lib/workers/repository/onboarding/branch/index.spec.ts @@ -1,8 +1,8 @@ import { mock } from 'jest-mock-extended'; import { RenovateConfig, - fs, getConfig, + gitfs, platform, } from '../../../../../test/util'; import { PR_STATE_OPEN } from '../../../../constants/pull-requests'; @@ -13,7 +13,7 @@ import { checkOnboardingBranch } from '.'; const rebase: any = _rebase; jest.mock('../../../../workers/repository/onboarding/branch/rebase'); -jest.mock('../../../../util/fs'); +jest.mock('../../../../util/gitfs'); describe('workers/repository/onboarding/branch', () => { describe('checkOnboardingBranch', () => { @@ -32,7 +32,7 @@ describe('workers/repository/onboarding/branch', () => { }); it('has default onboarding config', async () => { platform.getFileList.mockResolvedValue(['package.json']); - fs.readLocalFile.mockResolvedValue('{}'); + gitfs.readLocalFile.mockResolvedValue('{}'); await checkOnboardingBranch(config); expect( platform.commitFiles.mock.calls[0][0].files[0].contents @@ -55,7 +55,7 @@ describe('workers/repository/onboarding/branch', () => { config.requireConfig = true; config.onboarding = false; platform.getFileList.mockResolvedValueOnce(['package.json']); - fs.readLocalFile.mockResolvedValueOnce('{}'); + gitfs.readLocalFile.mockResolvedValueOnce('{}'); const onboardingResult = checkOnboardingBranch(config); await expect(onboardingResult).rejects.toThrow('disabled'); }); @@ -66,7 +66,7 @@ describe('workers/repository/onboarding/branch', () => { }); it('detects repo is onboarded via package.json config', async () => { platform.getFileList.mockResolvedValueOnce(['package.json']); - fs.readLocalFile.mockResolvedValueOnce('{"renovate":{}}'); + gitfs.readLocalFile.mockResolvedValueOnce('{"renovate":{}}'); const res = await checkOnboardingBranch(config); expect(res.repoIsOnboarded).toBe(true); }); @@ -99,7 +99,7 @@ describe('workers/repository/onboarding/branch', () => { ignore: ['foo', 'bar'], }, }); - fs.readLocalFile.mockResolvedValue(pJsonContent); + gitfs.readLocalFile.mockResolvedValue(pJsonContent); platform.commitFiles.mockResolvedValueOnce('abc123'); await checkOnboardingBranch(config); expect( diff --git a/test/util.ts b/test/util.ts index b00cef32eb936b..90f324bd058442 100644 --- a/test/util.ts +++ b/test/util.ts @@ -4,7 +4,7 @@ import { RenovateConfig as _RenovateConfig } from '../lib/config'; import { getConfig } from '../lib/config/defaults'; import { platform as _platform } from '../lib/platform'; import * as _env from '../lib/util/exec/env'; -import * as _fs from '../lib/util/fs'; +import * as _gitfs from '../lib/util/gitfs'; import * as _hostRules from '../lib/util/host-rules'; /** @@ -23,7 +23,7 @@ export function partial(obj: Partial): T { return obj as T; } -export const fs = mocked(_fs); +export const gitfs = mocked(_gitfs); export const platform = mocked(_platform); export const env = mocked(_env); export const hostRules = mocked(_hostRules);