1
0
mirror of https://github.com/badges/shields.git synced 2025-04-18 19:44:04 +03:00
shields/services/pypi/pypi-version.tester.js
2023-10-13 15:40:57 +00:00

53 lines
1.2 KiB
JavaScript

import Joi from 'joi'
import { createServiceTester } from '../tester.js'
import { isSemver } from '../test-validators.js'
export const t = await createServiceTester()
const isPsycopg2Version = Joi.string().regex(/^v([0-9][.]?)+$/)
/*
Note:
Not all project on PyPi follow SemVer
Versions strings like
- 2.7.3.2
- 2.0rc1
- 0.1.30b10
are perfectly legal.
We'll run this test against a project that follows SemVer...
*/
t.create('version (semver)').get('/requests.json').expectBadge({
label: 'pypi',
message: isSemver,
})
// ..whereas this project does not follow SemVer
t.create('version (not semver)').get('/psycopg2.json').expectBadge({
label: 'pypi',
message: isPsycopg2Version,
})
t.create('version (invalid)')
.get('/not-a-package.json')
.expectBadge({ label: 'pypi', message: 'package or version not found' })
t.create('no trove classifiers')
.get('/mapi.json')
.intercept(nock =>
nock('https://pypi.org')
.get('/pypi/mapi/json')
.reply(200, {
info: {
version: '1.2.3',
license: 'foo',
classifiers: [],
},
urls: [],
}),
)
.expectBadge({
label: 'pypi',
message: 'v1.2.3',
})