From 99c92a9953b93968ee088b50ea01034559bf40a4 Mon Sep 17 00:00:00 2001 From: Gabriel-Ladzaretti Date: Sun, 23 Oct 2022 23:58:07 +0300 Subject: [PATCH] add wrapper function for applyPrettierFormatting Co-authored-by: Michael Kriese --- .../config-migration/branch/create.spec.ts | 7 ++++-- .../config-migration/branch/create.ts | 9 ++++---- .../config-migration/branch/migrated-data.ts | 11 ++++++++++ .../config-migration/branch/rebase.spec.ts | 7 ++++-- .../config-migration/branch/rebase.ts | 22 ++++++------------- 5 files changed, 32 insertions(+), 24 deletions(-) diff --git a/lib/workers/repository/config-migration/branch/create.spec.ts b/lib/workers/repository/config-migration/branch/create.spec.ts index adeac4742f9279..cdb2576326979e 100644 --- a/lib/workers/repository/config-migration/branch/create.spec.ts +++ b/lib/workers/repository/config-migration/branch/create.spec.ts @@ -8,8 +8,8 @@ import { } from '../../../../../test/util'; import { checkoutBranch, commitFiles } from '../../../../util/git'; import { createConfigMigrationBranch } from './create'; +import { MigratedDataFactory } from './migrated-data'; import type { MigratedData } from './migrated-data'; -import * as MigratedDataModule from './migrated-data'; jest.mock('../../../../util/git'); @@ -18,7 +18,10 @@ describe('workers/repository/config-migration/branch/create', () => { const indent = ' '; const renovateConfig = JSON.stringify(raw, undefined, indent) + '\n'; const filename = 'renovate.json'; - const prettierSpy = jest.spyOn(MigratedDataModule, 'applyPrettierFormatting'); + const prettierSpy = jest.spyOn( + MigratedDataFactory, + 'applyPrettierFormatting' + ); let config: RenovateConfig; let migratedConfigData: MigratedData; diff --git a/lib/workers/repository/config-migration/branch/create.ts b/lib/workers/repository/config-migration/branch/create.ts index 285823426d56e9..cd337ad37bfa6d 100644 --- a/lib/workers/repository/config-migration/branch/create.ts +++ b/lib/workers/repository/config-migration/branch/create.ts @@ -1,4 +1,3 @@ -import upath from 'upath'; import { GlobalConfig } from '../../../../config/global'; import type { RenovateConfig } from '../../../../config/types'; import { logger } from '../../../../logger'; @@ -6,7 +5,7 @@ import { commitAndPush } from '../../../../modules/platform/commit'; import { checkoutBranch } from '../../../../util/git'; import { getMigrationBranchName } from '../common'; import { ConfigMigrationCommitMessageFactory } from './commit-message'; -import { PrettierParser, applyPrettierFormatting } from './migrated-data'; +import { MigratedDataFactory } from './migrated-data'; import type { MigratedData } from './migrated-data'; export async function createConfigMigrationBranch( @@ -31,9 +30,9 @@ export async function createConfigMigrationBranch( } await checkoutBranch(config.defaultBranch!); - const { content, filename, indent } = migratedConfigData; - const parser = upath.extname(filename).replace('.', '') as PrettierParser; - const contents = await applyPrettierFormatting(content, parser, indent); + const contents = await MigratedDataFactory.applyPrettierFormatting( + migratedConfigData + ); return commitAndPush({ branchName: getMigrationBranchName(config), files: [ diff --git a/lib/workers/repository/config-migration/branch/migrated-data.ts b/lib/workers/repository/config-migration/branch/migrated-data.ts index 66b6e6080bbf93..30c4279a16a26d 100644 --- a/lib/workers/repository/config-migration/branch/migrated-data.ts +++ b/lib/workers/repository/config-migration/branch/migrated-data.ts @@ -1,6 +1,7 @@ import detectIndent from 'detect-indent'; import JSON5 from 'json5'; import prettier, { BuiltInParserName } from 'prettier'; +import upath from 'upath'; import { migrateConfig } from '../../../../config/migration'; import { logger } from '../../../../logger'; import { readLocalFile } from '../../../../util/fs'; @@ -33,6 +34,7 @@ const prettierConfigFilenames = new Set([ ]); export type PrettierParser = BuiltInParserName; + export async function applyPrettierFormatting( content: string, parser: PrettierParser, @@ -94,6 +96,15 @@ export class MigratedDataFactory { this.data = null; } + static applyPrettierFormatting({ + content, + filename, + indent, + }: MigratedData): Promise { + const parser = upath.extname(filename).replace('.', '') as PrettierParser; + return applyPrettierFormatting(content, parser, indent); + } + private static async build(): Promise { let res: MigratedData | null = null; try { diff --git a/lib/workers/repository/config-migration/branch/rebase.spec.ts b/lib/workers/repository/config-migration/branch/rebase.spec.ts index 70993b0d348b7e..a9f647c99845bf 100644 --- a/lib/workers/repository/config-migration/branch/rebase.spec.ts +++ b/lib/workers/repository/config-migration/branch/rebase.spec.ts @@ -9,7 +9,7 @@ import { } from '../../../../../test/util'; import { GlobalConfig } from '../../../../config/global'; import { checkoutBranch, commitFiles } from '../../../../util/git'; -import * as MigratedDataModule from './migrated-data'; +import { MigratedDataFactory } from './migrated-data'; import type { MigratedData } from './migrated-data'; import { rebaseMigrationBranch } from './rebase'; @@ -20,7 +20,10 @@ const formattedMigratedData = Fixtures.getJson( ); describe('workers/repository/config-migration/branch/rebase', () => { - const prettierSpy = jest.spyOn(MigratedDataModule, 'applyPrettierFormatting'); + const prettierSpy = jest.spyOn( + MigratedDataFactory, + 'applyPrettierFormatting' + ); beforeAll(() => { GlobalConfig.set({ diff --git a/lib/workers/repository/config-migration/branch/rebase.ts b/lib/workers/repository/config-migration/branch/rebase.ts index e638eb387bb4c2..a8f56d234538e3 100644 --- a/lib/workers/repository/config-migration/branch/rebase.ts +++ b/lib/workers/repository/config-migration/branch/rebase.ts @@ -1,5 +1,3 @@ -import hasha from 'hasha'; -import upath from 'upath'; import { GlobalConfig } from '../../../../config/global'; import type { RenovateConfig } from '../../../../config/types'; import { logger } from '../../../../logger'; @@ -12,7 +10,7 @@ import { import { quickStringify } from '../../../../util/stringify'; import { getMigrationBranchName } from '../common'; import { ConfigMigrationCommitMessageFactory } from './commit-message'; -import { PrettierParser, applyPrettierFormatting } from './migrated-data'; +import { MigratedDataFactory } from './migrated-data'; import type { MigratedData } from './migrated-data'; export async function rebaseMigrationBranch( @@ -28,7 +26,7 @@ export async function rebaseMigrationBranch( const configFileName = migratedConfigData.filename; let contents = migratedConfigData.content; const existingContents = await getFile(configFileName, branchName); - if (hash(contents) === hash(existingContents)) { + if (stripWhitespaces(contents) === stripWhitespaces(existingContents)) { logger.debug('Migration branch is up to date'); return null; } @@ -46,10 +44,9 @@ export async function rebaseMigrationBranch( const commitMessage = commitMessageFactory.getCommitMessage(); await checkoutBranch(config.defaultBranch!); - - const { content, filename, indent } = migratedConfigData; - const parser = upath.extname(filename).replace('.', '') as PrettierParser; - contents = await applyPrettierFormatting(content, parser, indent); + contents = await MigratedDataFactory.applyPrettierFormatting( + migratedConfigData + ); return commitAndPush({ branchName, files: [ @@ -64,14 +61,9 @@ export async function rebaseMigrationBranch( }); } -function stripWhitespaces(str: string): string { - return quickStringify(JSON.parse(str)); -} - -function hash(str: string | null): string | null { +function stripWhitespaces(str: string | null): string | null { if (!str) { return null; } - const stripped = stripWhitespaces(str); - return hasha(stripped); + return quickStringify(JSON.parse(str)); }