File tree Expand file tree Collapse file tree 3 files changed +23
-3
lines changed
Expand file tree Collapse file tree 3 files changed +23
-3
lines changed Original file line number Diff line number Diff line change 11deps /
2+ test /temp /
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ const settings = require('./settings').settings;
88const Error = require ( './error' ) ;
99
1010const versionRegex =
11- / ^ ( ( [ \w - ] + ) \/ ) ? ( ( v ? ( \d + ( \. \d + ( \. \d + ) ? ) ? ( - [ 0 - 9 A - Z a - z . - ] + ) ? ) ) | ( [ a - z ] [ a - z _ - ] [ 0 - 9 a - z _ - ] * ) ) ( \/ ( ( x 8 6 ) | ( 3 2 ) | ( ( x ) ? 6 4 ) | ( a r m \w * ) | ( p p c \w * ) | ( s 3 9 0 x ) ) ) ? $ / i;
11+ / ^ ( ( [ \w - ] + ) \/ ) ? ( ( v ? ( \d + ( \. \d + ( \. \d + ) ? ) ? ( - [ 0 - 9 A - Z a - z . - ] + ) ? ) ) | ( [ a - z ] [ a - z _ - ] [ 0 - 9 a - z _ - ] * | \* ) ) ( \/ ( ( x 8 6 ) | ( 3 2 ) | ( ( x ) ? 6 4 ) | ( a r m \w * ) | ( p p c \w * ) | ( s 3 9 0 x ) ) ) ? $ / i;
1212
1313class NodeVersion {
1414 constructor ( remoteName , semanticVersion , arch ) {
@@ -103,8 +103,19 @@ class NodeVersion {
103103 remoteName = 'default' ;
104104 }
105105
106- if ( remoteName === 'default' && settings . remotes ) {
107- remoteName = settings . remotes [ 'default' ] || 'node' ;
106+ if ( settings . remotes ) {
107+ if ( remoteName === 'default' ) {
108+ remoteName = settings . remotes [ 'default' ] || 'node' ;
109+ } else if ( remoteName === 'lts' && ! semanticVersion ) {
110+ // Interpret an 'lts' remote name as 'node' to enable compatibility
111+ // with NVM-style LTS version strings such as "lts/boron".
112+ remoteName = settings . remotes [ 'default' ] || 'node' ;
113+ if ( label === '*' ) {
114+ // In NVM, "lts/*" means "latest LTS".
115+ // The NVS equivalent is "node/lts".
116+ label = 'lts' ;
117+ }
118+ }
108119 }
109120
110121 if ( ( ! settings . remotes || ! settings . remotes [ remoteName ] ) &&
Original file line number Diff line number Diff line change @@ -166,4 +166,12 @@ test('GetBinaryNameFromVersion', t => {
166166 t . is ( NodeVersion . getBinaryNameFromVersion ( '7.8' ) , 'node' ) ;
167167} ) ;
168168
169+ test ( 'LTS versions' , t => {
170+ t . is ( NodeVersion . parse ( 'lts' ) . toString ( ) , 'test/lts' ) ;
171+ t . is ( NodeVersion . parse ( 'lts/*' ) . toString ( ) , 'test/lts' ) ;
172+ t . is ( NodeVersion . parse ( 'lts/boron' ) . toString ( ) , 'test/boron' ) ;
173+ t . throws ( ( ) => NodeVersion . parse ( 'lts/6.7.8' ) ,
174+ ( e ) => e . message . indexOf ( 'Remote name not found' ) >= 0 ) ;
175+ } ) ;
176+
169177test . todo ( 'Match' ) ;
You can’t perform that action at this time.
0 commit comments