1
1
import test from 'ava' ;
2
- import { posix as path } from 'path' ;
2
+ import path , { posix } from 'path' ;
3
3
import { rollup } from 'rollup' ;
4
4
import alias from '../dist/rollup-plugin-alias' ;
5
5
import slash from 'slash' ;
6
6
7
- const DIRNAME = slash ( __dirname . replace ( / ^ ( [ A - Z ] : ) / , '' ) ) ;
7
+ const normalizePath = ( pathToNormalize ) => slash ( pathToNormalize . replace ( / ^ ( [ A - Z ] : ) / , '' ) ) ;
8
+ const DIRNAME = normalizePath ( __dirname ) ;
8
9
9
10
test ( t => {
10
11
t . is ( typeof alias , 'function' ) ;
@@ -103,9 +104,9 @@ test('Test for the resolve property', t => {
103
104
resolve : [ '.js' , '.jsx' ] ,
104
105
} ) ;
105
106
106
- const resolved = result . resolveId ( 'ember' , path . resolve ( DIRNAME , './files/index.js' ) ) ;
107
+ const resolved = result . resolveId ( 'ember' , posix . resolve ( DIRNAME , './files/index.js' ) ) ;
107
108
108
- t . is ( resolved , path . resolve ( DIRNAME , './files/folder/hipster.jsx' ) ) ;
109
+ t . is ( resolved , posix . resolve ( DIRNAME , './files/folder/hipster.jsx' ) ) ;
109
110
} ) ;
110
111
111
112
test ( t => {
@@ -123,9 +124,46 @@ test(t => {
123
124
resolve : './i/am/a/local/file' ,
124
125
} ) ;
125
126
126
- const resolved = result . resolveId ( 'resolve' , path . resolve ( DIRNAME , './files/index.js' ) ) ;
127
+ const resolved = result . resolveId ( 'resolve' , posix . resolve ( DIRNAME , './files/index.js' ) ) ;
127
128
128
- t . is ( resolved , path . resolve ( DIRNAME , './files/i/am/a/local/file.js' ) ) ;
129
+ t . is ( resolved , posix . resolve ( DIRNAME , './files/i/am/a/local/file.js' ) ) ;
130
+ } ) ;
131
+
132
+ // this test with old behaviour will fail on windows and pass on Uinx-Like platforms
133
+ test ( 'Platform path.resolve(\'file-without-extension\') aliasing' , t => {
134
+ // this what used in React and Vue
135
+ const result = alias ( {
136
+ test : path . resolve ( './files/aliasMe' ) ,
137
+ } ) ;
138
+
139
+ const resolved = result . resolveId ( 'test' , posix . resolve ( DIRNAME , './files/index.js' ) ) ;
140
+
141
+ t . is ( resolved , path . resolve ( './files/aliasMe.js' ) ) ;
142
+ } ) ;
143
+
144
+ // this test with old behaviour will fail on windows and Uinx-Like platforms
145
+ test ( 'Windows absolute path aliasing' , t => {
146
+ const result = alias ( {
147
+ resolve : 'E:\\react\\node_modules\\fbjs\\lib\\warning' ,
148
+ } ) ;
149
+
150
+ const resolved = result . resolveId ( 'resolve' , posix . resolve ( DIRNAME , './files/index.js' ) ) ;
151
+
152
+ t . is (
153
+ normalizePath ( resolved ) ,
154
+ normalizePath ( 'E:\\react\\node_modules\\fbjs\\lib\\warning.js' )
155
+ ) ;
156
+ } ) ;
157
+ // test alaising with resolved paths
158
+ test ( 'Platform path.resolve(\'file-with.ext\') aliasing' , t => {
159
+ const result = alias ( {
160
+ test : path . resolve ( './files/folder/hipster.jsx' ) ,
161
+ resolve : [ '.js' , '.jsx' ] ,
162
+ } ) ;
163
+
164
+ const resolved = result . resolveId ( 'test' , posix . resolve ( DIRNAME , './files/index.js' ) ) ;
165
+
166
+ t . is ( resolved , path . resolve ( './files/folder/hipster.jsx' ) ) ;
129
167
} ) ;
130
168
131
169
// Tests in Rollup
0 commit comments