diff --git a/lib/services/plugins-service.ts b/lib/services/plugins-service.ts index d2d56f0e1c..9d97f5b76d 100644 --- a/lib/services/plugins-service.ts +++ b/lib/services/plugins-service.ts @@ -268,10 +268,15 @@ export class PluginsService implements IPluginsService { pluginData, projectData ); + + const updatedPluginNativeHashes = await this.getPluginNativeHashes( + pluginPlatformsFolderPath + ); + this.setPluginNativeHashes({ pathToPluginsBuildFile, pluginData, - currentPluginNativeHashes, + currentPluginNativeHashes: updatedPluginNativeHashes, allPluginsNativeHashes, }); } diff --git a/test/plugins-service.ts b/test/plugins-service.ts index 871c2a102e..ea56f0e146 100644 --- a/test/plugins-service.ts +++ b/test/plugins-service.ts @@ -693,6 +693,7 @@ describe("Plugins service", () => { newPluginHashes?: IStringDictionary; buildDataFileExists?: boolean; hasPluginPlatformsDir?: boolean; + pluginHashesAfterPrepare?: IStringDictionary; }): any => { const testData: any = { pluginsService: null, @@ -730,7 +731,10 @@ describe("Plugins service", () => { currentPluginNativeHashes: IStringDictionary ) => !!opts.hasChangesInShasums, generateHashes: async (files: string[]): Promise => - pluginHashes, + testData.isPreparePluginNativeCodeCalled && + opts.pluginHashesAfterPrepare + ? opts.pluginHashesAfterPrepare + : pluginHashes, }); unitTestsInjector.register("fs", { @@ -767,9 +771,8 @@ describe("Plugins service", () => { unitTestsInjector.register("nodeModulesDependenciesBuilder", {}); unitTestsInjector.register("tempService", stubs.TempServiceStub); - const pluginsService: PluginsService = unitTestsInjector.resolve( - PluginsService - ); + const pluginsService: PluginsService = + unitTestsInjector.resolve(PluginsService); testData.pluginsService = pluginsService; testData.pluginData = samplePluginData; return testData; @@ -805,6 +808,25 @@ describe("Plugins service", () => { }); }); + it("should hash the plugin files after prepare", async () => { + const newPluginHashes = { file: "hash" }; + const pluginHashesAfterPrepare = { file: "hasedafterprepare" }; + const testData = setupTest({ + newPluginHashes, + hasPluginPlatformsDir: true, + pluginHashesAfterPrepare, + }); + await testData.pluginsService.preparePluginNativeCode({ + pluginData: testData.pluginData, + platform, + projectData, + }); + assert.isTrue(testData.isPreparePluginNativeCodeCalled); + assert.deepStrictEqual(testData.dataPassedToWriteJson, { + [testData.pluginData.name]: pluginHashesAfterPrepare, + }); + }); + it("does not prepare the files when plugin has platforms dir and files have not changed since then", async () => { const testData = setupTest({ hasChangesInShasums: false,