From ef90e21bc4ed9920a8c487ca4ea0723e79194895 Mon Sep 17 00:00:00 2001 From: elrrrrrrr Date: Wed, 28 Jun 2023 01:11:48 +0800 Subject: [PATCH] fix: only syncUpstream in default registry --- app/core/service/PackageSyncerService.ts | 4 +-- .../PackageSyncerService/executeTask.test.ts | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/core/service/PackageSyncerService.ts b/app/core/service/PackageSyncerService.ts index f94b954c..8f62e06f 100644 --- a/app/core/service/PackageSyncerService.ts +++ b/app/core/service/PackageSyncerService.ts @@ -311,7 +311,7 @@ export class PackageSyncerService extends AbstractService { // 1. 其次从 task.data.registryId (创建单包同步任务时传入) // 2. 接着根据 scope 进行计算 (作为子包依赖同步时候,无 registryId) // 3. 最后返回 default registryId (可能 default registry 也不存在) - public async initSpecRegistry(task: Task, pkg: Package | null = null, scope?: string): Promise { + public async initSpecRegistry(task: Task, pkg: Package | null = null, scope?: string): Promise { const registryId = pkg?.registryId || (task.data as SyncPackageTaskOptions).registryId; let targetHost: string = this.config.cnpmcore.sourceRegistry; let registry: Registry | null = null; @@ -362,7 +362,7 @@ export class PackageSyncerService extends AbstractService { const taskQueueHighWaterSize = this.config.cnpmcore.taskQueueHighWaterSize; const taskQueueInHighWaterState = taskQueueLength >= taskQueueHighWaterSize; const skipDependencies = taskQueueInHighWaterState ? true : !!originSkipDependencies; - const syncUpstream = !!(!taskQueueInHighWaterState && this.config.cnpmcore.sourceRegistryIsCNpm && this.config.cnpmcore.syncUpstreamFirst); + const syncUpstream = !!(!taskQueueInHighWaterState && this.config.cnpmcore.sourceRegistryIsCNpm && this.config.cnpmcore.syncUpstreamFirst && registry.name === PresetRegistryName.default); const logUrl = `${this.config.cnpmcore.registry}/-/package/${fullname}/syncs/${task.taskId}/log`; this.logger.info('[PackageSyncerService.executeTask:start] taskId: %s, targetName: %s, attempts: %s, taskQueue: %s/%s, syncUpstream: %s, log: %s', task.taskId, task.targetName, task.attempts, taskQueueLength, taskQueueHighWaterSize, syncUpstream, logUrl); diff --git a/test/core/service/PackageSyncerService/executeTask.test.ts b/test/core/service/PackageSyncerService/executeTask.test.ts index 08411d18..97902e5d 100644 --- a/test/core/service/PackageSyncerService/executeTask.test.ts +++ b/test/core/service/PackageSyncerService/executeTask.test.ts @@ -2120,6 +2120,37 @@ describe('test/core/service/PackageSyncerService/executeTask.test.ts', () => { }); }); + it('should ignore syncUpstreamFirst', async () => { + await scopeManagerService.createScope({ + name: '@dnpm', + registryId: registry.registryId, + }); + app.mockHttpclient('https://custom.npmjs.com/@dnpm/banana', 'GET', { + data: await TestUtil.readFixturesFile('r.cnpmjs.org/cnpmcore-test-sync-deprecated.json'), + persist: false, + }); + app.mockHttpclient('https://custom.npmjs.com/@dnpm/banana/-/banana-0.0.0.tgz', 'GET', { + data: await TestUtil.readFixturesFile('registry.npmjs.org/foobar/-/foobar-1.0.0.tgz'), + persist: false, + }); + mock(app.config.cnpmcore, 'sourceRegistry', 'https://r.cnpmjs.org'); + mock(app.config.cnpmcore, 'sourceRegistryIsCNpm', true); + mock(app.config.cnpmcore, 'syncUpstreamFirst', true); + + const name = '@dnpm/banana'; + await packageSyncerService.createTask(name); + const task = await packageSyncerService.findExecuteTask(); + assert(task); + assert.equal(task.targetName, name); + await packageSyncerService.executeTask(task); + const stream = await packageSyncerService.findTaskLog(task); + assert(stream); + const log = await TestUtil.readStreamToLog(stream); + // console.log(log); + assert(log.includes('syncUpstream: false')); + + }); + it('should sync from target registry & default registry', async () => { await packageSyncerService.createTask('cnpm-pkg', { registryId: registry.registryId }); await packageSyncerService.createTask('npm-pkg');