mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-21 02:35:23 -04:00
fix(backend): Use regex to parse version
Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
parent
69a7a1ae69
commit
7b2d541cac
2 changed files with 112 additions and 40 deletions
|
@ -5,23 +5,80 @@
|
|||
*/
|
||||
import { promises as fs } from 'fs';
|
||||
|
||||
import { getServerVersionFromPackageJson } from './serverVersion';
|
||||
import {
|
||||
clearCachedVersion,
|
||||
getServerVersionFromPackageJson,
|
||||
} from './serverVersion';
|
||||
|
||||
it('getServerVersionFromPackageJson works', async () => {
|
||||
const major = 2;
|
||||
const minor = 0;
|
||||
const patch = 0;
|
||||
const preRelease = 'dev';
|
||||
/* eslint-disable @typescript-eslint/require-await*/
|
||||
jest.spyOn(fs, 'readFile').mockImplementationOnce(async (_) => {
|
||||
return `{
|
||||
"version": "${major}.${minor}.${patch}"
|
||||
}
|
||||
`;
|
||||
jest.mock('fs', () => ({
|
||||
promises: {
|
||||
readFile: jest.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
describe('getServerVersionFromPackageJson', () => {
|
||||
afterEach(() => {
|
||||
clearCachedVersion();
|
||||
});
|
||||
|
||||
it('parses a complete version string', async () => {
|
||||
const major = 2;
|
||||
const minor = 0;
|
||||
const patch = 0;
|
||||
const preRelease = 'dev';
|
||||
jest
|
||||
.spyOn(fs, 'readFile')
|
||||
.mockImplementationOnce(
|
||||
async (_) =>
|
||||
`{ "version": "${major}.${minor}.${patch}-${preRelease}" }`,
|
||||
);
|
||||
const serverVersion = await getServerVersionFromPackageJson();
|
||||
expect(serverVersion.major).toEqual(major);
|
||||
expect(serverVersion.minor).toEqual(minor);
|
||||
expect(serverVersion.patch).toEqual(patch);
|
||||
expect(serverVersion.preRelease).toEqual(preRelease);
|
||||
});
|
||||
|
||||
it('parses a version string without pre release', async () => {
|
||||
const major = 2;
|
||||
const minor = 0;
|
||||
const patch = 0;
|
||||
jest
|
||||
.spyOn(fs, 'readFile')
|
||||
.mockImplementationOnce(
|
||||
async (_) => `{ "version": "${major}.${minor}.${patch}" }`,
|
||||
);
|
||||
const serverVersion = await getServerVersionFromPackageJson();
|
||||
expect(serverVersion.major).toEqual(major);
|
||||
expect(serverVersion.minor).toEqual(minor);
|
||||
expect(serverVersion.patch).toEqual(patch);
|
||||
expect(serverVersion.preRelease).toEqual(undefined);
|
||||
});
|
||||
|
||||
it("throws an error if package.json can't be found", async () => {
|
||||
jest.spyOn(fs, 'readFile').mockImplementationOnce(async (_) => {
|
||||
throw new Error('package.json not found');
|
||||
});
|
||||
await expect(getServerVersionFromPackageJson()).rejects.toThrow(
|
||||
'package.json not found',
|
||||
);
|
||||
});
|
||||
|
||||
it("throws an error if version isn't present in package.json", async () => {
|
||||
jest.spyOn(fs, 'readFile').mockImplementationOnce(async (_) => `{ }`);
|
||||
await expect(getServerVersionFromPackageJson()).rejects.toThrow(
|
||||
'No version found in root package.json',
|
||||
);
|
||||
});
|
||||
|
||||
it('throws an error if the version is malformed', async () => {
|
||||
jest
|
||||
.spyOn(fs, 'readFile')
|
||||
.mockImplementationOnce(
|
||||
async (_) => `{ "version": "TwoDotZeroDotZero" }`,
|
||||
);
|
||||
await expect(getServerVersionFromPackageJson()).rejects.toThrow(
|
||||
'Version from package.json is malformed. Got TwoDotZeroDotZero',
|
||||
);
|
||||
});
|
||||
const serverVersion = await getServerVersionFromPackageJson();
|
||||
expect(serverVersion.major).toEqual(major);
|
||||
expect(serverVersion.minor).toEqual(minor);
|
||||
expect(serverVersion.patch).toEqual(patch);
|
||||
expect(serverVersion.preRelease).toEqual(preRelease);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue