Skip to content

Commit cf1d777

Browse files
Merge pull request #870 from forcedotcom/t/2gp-readiness/split-no-data-zip-error
@ W-22495755@ [CLI] Improve Error Message When Package Version Retrieve Fails Due to Dev Zip Not Generated
2 parents 4fe3984 + 692695d commit cf1d777

5 files changed

Lines changed: 90 additions & 5 deletions

File tree

messages/package.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,13 @@ Can't retrieve package version metadata. The specified directory must be relativ
3838

3939
Can't retrieve package metadata. To use this feature, you must first assign yourself the DownloadPackageVersionZips user permission. Then retry retrieving your package metadata.
4040

41-
# downloadDeveloperPackageZipHasNoData
41+
# downloadDeveloperPackageZipHasNoDataNative2GP
4242

43-
Can't retrieve package metadata. Package metadata is only generated for converted 2GP package versions and versions created with the --generate-pkg-zip flag. To resolve, create a new package version and retry. For native 2GP packages, include the --generate-pkg-zip flag when creating the version. For 1GP packages, first convert them to 2GP.
43+
Can't retrieve package metadata. The developer package zip for this native 2GP package version is unretrievable. To resolve, create a new package version with the --generate-pkg-zip flag. Then retry retrieving your package metadata.
44+
45+
# downloadDeveloperPackageZipHasNoDataConverted2GP
46+
47+
Can't retrieve package metadata. The developer package zip for this converted 2GP package version is unretrievable. To resolve, retry conversion to produce a new converted package version. Then retry retrieving your package metadata.
4448

4549
# packagingNotEnabledOnOrg
4650

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
],
4444
"dependencies": {
4545
"@jsforce/jsforce-node": "^3.10.14",
46-
"@salesforce/core": "^8.29.0",
46+
"@salesforce/core": "^8.31.0",
4747
"@salesforce/kit": "^3.2.6",
4848
"@salesforce/schemas": "^1.10.3",
4949
"@salesforce/source-deploy-retrieve": "^12.35.0",

src/package/packageVersionRetrieve.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,10 @@ export async function retrievePackageVersionMetadata(
9292
tree = await ZipTreeContainer.create(buffer);
9393
} catch (e) {
9494
if (e instanceof Error && e.message.includes('data length = 0')) {
95-
throw messages.createError('downloadDeveloperPackageZipHasNoData');
95+
const messageKey = versionInfo.ConvertedFromVersionId
96+
? 'downloadDeveloperPackageZipHasNoDataConverted2GP'
97+
: 'downloadDeveloperPackageZipHasNoDataNative2GP';
98+
throw messages.createError(messageKey);
9699
}
97100
throw e;
98101
}

test/package/packageVersionMetadataRetrieve.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import * as sinon from 'sinon';
1919
import { instantiateContext, MockTestOrgData, restoreContext, stubContext } from '@salesforce/core/testSetup';
2020
import { assert, expect } from 'chai';
2121
import { Connection, SfProject, SfError } from '@salesforce/core';
22+
import { ZipTreeContainer } from '@salesforce/source-deploy-retrieve';
2223
import * as packageUtils from '../../src/utils/packageUtils';
2324
import { Package } from '../../src/package/package';
2425
import { PackageVersion } from '../../src/package/packageVersion';
@@ -321,6 +322,42 @@ describe('Package Version Retrieve', () => {
321322
}
322323
});
323324

