@@ -188,6 +188,64 @@ public void noDuplicateImportEntryIsWrittenIntoImportsFile()
188
188
count );
189
189
}
190
190
191
+ @ Test
192
+ public void directoryImportEntryIsResolvedAsIndexJS () throws Exception {
193
+
194
+ createImport ("./src/directory/index.js" ,
195
+ "import { xx } from './sub1.js';" );
196
+ createImport ("./src/directory/sub1.js" , "" );
197
+ createImport ("./src/main-template.js" ,
198
+ "import 'xx' from './directory';" );
199
+
200
+ // create themed modules
201
+ createImport ("./theme/myTheme/directory/index.js" , "" );
202
+ createImport ("./theme/myTheme/directory/sub1.js" , "" );
203
+ createImport ("./theme/myTheme/main-template.js" , "" );
204
+
205
+ updater .execute ();
206
+
207
+ String content = FileUtils .readFileToString (importsFile ,
208
+ Charset .defaultCharset ());
209
+ MatcherAssert .assertThat (content , CoreMatchers .allOf (
210
+ CoreMatchers .containsString (
211
+ "import 'Frontend/theme/myTheme/main-template.js';" ),
212
+ CoreMatchers .containsString (
213
+ "import 'Frontend/theme/myTheme/directory';" ),
214
+ CoreMatchers .containsString (
215
+ "import 'Frontend/theme/myTheme/directory/sub1.js';" )));
216
+ }
217
+
218
+ @ Test
219
+ public void directoryImportEntry_avoidRecursion () throws Exception {
220
+
221
+ createImport ("./src/directory/index.js" ,
222
+ "import { xx } from '../import2.js';" );
223
+ createImport ("./src/import1.js" , "import { xx } from './directory/';" );
224
+ createImport ("./src/import2.js" , "import 'xx' from './import1.js';" );
225
+ createImport ("./src/main-template.js" ,
226
+ "import 'xx' from './directory';" );
227
+
228
+ // create themed modules
229
+ createImport ("./theme/myTheme/directory" , "" );
230
+ createImport ("./theme/myTheme/import1.js" , "" );
231
+ createImport ("./theme/myTheme/import2.js" , "" );
232
+ createImport ("./theme/myTheme/main-template.js" , "" );
233
+
234
+ updater .execute ();
235
+
236
+ String content = FileUtils .readFileToString (importsFile ,
237
+ Charset .defaultCharset ());
238
+ MatcherAssert .assertThat (content , CoreMatchers .allOf (
239
+ CoreMatchers .containsString (
240
+ "import 'Frontend/theme/myTheme/main-template.js';" ),
241
+ CoreMatchers .containsString (
242
+ "import 'Frontend/theme/myTheme/directory';" ),
243
+ CoreMatchers .containsString (
244
+ "import 'Frontend/theme/myTheme/import1.js';" ),
245
+ CoreMatchers .containsString (
246
+ "import 'Frontend/theme/myTheme/import2.js';" )));
247
+ }
248
+
191
249
private void createImport (String path , String content ) throws IOException {
192
250
File newFile = resolveImportFile (frontendDirectory , nodeModulesPath ,
193
251
path );
0 commit comments