BREAKING CHANGE: only support egg >= 4.0.0 the first app on egg v4 https://github.com/eggjs/egg/issues/3644
206 lines
11 KiB
TypeScript
206 lines
11 KiB
TypeScript
import { strict as assert } from 'node:assert';
|
|
import { app, mock } from '@eggjs/mock/bootstrap';
|
|
import { TestUtil } from '../../../../test/TestUtil';
|
|
import { BugVersionService } from '../../../../app/core/service/BugVersionService';
|
|
import { DistRepository } from '../../../../app/repository/DistRepository';
|
|
import { PackageRepository } from '../../../../app/repository/PackageRepository';
|
|
import { BugVersion } from '../../../../app/core/entity/BugVersion';
|
|
import { Package } from '../../../../app/core/entity/Package';
|
|
import { PackageVersion } from '../../../../app/core/entity/PackageVersion';
|
|
import { Dist } from '../../../../app/core/entity/Dist';
|
|
|
|
describe('test/core/service/BugVersionService/fixPackageBugVersion.test.ts', () => {
|
|
let bugVersionService: BugVersionService;
|
|
let bugVersion: BugVersion;
|
|
let distRepository: DistRepository;
|
|
let packageRepository: PackageRepository;
|
|
|
|
beforeEach(async () => {
|
|
bugVersionService = await app.getEggObject(BugVersionService);
|
|
distRepository = await app.getEggObject(DistRepository);
|
|
packageRepository = await app.getEggObject(PackageRepository);
|
|
bugVersion = new BugVersion({
|
|
faker: {
|
|
'6.6.6': {
|
|
version: '5.5.3',
|
|
reason: 'Please use https://github.com/MilosPaunovic/community-faker instead',
|
|
},
|
|
},
|
|
colors: {
|
|
'1.4.44-liberty-2': {
|
|
version: '1.4.0',
|
|
reason: 'https://github.com/Marak/colors.js/issues/285',
|
|
},
|
|
'1.4.1': {
|
|
version: '1.4.0',
|
|
reason: 'https://github.com/Marak/colors.js/issues/285',
|
|
},
|
|
'1.4.2': {
|
|
version: '1.4.0',
|
|
reason: 'https://github.com/Marak/colors.js/issues/289',
|
|
},
|
|
'1.4.3': {
|
|
version: '199.0.0',
|
|
reason: 'https://github.com/Marak/colors.js/issues/289',
|
|
},
|
|
},
|
|
});
|
|
mock(distRepository, 'findPackageVersionManifest', async (_, version) => {
|
|
if (version !== '199.0.0') {
|
|
return {
|
|
name: 'colors',
|
|
version: '1.4.0',
|
|
devDependencies: {
|
|
eslint: '^5.2.0',
|
|
'eslint-config-google': '^0.11.0',
|
|
},
|
|
dist: {
|
|
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==',
|
|
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78',
|
|
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.0.tgz',
|
|
fileCount: 21,
|
|
unpackedSize: 39506,
|
|
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
|
|
},
|
|
engines: {
|
|
node: '>=0.1.90',
|
|
},
|
|
};
|
|
}
|
|
});
|
|
mock(packageRepository, 'findPackage', async () => {
|
|
return new Package({
|
|
updatedAt: new Date(),
|
|
createdAt: new Date(),
|
|
scope: '',
|
|
name: 'colors',
|
|
packageId: '0',
|
|
isPrivate: false,
|
|
description: '',
|
|
});
|
|
});
|
|
mock(packageRepository, 'findPackageVersion', async () => {
|
|
const dist = new Dist({
|
|
updatedAt: new Date(),
|
|
createdAt: new Date(),
|
|
distId: '0',
|
|
name: 'mock_dist',
|
|
path: 'mock_dist',
|
|
size: 0,
|
|
shasum: 'mock_shasum',
|
|
integrity: 'mock_integrity',
|
|
});
|
|
return new PackageVersion({
|
|
updatedAt: new Date(),
|
|
createdAt: new Date(),
|
|
packageId: '0',
|
|
packageVersionId: '0',
|
|
version: '1.0.0',
|
|
abbreviatedDist: dist,
|
|
manifestDist: dist,
|
|
tarDist: dist,
|
|
readmeDist: dist,
|
|
publishTime: new Date(),
|
|
paddingVersion: null,
|
|
isPreRelease: null,
|
|
});
|
|
});
|
|
});
|
|
|
|
afterEach(async () => {
|
|
mock.restore();
|
|
await TestUtil.truncateDatabase();
|
|
});
|
|
|
|
it('should fix all bug versions with advice', async () => {
|
|
const manifest = {
|
|
name: 'colors',
|
|
version: '1.4.2',
|
|
devDependencies: {
|
|
eslint: '^5.2.0',
|
|
'eslint-config-google': '^0.11.0',
|
|
},
|
|
dist: {
|
|
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==-bug-version',
|
|
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78-bug-version',
|
|
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.2.tgz',
|
|
fileCount: 21,
|
|
unpackedSize: 39506,
|
|
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
|
|
},
|
|
engines: {
|
|
node: '>=0.1.90',
|
|
},
|
|
};
|
|
const newManifest = await bugVersionService.fixPackageBugVersion(bugVersion, 'colors', manifest);
|
|
assert.deepStrictEqual(newManifest, {
|
|
name: 'colors',
|
|
version: '1.4.2',
|
|
deprecated: '[WARNING] Use 1.4.0 instead of 1.4.2, reason: https://github.com/Marak/colors.js/issues/289',
|
|
devDependencies: {
|
|
eslint: '^5.2.0',
|
|
'eslint-config-google': '^0.11.0',
|
|
},
|
|
dist: {
|
|
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==',
|
|
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78',
|
|
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.0.tgz',
|
|
fileCount: 21,
|
|
unpackedSize: 39506,
|
|
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
|
|
},
|
|
engines: {
|
|
node: '>=0.1.90',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('should should not fix if not a bug version', async () => {
|
|
const manifest = {
|
|
name: 'colors',
|
|
version: '99.4.2',
|
|
devDependencies: {
|
|
eslint: '^5.2.0',
|
|
'eslint-config-google': '^0.11.0',
|
|
},
|
|
dist: {
|
|
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==-bug-version',
|
|
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78-bug-version',
|
|
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.2.tgz',
|
|
fileCount: 21,
|
|
unpackedSize: 39506,
|
|
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
|
|
},
|
|
engines: {
|
|
node: '>=0.1.90',
|
|
},
|
|
};
|
|
const newManifest = await bugVersionService.fixPackageBugVersion(bugVersion, 'colors', manifest);
|
|
assert(newManifest === manifest);
|
|
});
|
|
|
|
it('should should not fix if fixed version not exits', async () => {
|
|
const manifest = {
|
|
name: 'colors',
|
|
version: '1.4.3',
|
|
devDependencies: {
|
|
eslint: '^5.2.0',
|
|
'eslint-config-google': '^0.11.0',
|
|
},
|
|
dist: {
|
|
integrity: 'sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==-bug-version',
|
|
shasum: 'c50491479d4c1bdaed2c9ced32cf7c7dc2360f78-bug-version',
|
|
tarball: 'https://registry.npmjs.org/colors/-/colors-1.4.2.tgz',
|
|
fileCount: 21,
|
|
unpackedSize: 39506,
|
|
'npm-signature': '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiAfACRA9TVsSAnZWagAA7gMP/1eUoL2YZSoe4XH3p7o5\n2NRhGJuE+81Kwbl/2+HWvlWGXxTo1vLYWGVAfBVYtEuUdnPlMOpCEyqdB8Ng\nqMr9acH/8ZkHKRyNYu9GeDLWWUFx8wv94qpcmnuqgp+24X3gBhiS7hnG6UJh\nL4kKUSycTGp0FFWPQ4tdpBuvC6PDGTowPfHh/oj0RosHygRcW6F4V5HDyws1\nQTnuE3k5vBhhzKQQ4oktGCUuQATqsg89lDDSw5hjThBf2y5ZrpF6qLVoiLgm\noMrEF3vDOIyf63naUmj/3qzBYFfQZU3wlGyaRfNxdqNooKW2QOb/x2XFtP46\nYibCl2xhGA0JsinmaAclbLfDkZSZs1bsjpj2xUOFJjQOeMReeS2PzCgHRBJy\nT9ow3X6MbRblOcWuX8Bbhr8kg9Av1xx2A9mtJ7G/DVuHLHBQOTro2l/qIb5M\nf9Z/++j4P1lMMKBp5jHvCRUNq9jgWdSaT9NHo1RvNKuEZM9mxyzyygcidj5w\ngaCGQ5G5kFOKAgmN1LvRYai5P31waqJ+Wr96g6XRfA9SBeeeX12v481jpKQm\nVZ6khQeII1VUgbadjWWegRAobEkW5JXLjdZbISZeIBahs5bOWPFiAFXowf4O\n7Hygdj0xtzkH/sWJeKUCxnzX6VN/mtu+QkPfjGBgDHNL4gtZsGDAizcsFuly\nDWUs\r\n=9VVk\r\n-----END PGP SIGNATURE-----\r\n',
|
|
},
|
|
engines: {
|
|
node: '>=0.1.90',
|
|
},
|
|
};
|
|
const newManifest = await bugVersionService.fixPackageBugVersion(bugVersion, 'colors', manifest);
|
|
assert(newManifest === manifest);
|
|
});
|
|
});
|