From 5f03bae41ca1fc63a9e607bed99c277249e9774e Mon Sep 17 00:00:00 2001 From: Tomasz N Date: Tue, 12 Mar 2019 18:49:48 +0100 Subject: Fix parsing the third part of version string (#2355) * Fix parsing the third part of version string * Add test * Test: fix checking cached version --- autoload/ale/semver.vim | 4 ++-- test/test_semver_utils.vader | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/autoload/ale/semver.vim b/autoload/ale/semver.vim index 8f549c9f..5f1b46fc 100644 --- a/autoload/ale/semver.vim +++ b/autoload/ale/semver.vim @@ -14,10 +14,10 @@ function! ale#semver#GetVersion(executable, version_lines) abort let l:version = get(s:version_cache, a:executable, []) for l:line in a:version_lines - let l:match = matchlist(l:line, '\v(\d+)\.(\d+)\.?(\d?)') + let l:match = matchlist(l:line, '\v(\d+)\.(\d+)(\.(\d+))?') if !empty(l:match) - let l:version = [l:match[1] + 0, l:match[2] + 0, l:match[3] + 0] + let l:version = [l:match[1] + 0, l:match[2] + 0, l:match[4] + 0] let s:version_cache[a:executable] = l:version break diff --git a/test/test_semver_utils.vader b/test/test_semver_utils.vader index cd0381dd..62483505 100644 --- a/test/test_semver_utils.vader +++ b/test/test_semver_utils.vader @@ -15,7 +15,8 @@ Execute(GetVersion should return an empty list when no vesrion can be found): Execute(GetVersion should cache the version): AssertEqual [], ale#semver#GetVersion('dummy', []) AssertEqual [3, 4, 7], ale#semver#GetVersion('dummy', ['Version 3.4.7']) - AssertEqual [3, 4, 7], ale#semver#GetVersion('dummy', []) + AssertEqual [3, 4, 17], ale#semver#GetVersion('dummy', ['Version 3.4.17']) + AssertEqual [3, 4, 17], ale#semver#GetVersion('dummy', []) Execute(GetVersion should tolerate missing patch numbers): " This goes against the semver spec, but we handle it anyway. -- cgit v1.2.3