mirror of
https://github.com/0x5eal/semver-luau.git
synced 2025-01-19 10:48:05 +00:00
fix: return error on invalid ordinal with points
Previously, if the ordinal contained dots (like 1.2.3-beta.3.4.5), although it was invalid, an error would not be returned, which was problematic. This has now been fixed. Test cases are also included to prevent future regressions.
This commit is contained in:
parent
ab6e993879
commit
fe321dda7b
2 changed files with 136 additions and 108 deletions
|
@ -293,11 +293,9 @@ function Semver.parse(ver: string): SemverResult<SemverImpl>
|
||||||
-- b) The component has build metadata after prerelease info
|
-- b) The component has build metadata after prerelease info
|
||||||
-- Here, we handle both those cases
|
-- Here, we handle both those cases
|
||||||
|
|
||||||
local potentialOrdinalNumber, potentialBuildMetadata = string.match(components[4], "(%d)+(.*)")
|
local potentialOrdinalNumber, potentialBuildMetadata = string.match(components[4], "(.*)+(.*)")
|
||||||
if potentialOrdinalNumber == nil then
|
if potentialOrdinalNumber == nil then
|
||||||
return badPrereleaseType(components[4])
|
return badPrereleaseType(components[4])
|
||||||
-- TODO: If there are components after the 4th index, we
|
|
||||||
-- should error
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if potentialBuildMetadata ~= nil then
|
if potentialBuildMetadata ~= nil then
|
||||||
|
@ -315,6 +313,14 @@ function Semver.parse(ver: string): SemverResult<SemverImpl>
|
||||||
return badPrereleaseType(components[4])
|
return badPrereleaseType(components[4])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif #components > 4 then
|
||||||
|
-- The ordinal component was bad, we should error
|
||||||
|
local badPrerelease = ""
|
||||||
|
for i = 4, #components do
|
||||||
|
badPrerelease ..= "." .. components[i]
|
||||||
|
end
|
||||||
|
|
||||||
|
return badPrereleaseType(badPrerelease)
|
||||||
end
|
end
|
||||||
|
|
||||||
prereleaseOrdinal = Option.Some(ordinalNum :: number) :: Option<number>
|
prereleaseOrdinal = Option.Some(ordinalNum :: number) :: Option<number>
|
||||||
|
|
|
@ -117,6 +117,28 @@ return function()
|
||||||
got = "symbol",
|
got = "symbol",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Test with extra symbols in ordinal
|
||||||
|
res = Semver.parse("1.2.3-beta.3.4.5")
|
||||||
|
check.is_true(res:isErr())
|
||||||
|
check.table.contains(res:unwrapErr(), {
|
||||||
|
kind = {
|
||||||
|
id = "InvalidPrereleaseOrdinalType",
|
||||||
|
expected = "number",
|
||||||
|
got = "symbol",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Test with extra symbols in ordinal and build metadata
|
||||||
|
res = Semver.parse("1.2.3-beta.3.4.5+build.1732213169")
|
||||||
|
check.is_true(res:isErr())
|
||||||
|
check.table.contains(res:unwrapErr(), {
|
||||||
|
kind = {
|
||||||
|
id = "InvalidPrereleaseOrdinalType",
|
||||||
|
expected = "number",
|
||||||
|
got = "symbol",
|
||||||
|
},
|
||||||
|
})
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue