mirror of
https://github.com/neovim/neovim.git
synced 2025-12-15 19:05:40 +00:00
fix(vim.version): improve construction of '<=a.b.c' and '>a.b.c' ranges
Problem: `vim.version.range('<=a.b.c')` is not precise when it comes to
its right hand side. This is due to version ranges using exclusive right
hand side. While `vim.version.range('>a.b.c')` is not precise when it
comes to its left hand side because left hand sides are inclusive.
Solution: For '>=a.b.c' increase `to` from 'a.b.c' to the smallest
reasonable version that is bigger than 'a.b.c'. For '<a.b.c' do the same
for `from`.
More proper solution is an explicit control over inclusivity of version
range sides, but it has more side effects and requires design decisions.
This commit is contained in:
@@ -58,10 +58,10 @@ describe('version', function()
|
||||
['1.2.3'] = { from = { 1, 2, 3 }, to = { 1, 2, 3 } },
|
||||
['1.2'] = { from = { 1, 2, 0 }, to = { 1, 3, 0 } },
|
||||
['=1.2.3'] = { from = { 1, 2, 3 }, to = { 1, 2, 3 } },
|
||||
['>1.2.3'] = { from = { 1, 2, 4 } },
|
||||
['>1.2.3'] = { from = '1.2.4-0' },
|
||||
['>=1.2.3'] = { from = { 1, 2, 3 } },
|
||||
['<1.2.3'] = { from = { 0, 0, 0 }, to = { 1, 2, 3 } },
|
||||
['<=1.2.3'] = { from = { 0, 0, 0 }, to = { 1, 2, 4 } },
|
||||
['<=1.2.3'] = { from = { 0, 0, 0 }, to = '1.2.4-0' },
|
||||
['~1.2.3'] = { from = { 1, 2, 3 }, to = { 1, 3, 0 } },
|
||||
['^1.2.3'] = { from = { 1, 2, 3 }, to = { 2, 0, 0 } },
|
||||
['^0.2.3'] = { from = { 0, 2, 3 }, to = { 0, 3, 0 } },
|
||||
@@ -125,6 +125,17 @@ describe('version', function()
|
||||
assert(vim.version.range('>0.10'):has('0.12.0-dev'))
|
||||
assert(not vim.version.range('>=0.12'):has('0.12.0-dev'))
|
||||
|
||||
assert(not vim.version.range('<=1.2.3'):has('1.2.4-alpha'))
|
||||
assert(not vim.version.range('<=1.2.3-0'):has('1.2.3'))
|
||||
assert(not vim.version.range('<=1.2.3-alpha'):has('1.2.3'))
|
||||
assert(not vim.version.range('<=1.2.3-1'):has('1.2.4-0'))
|
||||
assert(vim.version.range('<=1.2.3-0'):has('1.2.3-0'))
|
||||
assert(vim.version.range('<=1.2.3-alpha'):has('1.2.3-alpha'))
|
||||
|
||||
assert(vim.version.range('>1.2.3'):has('1.2.4-0'))
|
||||
assert(vim.version.range('>1.2.3'):has('1.2.4-alpha'))
|
||||
assert(vim.version.range('>1.2.3-0'):has('1.2.3-1'))
|
||||
|
||||
local range_alpha = vim.version.range('1.2.3-alpha')
|
||||
eq(vim.version.range(tostring(range_alpha)), range_alpha)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user