Files
renovate/lib/modules/datasource/rust-version/parse.spec.ts
T
Tobias Bieniek cd8446e70f feat(datasource): Implement rust-version data source (#39529)
* feat(rust-version): Implement `rust-version` data source

* refactor(rust-version): pass `URL` directly to `getText()`
2026-04-29 15:23:44 +00:00

125 lines
3.4 KiB
TypeScript

import { parseManifestUrl } from './parse.ts';
describe('modules/datasource/rust-version/parse', () => {
describe('parseManifestUrl', () => {
it('parses nightly URL', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2025-11-24/channel-rust-nightly.toml',
);
expect(result).toEqual({
date: '2025-11-24',
version: 'nightly',
});
});
it('parses versioned release URL', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2024-10-17/channel-rust-1.82.0.toml',
);
expect(result).toEqual({
date: '2024-10-17',
version: '1.82.0',
});
});
it('parses beta versioned URL', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2025-01-15/channel-rust-1.83.0-beta.5.toml',
);
expect(result).toEqual({
date: '2025-01-15',
version: '1.83.0-beta.5',
});
});
it('parses stable channel URL', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2025-11-24/channel-rust-stable.toml',
);
expect(result).toEqual({
date: '2025-11-24',
version: 'stable',
});
});
it('parses beta channel URL', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2025-11-24/channel-rust-beta.toml',
);
expect(result).toEqual({
date: '2025-11-24',
version: 'beta',
});
});
it('parses URL with https protocol', () => {
const result = parseManifestUrl(
'https://static.rust-lang.org/dist/2025-11-24/channel-rust-nightly.toml',
);
expect(result).toEqual({
date: '2025-11-24',
version: 'nightly',
});
});
it('parses URL with http protocol', () => {
const result = parseManifestUrl(
'http://static.rust-lang.org/dist/2025-11-24/channel-rust-nightly.toml',
);
expect(result).toEqual({
date: '2025-11-24',
version: 'nightly',
});
});
it('returns null for URL without date', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/channel-rust-nightly.toml',
);
expect(result).toBeNull();
});
it('returns null for URL without channel-rust pattern', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2025-11-24/something-else.toml',
);
expect(result).toBeNull();
});
it('returns null for empty string', () => {
const result = parseManifestUrl('');
expect(result).toBeNull();
});
it('returns null for malformed date', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2025-13-45/channel-rust-nightly.toml',
);
expect(result).toEqual({
date: '2025-13-45',
version: 'nightly',
});
});
it('parses URL with different domain', () => {
const result = parseManifestUrl(
'example.com/archives/2025-11-24/channel-rust-1.82.0.toml',
);
expect(result).toEqual({
date: '2025-11-24',
version: '1.82.0',
});
});
it('parses URL with complex version', () => {
const result = parseManifestUrl(
'static.rust-lang.org/dist/2020-06-18/channel-rust-1.44.1.toml',
);
expect(result).toEqual({
date: '2020-06-18',
version: '1.44.1',
});
});
});
});