From 7c524325b4e92a7f55229fa168150bd3f53bb2f0 Mon Sep 17 00:00:00 2001 From: chris48s Date: Thu, 10 Mar 2022 16:27:52 +0000 Subject: [PATCH] [piwheels], filter out versions with no files (#7696) --- services/piwheels/piwheels-version.service.js | 3 ++ services/piwheels/piwheels-version.spec.js | 32 ++++++++++++------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/services/piwheels/piwheels-version.service.js b/services/piwheels/piwheels-version.service.js index a7ad2fc774..51be963d6e 100644 --- a/services/piwheels/piwheels-version.service.js +++ b/services/piwheels/piwheels-version.service.js @@ -10,6 +10,7 @@ const schema = Joi.object({ Joi.object({ prerelease: Joi.boolean().required(), yanked: Joi.boolean().required(), + files: Joi.object().required(), }) ) .required(), @@ -66,10 +67,12 @@ export default class PiWheelsVersion extends BaseJsonService { version: key, prerelease: releases[key].prerelease, yanked: releases[key].yanked, + hasFiles: Object.keys(releases[key].files).length > 0, }), [] ) .filter(release => !release.yanked) // exclude any yanked releases + .filter(release => release.hasFiles) // exclude any releases with no wheels if (allReleases.length === 0) { throw new InvalidResponse({ prettyMessage: 'no versions found' }) diff --git a/services/piwheels/piwheels-version.spec.js b/services/piwheels/piwheels-version.spec.js index d68acc61af..de69409f3e 100644 --- a/services/piwheels/piwheels-version.spec.js +++ b/services/piwheels/piwheels-version.spec.js @@ -7,36 +7,43 @@ describe('PiWheelsVersion', function () { test(PiWheelsVersion.transform, () => { given( { - '2.0.0rc1': { prerelease: true, yanked: false }, - '1.9.0': { prerelease: false, yanked: false }, + '2.0.0rc1': { prerelease: true, yanked: false, files: { foobar: {} } }, + '1.9.0': { prerelease: false, yanked: false, files: { foobar: {} } }, }, false ).expect('1.9.0') given( { - '2.0.0rc1': { prerelease: true, yanked: false }, - '1.9.0': { prerelease: false, yanked: false }, + '2.0.0rc1': { prerelease: true, yanked: false, files: { foobar: {} } }, + '1.9.0': { prerelease: false, yanked: false, files: { foobar: {} } }, }, true ).expect('2.0.0rc1') given( { - '2.0.0': { prerelease: false, yanked: true }, - '1.9.0': { prerelease: false, yanked: false }, + '2.0.0': { prerelease: false, yanked: true, files: { foobar: {} } }, + '1.9.0': { prerelease: false, yanked: false, files: { foobar: {} } }, }, false ).expect('1.9.0') given( { - '2.0.0': { prerelease: false, yanked: false }, - '1.9.0': { prerelease: false, yanked: false }, + '2.0.0': { prerelease: false, yanked: false, files: {} }, + '1.9.0': { prerelease: false, yanked: false, files: { foobar: {} } }, + }, + false + ).expect('1.9.0') + given( + { + '2.0.0': { prerelease: false, yanked: false, files: { foobar: {} } }, + '1.9.0': { prerelease: false, yanked: false, files: { foobar: {} } }, }, false ).expect('2.0.0') given( { - '2.0.0rc2': { prerelease: true, yanked: false }, - '2.0.0rc1': { prerelease: true, yanked: false }, + '2.0.0rc2': { prerelease: true, yanked: false, files: { foobar: {} } }, + '2.0.0rc1': { prerelease: true, yanked: false, files: { foobar: {} } }, }, false ).expect('2.0.0rc2') @@ -45,7 +52,10 @@ describe('PiWheelsVersion', function () { it('throws `no releases` InvalidResponse if no versions', function () { expect(() => PiWheelsVersion.transform( - { '1.0.0': { prerelease: false, yanked: true } }, + { + '1.0.1': { prerelease: false, yanked: false, files: {} }, + '1.0.0': { prerelease: false, yanked: true, files: { foobar: {} } }, + }, false ) )