Files
Sebastian Poxhofer e9c9c92e10 test(oxlint): enable vitest/consistent-test-it (#44554)
refactor(oxlint): enable vitest/consistent-test-it

Enforce `it` over `test` in spec files via
vitest/consistent-test-it (fn: "it"), matching repo convention.
Renamed all 52 pre-existing `test(`/`test.each` usages across
13 spec files to `it(`/`it.each` using oxlint --fix.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:28:52 +00:00

299 lines
15 KiB
TypeScript

import rustReleaseChannel from './index.ts';
describe('modules/versioning/rust-release-channel/index', () => {
it.each`
input | expected
${'stable'} | ${true}
${'beta'} | ${true}
${'nightly'} | ${true}
${'1.82.0'} | ${true}
${'1.82'} | ${true}
${'1.83.0-beta.5'} | ${true}
${'1.83.0-beta'} | ${true}
${'nightly-2025-11-24'} | ${true}
${'stable-x86_64-pc-windows-msvc'} | ${true}
${''} | ${false}
${'invalid'} | ${false}
${'1.82.0.0'} | ${false}
${'a.b.c'} | ${false}
`('isValid("$input") === $expected', ({ input, expected }) => {
expect(rustReleaseChannel.isValid(input)).toBe(expected);
});
it.each`
input | expected
${'1.82.0'} | ${true}
${'1.83.0-beta.5'} | ${true}
${'nightly-2025-11-24'} | ${true}
${'stable'} | ${false}
${'beta'} | ${false}
${'nightly'} | ${false}
${'1.82'} | ${false}
${'1.83.0-beta'} | ${false}
${undefined} | ${false}
${null} | ${false}
${'invalid'} | ${false}
`('isVersion("$input") === $expected', ({ input, expected }) => {
expect(rustReleaseChannel.isVersion(input)).toBe(expected);
});
it.each`
input | expected
${'1.82.0'} | ${true}
${'1.83.0-beta.5'} | ${true}
${'nightly-2025-11-24'} | ${true}
${'stable'} | ${false}
${'beta'} | ${false}
${'nightly'} | ${false}
${'1.82'} | ${false}
${'1.83.0-beta'} | ${false}
`('isSingleVersion("$input") === $expected', ({ input, expected }) => {
expect(rustReleaseChannel.isSingleVersion(input)).toBe(expected);
});
it.each`
version | expected
${'1.82.0'} | ${true}
${'1.0.0'} | ${true}
${'2.5.10'} | ${true}
${'1.83.0-beta.5'} | ${false}
${'1.83.0-beta'} | ${false}
${'nightly-2025-11-24'} | ${false}
${'stable'} | ${false}
${'1.82'} | ${false}
${'invalid'} | ${false}
`('isStable("$version") === $expected', ({ version, expected }) => {
expect(rustReleaseChannel.isStable(version)).toBe(expected);
});
it.each`
a | b | expected
${'1.82'} | ${'1.82'} | ${true}
${'1.82.0'} | ${'1.82.0'} | ${true}
${'1.83.0-beta'} | ${'1.83.0-beta'} | ${true}
${'1.83.0-beta.5'} | ${'1.83.0-beta.5'} | ${true}
${'nightly-2025-11-24'} | ${'nightly-2025-11-24'} | ${true}
${'stable'} | ${'stable'} | ${true}
${'invalid'} | ${'invalid'} | ${false}
${'1.82.0'} | ${'1.83.0'} | ${false}
${'1.83.0-beta.5'} | ${'1.83.0-beta.1'} | ${false}
${'nightly-2025-11-24'} | ${'nightly-2025-11-23'} | ${false}
`('equals("$a", "$b") === $expected', ({ a, b, expected }) => {
expect(rustReleaseChannel.equals(a, b)).toBe(expected);
});
it.each`
a | b | expected
${'nightly-2025-11-24'} | ${'1.82.0'} | ${true}
${'nightly-2025-11-24'} | ${'nightly-2025-11-23'} | ${true}
${'nightly-2025-11-24'} | ${'nightly-2024-11-24'} | ${true}
${'nightly-2025-11-24'} | ${'nightly-2025-10-24'} | ${true}
${'1.83.0'} | ${'1.82.0'} | ${true}
${'1.83.0-beta.5'} | ${'1.83.0-beta.1'} | ${true}
${'1.83.0'} | ${'1.83.0-beta.1'} | ${true}
${'1.84.0-beta.1'} | ${'1.83.0-beta.1'} | ${true}
${'2.0.0'} | ${'1.99.0'} | ${true}
${'1.83'} | ${'1.82'} | ${true}
${'1.82.1'} | ${'1.82'} | ${true}
${'1.82.0'} | ${'1.83.0'} | ${false}
${'1.82'} | ${'1.83'} | ${false}
${'1.82'} | ${'1.82.0'} | ${false}
${'1.82'} | ${'1.82.1'} | ${false}
${'1.83.0-beta.1'} | ${'1.83.0-beta.5'} | ${false}
${'nightly-2025-11-23'} | ${'nightly-2025-11-24'} | ${false}
${'nightly-2024-11-24'} | ${'nightly-2025-11-24'} | ${false}
${'nightly-2025-10-24'} | ${'nightly-2025-11-24'} | ${false}
${'1.82.0'} | ${'nightly-2025-11-24'} | ${false}
${'1.83.0-beta.1'} | ${'1.83.0'} | ${false}
${'1.99.0'} | ${'2.0.0'} | ${false}
`('isGreaterThan("$a", "$b") === $expected', ({ a, b, expected }) => {
expect(rustReleaseChannel.isGreaterThan(a, b)).toBe(expected);
});
it.each`
a | b | expected
${'1.82.0'} | ${'1.82.0'} | ${0}
${'1.83.0-beta.5'} | ${'1.83.0-beta.5'} | ${0}
${'nightly-2025-11-24'} | ${'nightly-2025-11-24'} | ${0}
${'foo'} | ${'foo'} | ${0}
${'1.83.0'} | ${'1.82.0'} | ${1}
${'2.0.0'} | ${'1.99.0'} | ${1}
${'1.83.0-beta.5'} | ${'1.83.0-beta.1'} | ${4}
${'1.83.0'} | ${'1.83.0-beta.1'} | ${1}
${'nightly-2025-11-24'} | ${'1.82.0'} | ${1}
${'nightly-2025-11-24'} | ${'nightly-2025-11-23'} | ${1}
${'foo'} | ${'bar'} | ${1}
${'1.82.0'} | ${'1.83.0'} | ${-1}
${'1.99.0'} | ${'2.0.0'} | ${-1}
${'1.83.0-beta.1'} | ${'1.83.0-beta.5'} | ${-4}
${'1.83.0-beta.1'} | ${'1.83.0'} | ${-1}
${'1.82.0'} | ${'nightly-2025-11-24'} | ${-1}
${'nightly-2025-11-23'} | ${'nightly-2025-11-24'} | ${-1}
${'bar'} | ${'foo'} | ${-1}
`('sortVersions("$a", "$b") === $expected', ({ a, b, expected }) => {
expect(rustReleaseChannel.sortVersions(a, b)).toBe(expected);
});
it.each`
version | expected
${'1.82.0'} | ${1}
${'1.0.0'} | ${1}
${'2.5.10'} | ${2}
${'1.83.0-beta.5'} | ${1}
${'nightly-2025-11-24'} | ${1}
${'nightly-2014-12-18'} | ${0}
${'stable'} | ${1}
${'invalid'} | ${null}
`('getMajor("$version") === $expected', ({ version, expected }) => {
expect(rustReleaseChannel.getMajor(version)).toBe(expected);
});
it.each`
version | expected
${'1.82.0'} | ${82}
${'1.0.0'} | ${0}
${'2.5.10'} | ${5}
${'1.83.0-beta.5'} | ${83}
${'nightly-2025-11-24'} | ${null}
${'invalid'} | ${null}
`('getMinor("$version") === $expected', ({ version, expected }) => {
expect(rustReleaseChannel.getMinor(version)).toBe(expected);
});
it.each`
version | expected
${'1.82.0'} | ${0}
${'1.0.0'} | ${0}
${'2.5.10'} | ${10}
${'1.83.0-beta.5'} | ${0}
${'1.82'} | ${null}
${'nightly-2025-11-24'} | ${null}
${'invalid'} | ${null}
`('getPatch("$version") === $expected', ({ version, expected }) => {
expect(rustReleaseChannel.getPatch(version)).toBe(expected);
});
it.each`
version | range | expected
${'1.82.0'} | ${'stable'} | ${true}
${'1.82.0'} | ${'1.82'} | ${true}
${'1.82.1'} | ${'1.82'} | ${true}
${'1.82.0'} | ${'1.82.0'} | ${true}
${'1.83.0-beta.5'} | ${'beta'} | ${true}
${'1.83.0-beta.5'} | ${'1.83.0-beta'} | ${true}
${'1.83.0-beta.1'} | ${'1.83.0-beta.1'} | ${true}
${'nightly-2025-11-24'} | ${'nightly'} | ${true}
${'nightly-2025-11-24'} | ${'nightly-2025-11-24'} | ${true}
${'1.83.0-beta.5'} | ${'stable'} | ${false}
${'1.82.0'} | ${'beta'} | ${false}
${'1.82.0'} | ${'nightly'} | ${false}
${'1.83.0'} | ${'1.82'} | ${false}
${'1.82.0'} | ${'1.83.0-beta'} | ${false}
${'nightly-2025-11-24'} | ${'stable'} | ${false}
${'nightly-2025-11-24'} | ${'1.82'} | ${false}
${'1.82.1'} | ${'1.82.0'} | ${false}
${'invalid'} | ${'1.82'} | ${false}
${'1.82.0'} | ${'invalid'} | ${false}
`(
'matches("$version", "$range") === $expected',
({ version, range, expected }) => {
expect(rustReleaseChannel.matches(version, range)).toBe(expected);
},
);
it.each`
version | current | expected
${'nightly-2025-11-24'} | ${'nightly-2025-11-23'} | ${true}
${'nightly-2025-11-25'} | ${'nightly-2025-11-24'} | ${true}
${'1.83.0'} | ${'1.82.0'} | ${true}
${'1.83.0-beta.5'} | ${'1.82.0'} | ${true}
${'1.83.0'} | ${'1.82.0-beta.1'} | ${true}
${'nightly-2025-11-24'} | ${'1.82.0'} | ${false}
${'1.82.0'} | ${'nightly-2025-11-24'} | ${false}
${'1.82.0'} | ${undefined} | ${true}
${'invalid'} | ${'1.82.0'} | ${false}
${'1.82.0'} | ${'invalid'} | ${false}
${'1.83.0-x86_64-unknown-linux-gnu'} | ${'1.82.0-x86_64-unknown-linux-gnu'} | ${true}
${'1.83.0-x86_64-unknown-linux-gnu'} | ${'1.82.0-aarch64-apple-darwin'} | ${false}
${'1.83.0-x86_64-unknown-linux-gnu'} | ${'1.82.0'} | ${false}
${'1.83.0'} | ${'1.82.0-x86_64-unknown-linux-gnu'} | ${false}
${'nightly-2025-11-24-x86_64-unknown-linux-gnu'} | ${'nightly-2025-11-23-x86_64-unknown-linux-gnu'} | ${true}
${'nightly-2025-11-24-x86_64-unknown-linux-gnu'} | ${'nightly-2025-11-23-aarch64-apple-darwin'} | ${false}
`(
'isCompatible("$version", "$current") === $expected',
({ version, current, expected }) => {
expect(rustReleaseChannel.isCompatible(version, current)).toBe(expected);
},
);
it.each`
versions | range | expected
${['1.82.0', '1.83.0', '1.84.0']} | ${'stable'} | ${'1.84.0'}
${['1.82.0', '1.83.0-beta.1', '1.83.0-beta.5']} | ${'beta'} | ${'1.83.0-beta.5'}
${['1.82.0', '1.82.1', '1.83.0']} | ${'1.82'} | ${'1.82.1'}
${['1.83.0-beta.1', '1.83.0-beta.5', '1.84.0-beta.10']} | ${'1.83.0-beta'} | ${'1.83.0-beta.5'}
${['nightly-2025-11-22', 'nightly-2025-11-23', '1.82.0']} | ${'nightly'} | ${'nightly-2025-11-23'}
${['1.82.0', '1.83.0-beta.5', 'nightly-2025-11-24']} | ${'stable'} | ${'1.82.0'}
${['1.82.0', '1.83.0']} | ${'beta'} | ${null}
${[]} | ${'stable'} | ${null}
`(
'getSatisfyingVersion($versions, "$range") === $expected',
({ versions, range, expected }) => {
expect(rustReleaseChannel.getSatisfyingVersion(versions, range)).toBe(
expected,
);
},
);
it.each`
versions | range | expected
${['1.82.0', '1.83.0', '1.84.0']} | ${'stable'} | ${'1.82.0'}
${['1.82.0', '1.83.0-beta.1', '1.83.0-beta.5']} | ${'beta'} | ${'1.83.0-beta.1'}
${['1.82.0', '1.82.1', '1.83.0']} | ${'1.82'} | ${'1.82.0'}
${['1.82.0-beta.1', '1.83.0-beta.5', '1.83.0-beta.10']} | ${'1.83.0-beta'} | ${'1.83.0-beta.5'}
${['nightly-2025-11-22', 'nightly-2025-11-23', '1.82.0']} | ${'nightly'} | ${'nightly-2025-11-22'}
${['1.82.0', '1.83.0-beta.5', 'nightly-2025-11-24']} | ${'stable'} | ${'1.82.0'}
${['1.82.0', '1.83.0']} | ${'beta'} | ${null}
${[]} | ${'stable'} | ${null}
`(
'minSatisfyingVersion($versions, "$range") === $expected',
({ versions, range, expected }) => {
expect(rustReleaseChannel.minSatisfyingVersion(versions, range)).toBe(
expected,
);
},
);
it.each`
currentValue | rangeStrategy | newVersion | expected
${'stable'} | ${'replace'} | ${'1.83.0'} | ${'stable'}
${'beta'} | ${'replace'} | ${'1.83.0-beta.5'} | ${'beta'}
${'nightly'} | ${'replace'} | ${'nightly-2025-11-24'} | ${'nightly'}
${'nightly-2025-11-23'} | ${'replace'} | ${'nightly-2025-11-24'} | ${'nightly-2025-11-24'}
${'1.82'} | ${'replace'} | ${'1.83.0'} | ${'1.83'}
${'1.82.0'} | ${'replace'} | ${'1.83.0'} | ${'1.83.0'}
${'1.83.0-beta'} | ${'replace'} | ${'1.83.0-beta.5'} | ${'1.83.0-beta'}
${'1.83.0-beta.1'} | ${'replace'} | ${'1.83.0-beta.5'} | ${'1.83.0-beta.5'}
${'1.83.0-beta'} | ${'replace'} | ${'1.84.0-beta.5'} | ${'1.84.0-beta'}
${'1.83.0-beta'} | ${'replace'} | ${'1.84-beta.1'} | ${'1.84.0-beta'}
${'stable'} | ${'pin'} | ${'1.83.0'} | ${'1.83.0'}
${'beta'} | ${'pin'} | ${'1.83.0-beta.5'} | ${'1.83.0-beta.5'}
${'nightly'} | ${'pin'} | ${'nightly-2025-11-24'} | ${'nightly-2025-11-24'}
${'1.82'} | ${'pin'} | ${'1.82.0'} | ${'1.82.0'}
${'1.82.0'} | ${'pin'} | ${'1.82.0'} | ${'1.82.0'}
${'invalid'} | ${'replace'} | ${'1.83.0'} | ${null}
${'1.82.0'} | ${'replace'} | ${'invalid'} | ${null}
`(
'getNewValue({ currentValue: "$currentValue", rangeStrategy: "$rangeStrategy", newVersion: "$newVersion" }) === $expected',
({ currentValue, rangeStrategy, newVersion, expected }) => {
expect(
rustReleaseChannel.getNewValue({
currentValue,
rangeStrategy,
newVersion,
}),
).toBe(expected);
},
);
});