Skip to content

Commit

Permalink
refactor: move branch cache files to util/cache (#18646)
Browse files Browse the repository at this point in the history
  • Loading branch information
RahulGautamSingh committed Oct 29, 2022
1 parent a9922f5 commit f04a7c7
Show file tree
Hide file tree
Showing 15 changed files with 79 additions and 84 deletions.
@@ -1,15 +1,15 @@
import { logger, mocked, partial } from '../../../test/util';
import * as _repositoryCache from '../cache/repository';
import type { BranchCache, RepoCacheData } from '../cache/repository/types';
import { logger, mocked, partial } from '../../../../test/util';
import * as _repositoryCache from '../repository';
import type { BranchCache, RepoCacheData } from '../repository/types';
import {
getCachedBehindBaseResult,
setCachedBehindBaseResult,
} from './behind-base-branch-cache';
} from './behind-base-branch';

jest.mock('../cache/repository');
jest.mock('../repository');
const repositoryCache = mocked(_repositoryCache);

describe('util/git/behind-base-branch-cache', () => {
describe('util/cache/branch/behind-base-branch', () => {
let repoCache: RepoCacheData = {};

beforeEach(() => {
Expand Down
@@ -1,5 +1,5 @@
import { logger } from '../../logger';
import { getCache } from '../cache/repository';
import { logger } from '../../../logger';
import { getCache } from '../repository';

export function getCachedBehindBaseResult(
branchName: string,
Expand Down
@@ -1,15 +1,12 @@
import { mocked, partial } from '../../../test/util';
import * as _repositoryCache from '../cache/repository';
import type { BranchCache, RepoCacheData } from '../cache/repository/types';
import {
getCachedConflictResult,
setCachedConflictResult,
} from './conflicts-cache';
import { mocked, partial } from '../../../../test/util';
import * as _repositoryCache from '../repository';
import type { BranchCache, RepoCacheData } from '../repository/types';
import { getCachedConflictResult, setCachedConflictResult } from './conflict';

jest.mock('../cache/repository');
jest.mock('../repository');
const repositoryCache = mocked(_repositoryCache);

describe('util/git/conflicts-cache', () => {
describe('util/cache/branch/conflict', () => {
let repoCache: RepoCacheData = {};

beforeEach(() => {
Expand Down
@@ -1,5 +1,5 @@
import { logger } from '../../logger';
import { getCache } from '../cache/repository';
import { logger } from '../../../logger';
import { getCache } from '../repository';

export function getCachedConflictResult(
branchName: string,
Expand Down
11 changes: 11 additions & 0 deletions lib/util/cache/branch/index.ts
@@ -0,0 +1,11 @@
export {
deleteCachedBranchParentShaResult,
getCachedBranchParentShaResult,
} from './parent-sha';
export { setBranchNewCommit } from './set-branch-commit';
export {
getCachedBehindBaseResult,
setCachedBehindBaseResult,
} from './behind-base-branch';
export { getCachedConflictResult, setCachedConflictResult } from './conflict';
export { getCachedModifiedResult, setCachedModifiedResult } from './modified';
@@ -1,15 +1,12 @@
import { logger, mocked, partial } from '../../../test/util';
import * as _repositoryCache from '../cache/repository';
import type { BranchCache, RepoCacheData } from '../cache/repository/types';
import {
getCachedModifiedResult,
setCachedModifiedResult,
} from './modified-cache';
import { logger, mocked, partial } from '../../../../test/util';
import * as _repositoryCache from '../repository';
import type { BranchCache, RepoCacheData } from '../repository/types';
import { getCachedModifiedResult, setCachedModifiedResult } from './modified';

jest.mock('../cache/repository');
jest.mock('../repository');
const repositoryCache = mocked(_repositoryCache);

describe('util/git/modified-cache', () => {
describe('util/cache/branch/modified', () => {
let repoCache: RepoCacheData = {};

beforeEach(() => {
Expand Down
@@ -1,5 +1,5 @@
import { logger } from '../../logger';
import { getCache } from '../cache/repository';
import { logger } from '../../../logger';
import { getCache } from '../repository';

export function getCachedModifiedResult(
branchName: string,
Expand Down
@@ -1,15 +1,15 @@
import { mocked } from '../../../test/util';
import * as _repositoryCache from '../cache/repository';
import type { BranchCache, RepoCacheData } from '../cache/repository/types';
import { mocked } from '../../../../test/util';
import * as _repositoryCache from '../repository';
import type { BranchCache, RepoCacheData } from '../repository/types';
import {
deleteCachedBranchParentShaResult,
getCachedBranchParentShaResult,
} from './parent-sha-cache';
} from './parent-sha';

jest.mock('../cache/repository');
jest.mock('../repository');
const repositoryCache = mocked(_repositoryCache);

describe('util/git/parent-sha-cache', () => {
describe('util/cache/branch/parent-sha', () => {
let repoCache: RepoCacheData = {};

beforeEach(() => {
Expand Down
@@ -1,4 +1,4 @@
import { getCache } from '../cache/repository';
import { getCache } from '../repository';

export function getCachedBranchParentShaResult(
branchName: string,
Expand Down
@@ -1,13 +1,13 @@
import { git, logger, mocked, partial } from '../../../test/util';
import * as _repositoryCache from '../cache/repository';
import type { BranchCache, RepoCacheData } from '../cache/repository/types';
import { git, logger, mocked, partial } from '../../../../test/util';
import * as _repositoryCache from '../repository';
import type { BranchCache, RepoCacheData } from '../repository/types';
import { setBranchNewCommit } from './set-branch-commit';

jest.mock('../cache/repository');
jest.mock('.');
jest.mock('../repository');
jest.mock('../../git');
const repositoryCache = mocked(_repositoryCache);

describe('util/git/set-branch-commit', () => {
describe('util/cache/branch/set-branch-commit', () => {
let repoCache: RepoCacheData = {};

beforeEach(() => {
Expand Down
@@ -1,7 +1,7 @@
import { logger } from '../../logger';
import { getCache } from '../cache/repository';
import type { BranchCache } from '../cache/repository/types';
import { getBranchCommit } from '.';
import { logger } from '../../../logger';
import { getBranchCommit } from '../../git';
import { getCache } from '../repository';
import type { BranchCache } from '../repository/types';

/**
* Called when a new commit is added to branch
Expand Down
42 changes: 17 additions & 25 deletions lib/util/git/index.spec.ts
Expand Up @@ -7,25 +7,17 @@ import {
CONFIG_VALIDATION,
INVALID_PATH,
} from '../../constants/error-messages';
import * as _branchCache from '../cache/branch';
import { newlineRegex, regEx } from '../regex';
import * as _behindBaseCache from './behind-base-branch-cache';
import * as _conflictsCache from './conflicts-cache';
import * as _modifiedCache from './modified-cache';
import * as _parentShaCache from './parent-sha-cache';
import type { FileChange } from './types';
import * as git from '.';
import { setNoVerify } from '.';

jest.mock('./conflicts-cache');
jest.mock('./behind-base-branch-cache');
jest.mock('./modified-cache');
jest.mock('./parent-sha-cache');
jest.mock('../cache/branch');
jest.mock('delay');
jest.mock('../cache/repository');
const behindBaseCache = mocked(_behindBaseCache);
const conflictsCache = mocked(_conflictsCache);
const modifiedCache = mocked(_modifiedCache);
const parentShaCache = mocked(_parentShaCache);
const branchCache = mocked(_branchCache);

// Class is no longer exported
const SimpleGit = Git().constructor as { prototype: ReturnType<typeof Git> };

Expand Down Expand Up @@ -116,8 +108,8 @@ describe('util/git/index', () => {
// override some local git settings for better testing
const local = Git(tmpDir.path);
await local.addConfig('commit.gpgsign', 'false');
parentShaCache.getCachedBranchParentShaResult.mockReturnValue(null);
behindBaseCache.getCachedBehindBaseResult.mockReturnValue(null);
branchCache.getCachedBranchParentShaResult.mockReturnValue(null);
branchCache.getCachedBehindBaseResult.mockReturnValue(null);
});

afterEach(async () => {
Expand Down Expand Up @@ -264,7 +256,7 @@ describe('util/git/index', () => {
});

it('returns cached value', async () => {
behindBaseCache.getCachedBehindBaseResult.mockReturnValue(true);
branchCache.getCachedBehindBaseResult.mockReturnValue(true);
expect(await git.isBranchBehindBase('develop', defaultBranch)).toBeTrue();
expect(logger.logger.debug).toHaveBeenCalledWith(
'branch.isBehindBase(): using cached result "true"'
Expand All @@ -274,7 +266,7 @@ describe('util/git/index', () => {

describe('isBranchModified()', () => {
beforeEach(() => {
modifiedCache.getCachedModifiedResult.mockReturnValue(null);
branchCache.getCachedModifiedResult.mockReturnValue(null);
});

it('should return false when branch is not found', async () => {
Expand All @@ -298,7 +290,7 @@ describe('util/git/index', () => {
});

it('should return value stored in modifiedCacheResult', async () => {
modifiedCache.getCachedModifiedResult.mockReturnValue(true);
branchCache.getCachedModifiedResult.mockReturnValue(true);
expect(await git.isBranchModified('renovate/future_branch')).toBeTrue();
});
});
Expand Down Expand Up @@ -805,7 +797,7 @@ describe('util/git/index', () => {

await repo.checkout(defaultBranch);

conflictsCache.getCachedConflictResult.mockReturnValue(null);
branchCache.getCachedConflictResult.mockReturnValue(null);
});

it('returns true for non-existing source branch', async () => {
Expand Down Expand Up @@ -862,49 +854,49 @@ describe('util/git/index', () => {
});

it('returns cached values', async () => {
conflictsCache.getCachedConflictResult.mockReturnValue(true);
branchCache.getCachedConflictResult.mockReturnValue(true);

const res = await git.isBranchConflicted(
defaultBranch,
'renovate/conflicted_branch'
);

expect(res).toBeTrue();
expect(conflictsCache.getCachedConflictResult.mock.calls).toEqual([
expect(branchCache.getCachedConflictResult.mock.calls).toEqual([
[
'renovate/conflicted_branch',
git.getBranchCommit('renovate/conflicted_branch'),
defaultBranch,
git.getBranchCommit(defaultBranch),
],
]);
expect(conflictsCache.setCachedConflictResult).not.toHaveBeenCalled();
expect(branchCache.setCachedConflictResult).not.toHaveBeenCalled();
});

it('caches truthy return value', async () => {
conflictsCache.getCachedConflictResult.mockReturnValue(null);
branchCache.getCachedConflictResult.mockReturnValue(null);

const res = await git.isBranchConflicted(
defaultBranch,
'renovate/conflicted_branch'
);

expect(res).toBeTrue();
expect(conflictsCache.setCachedConflictResult.mock.calls).toEqual([
expect(branchCache.setCachedConflictResult.mock.calls).toEqual([
['renovate/conflicted_branch', true],
]);
});

it('caches falsy return value', async () => {
conflictsCache.getCachedConflictResult.mockReturnValue(null);
branchCache.getCachedConflictResult.mockReturnValue(null);

const res = await git.isBranchConflicted(
defaultBranch,
'renovate/non_conflicted_branch'
);

expect(res).toBeFalse();
expect(conflictsCache.setCachedConflictResult.mock.calls).toEqual([
expect(branchCache.setCachedConflictResult.mock.calls).toEqual([
['renovate/non_conflicted_branch', false],
]);
});
Expand Down
18 changes: 8 additions & 10 deletions lib/util/git/index.ts
Expand Up @@ -28,24 +28,22 @@ import { api as semverCoerced } from '../../modules/versioning/semver-coerced';
import { ExternalHostError } from '../../types/errors/external-host-error';
import type { GitProtocol } from '../../types/git';
import { Limit, incLimitedValue } from '../../workers/global/limits';
import { newlineRegex, regEx } from '../regex';
import { parseGitAuthor } from './author';
import { getCachedBehindBaseResult } from './behind-base-branch-cache';
import { getNoVerify, simpleGitConfig } from './config';
import {
deleteCachedBranchParentShaResult,
getCachedBehindBaseResult,
getCachedConflictResult,
getCachedModifiedResult,
setCachedConflictResult,
} from './conflicts-cache';
setCachedModifiedResult,
} from '../cache/branch';
import { newlineRegex, regEx } from '../regex';
import { parseGitAuthor } from './author';
import { getNoVerify, simpleGitConfig } from './config';
import {
bulkChangesDisallowed,
checkForPlatformFailure,
handleCommitError,
} from './error';
import {
getCachedModifiedResult,
setCachedModifiedResult,
} from './modified-cache';
import { deleteCachedBranchParentShaResult } from './parent-sha-cache';
import { configSigningKey, writePrivateKey } from './private-key';
import type {
CommitFilesConfig,
Expand Down
2 changes: 1 addition & 1 deletion lib/workers/repository/cache.ts
Expand Up @@ -2,6 +2,7 @@

import { logger } from '../../logger';
import { platform } from '../../modules/platform';
import { getCachedBranchParentShaResult } from '../../util/cache/branch';
import { getCache } from '../../util/cache/repository';
import type {
BranchCache,
Expand All @@ -13,7 +14,6 @@ import {
isBranchConflicted,
isBranchModified,
} from '../../util/git';
import { getCachedBranchParentShaResult } from '../../util/git/parent-sha-cache';
import type { BranchConfig, BranchUpgradeConfig } from '../types';

function generateBranchUpgradeCache(
Expand Down
2 changes: 1 addition & 1 deletion lib/workers/repository/process/write.ts
Expand Up @@ -2,11 +2,11 @@ import is from '@sindresorhus/is';
import type { RenovateConfig } from '../../../config/types';
import { addMeta, logger, removeMeta } from '../../../logger';
import { hashMap } from '../../../modules/manager';
import { setBranchNewCommit } from '../../../util/cache/branch';
import { getCache } from '../../../util/cache/repository';
import type { BranchCache } from '../../../util/cache/repository/types';
import { fingerprint } from '../../../util/fingerprint';
import { branchExists, getBranchCommit } from '../../../util/git';
import { setBranchNewCommit } from '../../../util/git/set-branch-commit';
import { Limit, incLimitedValue, setMaxLimit } from '../../global/limits';
import {
BranchConfig,
Expand Down

0 comments on commit f04a7c7

Please sign in to comment.