@@ -14,8 +14,16 @@ const VERSIONS = {
14
14
nvmrc : '4.2.6' ,
15
15
nodeVersion : '4.3.2' ,
16
16
current : versions . node ,
17
+ NVM : {
18
+ carbon : '8.17.0' ,
19
+ node : '12.16.2' ,
20
+ personal : '12.12.0' ,
21
+ default : '10.10.0' ,
22
+ } ,
17
23
}
18
24
25
+ const NVM_OPTS = { nvmDir : `${ FIXTURES_DIR } /nvm-dir` }
26
+
19
27
each (
20
28
[
21
29
{ versionRange : '.' , fixture : 'naverc' , result : VERSIONS . nave } ,
28
36
{ versionRange : '.' , fixture : 'mixed' , result : VERSIONS . nodeVersion } ,
29
37
{ versionRange : '.' , opts : { cwd : '/' } , result : VERSIONS . current } ,
30
38
{ versionRange : '_' , result : VERSIONS . current } ,
39
+ { versionRange : 'node' , opts : NVM_OPTS , result : VERSIONS . NVM . node } ,
40
+ { versionRange : 'stable' , opts : NVM_OPTS , result : VERSIONS . NVM . node } ,
41
+ { versionRange : 'latest' , opts : NVM_OPTS , result : VERSIONS . NVM . node } ,
42
+ { versionRange : 'default' , opts : NVM_OPTS , result : VERSIONS . NVM . default } ,
43
+ {
44
+ versionRange : 'personal-alias' ,
45
+ opts : NVM_OPTS ,
46
+ result : VERSIONS . NVM . personal ,
47
+ } ,
48
+ { versionRange : 'lts/carbon' , opts : NVM_OPTS , result : VERSIONS . NVM . carbon } ,
49
+ // implicit lts prefix for lts node codenames
50
+ { versionRange : 'carbon' , opts : NVM_OPTS , result : VERSIONS . NVM . carbon } ,
51
+ // recursive resolving
52
+ { versionRange : 'carbon14' , opts : NVM_OPTS , result : VERSIONS . NVM . carbon } ,
31
53
] ,
32
54
( { title } , { versionRange, opts, fixture, result } ) => {
33
55
test ( `Resolve aliases | ${ title } ` , async ( t ) => {
39
61
} ,
40
62
)
41
63
64
+ test ( 'Resolve nvm aliases ignored if no NVM_DIR configured' , async ( t ) => {
65
+ await t . throwsAsync (
66
+ ( ) =>
67
+ normalizeNodeVersion ( 'default' , {
68
+ nvmDir : '' ,
69
+ } ) ,
70
+ { message : 'Invalid Node version: default' } ,
71
+ )
72
+ } )
73
+
74
+ test ( 'Resolved nvm alias fails and do not loop infinitely if alias cycle is present' , async ( t ) => {
75
+ const AVA_TIMEOUT_CYCLE = 2000
76
+ t . timeout ( AVA_TIMEOUT_CYCLE )
77
+ await t . throwsAsync ( ( ) => normalizeNodeVersion ( 'cycle' , NVM_OPTS ) , {
78
+ message : 'Nvm alias cycle detected cycle -> ping -> pong -> ping' ,
79
+ } )
80
+ } )
81
+
82
+ test ( 'Resolve nvm aliases fails if nvm alias does not exists' , async ( t ) => {
83
+ await t . throwsAsync ( ( ) => normalizeNodeVersion ( 'awol' , NVM_OPTS ) )
84
+ } )
85
+
42
86
test . serial ( 'Option cwd defaults to the current directory' , async ( t ) => {
43
87
const currentCwd = getCwd ( )
44
88
chdir ( `${ FIXTURES_DIR } /nvmrc` )
0 commit comments