diff --git a/src/targets/__tests__/pypi.test.ts b/src/targets/__tests__/pypi.test.ts index d93a4c24..a1f2724a 100644 --- a/src/targets/__tests__/pypi.test.ts +++ b/src/targets/__tests__/pypi.test.ts @@ -65,4 +65,34 @@ describe('pypi', () => { '/path/to/pkg.tar.gz', ]); }); + + test('uploadAssets omits --verbose when TWINE_VERBOSE is not set', async () => { + delete process.env.TWINE_VERBOSE; + vi.mocked(spawnProcess).mockResolvedValueOnce(Buffer.from('')); + + const target = new PypiTarget({ name: 'pypi' }, new NoneArtifactProvider()); + await target.uploadAssets(['/path/to/pkg.whl']); + + expect(spawnProcess).toHaveBeenCalledWith('twine', [ + 'upload', + '/path/to/pkg.whl', + ]); + }); + + test('uploadAssets includes --verbose when TWINE_VERBOSE is set', async () => { + process.env.TWINE_VERBOSE = 'true'; + vi.mocked(spawnProcess).mockResolvedValueOnce(Buffer.from('')); + + const target = new PypiTarget({ name: 'pypi' }, new NoneArtifactProvider()); + await target.uploadAssets(['/path/to/pkg.whl', '/path/to/pkg.tar.gz']); + + expect(spawnProcess).toHaveBeenCalledWith('twine', [ + 'upload', + '--verbose', + '/path/to/pkg.whl', + '/path/to/pkg.tar.gz', + ]); + + delete process.env.TWINE_VERBOSE; + }); }); diff --git a/src/targets/pypi.ts b/src/targets/pypi.ts index 98070f86..c9b2da8d 100644 --- a/src/targets/pypi.ts +++ b/src/targets/pypi.ts @@ -194,7 +194,12 @@ export class PypiTarget extends BaseTarget { async uploadAssets(paths: string[]): Promise { // TODO: Sign the package with "--sign" - return spawnProcess(TWINE_BIN, ['upload', ...paths]); + const args = ['upload']; + if (process.env.TWINE_VERBOSE) { + args.push('--verbose'); + } + args.push(...paths); + return spawnProcess(TWINE_BIN, args); } /**