325+
it('should throw the native-2GP "unretrievable dev zip" error when ZipTreeContainer is empty and ConvertedFromVersionId is unset', async () => {
326+
$$.SANDBOX.stub(ZipTreeContainer, 'create').rejects(new Error('data length = 0'));
327+
queryPackage2VersionStub
328+
.withArgs(connection, { whereClause: `WHERE SubscriberPackageVersionId = '${packageVersionId2GP}'` })
329+
.resolves([{ ...mockPackage2Version, ConvertedFromVersionId: '' }]);
330+
331+
try {
332+
await Package.downloadPackageVersionMetadata(project, downloadOptions2GP, connection);
333+
assert.fail('Expected test execution to raise an error');
334+
} catch (e) {
335+
const error = e as SfError;
336+
expect(error.message).to.include('native 2GP package version is unretrievable');
337+
expect(error.message).to.include('--generate-pkg-zip');
338+
expect(error.message).to.include('Then retry retrieving your package metadata');
339+
expect(error.message).to.not.include('converted');
340+
}
341+
});
342+
343+
it('should throw the converted-2GP "unretrievable dev zip" error when ZipTreeContainer is empty and ConvertedFromVersionId is set', async () => {
344+
$$.SANDBOX.stub(ZipTreeContainer, 'create').rejects(new Error('data length = 0'));
345+
queryPackage2VersionStub
346+
.withArgs(connection, { whereClause: `WHERE SubscriberPackageVersionId = '${packageVersionId2GP}'` })
347+
.resolves([{ ...mockPackage2Version, ConvertedFromVersionId: '04txx0000004HwAAAU' }]);
348+
349+
try {
350+
await Package.downloadPackageVersionMetadata(project, downloadOptions2GP, connection);
351+
assert.fail('Expected test execution to raise an error');
352+
} catch (e) {
353+
const error = e as SfError;
354+
expect(error.message).to.include('converted 2GP package version is unretrievable');
355+
expect(error.message).to.include('retry conversion to produce a new converted package version');
356+
expect(error.message).to.not.include('--generate-pkg-zip');
357+
expect(error.message).to.not.include('native');
358+
}
359+
});
360+
324361
it('should fail if the DeveloperUsePkgZip field is inaccessible to the user', async () => {
325362
// Mock Package2Version without DeveloperUsePkgZip field to simulate field access issue
326363
queryPackage2VersionStub

yarn.lock

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@
551551
strip-ansi "6.0.1"
552552
ts-retry-promise "^0.8.1"
553553

554-
"@salesforce/core@^8.23.1", "@salesforce/core@^8.28.4", "@salesforce/core@^8.29.0", "@salesforce/core@^8.29.1":
554+
"@salesforce/core@^8.23.1", "@salesforce/core@^8.28.4", "@salesforce/core@^8.29.1":
555555
version "8.30.1"
556556
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.30.1.tgz#870f81cd46967614f3842314eb51ce46548eb6a0"
557557
integrity sha512-2TBt9r7Ci5bc/cq3MbS9NssvdsnXOF76d/6EElimgdqTcgFnsHdD8u5j+TVE+ivGaFnpIGAWZ7Xvmes2qys2cw==
@@ -576,6 +576,31 @@
576576
ts-retry-promise "^0.8.1"
577577
zod "^4.1.12"
578578

579+
"@salesforce/core@^8.31.0":
580+
version "8.31.0"
581+
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.31.0.tgz#153beb193af8fce73d31cc39afee794c4c1ee1c0"
582+
integrity sha512-TXQoR7Bs0Dk5AuNY8eaNRhMeLDLcpJ8su7LVxn7VVfnRxITrRh4gkSuOAXdBKAqx0WcjRONDs1twedaOE7Xu4Q==
583+
dependencies:
584+
"@jsforce/jsforce-node" "^3.10.13"
585+
"@salesforce/kit" "^3.2.4"
586+
"@salesforce/ts-types" "^2.0.12"
587+
ajv "^8.18.0"
588+
change-case "^4.1.2"
589+
fast-levenshtein "^3.0.0"
590+
faye "^1.4.1"
591+
form-data "^4.0.5"
592+
js2xmlparser "^4.0.1"
593+
jsonwebtoken "9.0.3"
594+
jszip "3.10.1"
595+
memfs "4.38.1"
596+
pino "^9.7.0"
597+
pino-abstract-transport "^1.2.0"
598+
pino-pretty "^11.3.0"
599+
proper-lockfile "^4.1.2"
600+
semver "^7.8.0"
601+
ts-retry-promise "^0.8.1"
602+
zod "^4.1.12"
603+
579604
"@salesforce/dev-config@^4.3.1":
580605
version "4.3.2"
581606
resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-4.3.2.tgz#10047e2b8d289c93f157ab4243a1b1de57f2d6a2"
@@ -2712,6 +2737,17 @@ form-data@^4.0.4:
27122737
hasown "^2.0.2"
27132738
mime-types "^2.1.12"
27142739

2740+
form-data@^4.0.5:
2741+
version "4.0.5"
2742+
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053"
2743+
integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==
2744+
dependencies:
2745+
asynckit "^0.4.0"
2746+
combined-stream "^1.0.8"
2747+
es-set-tostringtag "^2.1.0"
2748+
hasown "^2.0.2"
2749+
mime-types "^2.1.12"
2750+
27152751
fromentries@^1.2.0:
27162752
version "1.3.2"
27172753
resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
@@ -5235,6 +5271,11 @@ semver@^7.3.4, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.3:
52355271
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
52365272
integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
52375273

5274+
semver@^7.8.0:
5275+
version "7.8.1"
5276+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.1.tgz#bf4970b5e70fda0686363cc18bfe8805d5ed957e"
5277+
integrity sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==
5278+
52385279
sentence-case@^3.0.4:
52395280
version "3.0.4"
52405281
resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f"

0 commit comments

Comments
 (0)