11import { expect } from 'chai' ;
22import type { Completion } from './filter' ;
3- import { wrapField , getFilteredCompletions } from './filter' ;
3+ import { wrapField , getFilteredCompletions , ALL_CONSTANTS } from './filter' ;
4+ import semver from 'semver' ;
5+ import util from 'util' ;
46
57describe ( 'completer' , function ( ) {
68 const simpleConstants : Completion [ ] = [
@@ -14,6 +16,16 @@ describe('completer', function () {
1416 version : '>=2.0.0 <3.0.0 || >=3.5.0' ,
1517 meta : 'expr:set' ,
1618 } ,
19+ {
20+ value : 'woof' ,
21+ version : '>=0.200.300 <0.200.301' ,
22+ meta : 'accumulator' ,
23+ } ,
24+ {
25+ value : 'honk' ,
26+ version : '999.999.999' ,
27+ meta : 'variable:system' ,
28+ } ,
1729 ] ;
1830
1931 function getFilteredValues (
@@ -30,7 +42,13 @@ describe('completer', function () {
3042 'Foo' ,
3143 'bar' ,
3244 ] ) ;
33- expect ( getFilteredValues ( { serverVersion : '0.0.1-alpha0' } ) ) . to . deep . eq ( [
45+ } ) ;
46+
47+ it ( 'should clean up version before comparing' , function ( ) {
48+ expect ( getFilteredValues ( { serverVersion : '0.200.300-alpha0' } ) ) . to . deep . eq (
49+ [ 'foo' , 'Foo' , 'woof' ]
50+ ) ;
51+ expect ( getFilteredValues ( { serverVersion : '0.0.0---what???' } ) ) . to . deep . eq ( [
3452 'foo' ,
3553 'Foo' ,
3654 ] ) ;
@@ -44,14 +62,18 @@ describe('completer', function () {
4462 ) ;
4563 } ) ;
4664
47- it ( 'should ignore version when version is not valid' , function ( ) {
48- expect ( getFilteredValues ( { serverVersion : '1' } ) ) . to . deep . eq ( [
65+ it ( 'should use default version when provided version is not valid' , function ( ) {
66+ expect (
67+ getFilteredValues ( { serverVersion : 'one dot one dot zero' } )
68+ ) . to . deep . eq ( [ 'foo' , 'Foo' , 'bar' , 'buz' , 'barbar' , 'meow' , 'honk' ] ) ;
69+ expect ( getFilteredValues ( { serverVersion : '1.2' } ) ) . to . deep . eq ( [
4970 'foo' ,
5071 'Foo' ,
5172 'bar' ,
5273 'buz' ,
5374 'barbar' ,
5475 'meow' ,
76+ 'honk' ,
5577 ] ) ;
5678 } ) ;
5779
@@ -170,4 +192,21 @@ describe('completer', function () {
170192 ) ;
171193 } ) ;
172194 } ) ;
195+
196+ describe ( 'all completions' , function ( ) {
197+ it ( 'should have valid semver version or range specified' , function ( ) {
198+ ALL_CONSTANTS . forEach ( ( { name, version } ) => {
199+ const errMessage = `Expected completion ${ util . inspect ( {
200+ name,
201+ version,
202+ } ) } to have valid version`;
203+
204+ try {
205+ expect ( semver . valid ( version ) ) . to . not . eq ( null , errMessage ) ;
206+ } catch {
207+ expect ( semver . validRange ( version ) ) . to . not . eq ( null , errMessage ) ;
208+ }
209+ } ) ;
210+ } ) ;
211+ } ) ;
173212} ) ;
0 commit comments