@@ -144,14 +144,19 @@ module.exports = function(file, api, options) {
144144 function parseModule ( p ) {
145145 let calleeName = p . node . expression . callee . name ;
146146 // Find the moduleName and the module's options
147- let moduleName , subject , options , hasCustomSubject ;
147+ let moduleName , subject , options , hasCustomSubject , isNestedModule ;
148148 let calleeArguments = p . node . expression . arguments . slice ( ) ;
149149 let lastArgument = calleeArguments [ calleeArguments . length - 1 ] ;
150150 if ( lastArgument . type === 'ObjectExpression' ) {
151151 options = calleeArguments . pop ( ) ;
152152 }
153- moduleName = calleeArguments [ 1 ] || calleeArguments [ 0 ] ;
154- subject = calleeArguments [ 0 ] ;
153+ if ( calleeArguments [ 1 ] && j . match ( calleeArguments [ 1 ] , { type : 'FunctionExpression' } ) ) {
154+ isNestedModule = true ;
155+ moduleName = calleeArguments [ 0 ] ;
156+ } else {
157+ moduleName = calleeArguments [ 1 ] || calleeArguments [ 0 ] ;
158+ subject = calleeArguments [ 0 ] ;
159+ }
155160
156161 let setupIdentifier = calleeName === 'module' ? null : 'setupTest' ;
157162 if ( options ) {
@@ -171,7 +176,7 @@ module.exports = function(file, api, options) {
171176 hasCustomSubject = options . properties . some ( p => p . key . name === 'subject' ) ;
172177 }
173178
174- return [ moduleName , options , setupIdentifier , subject , hasCustomSubject ] ;
179+ return [ moduleName , options , setupIdentifier , subject , hasCustomSubject , isNestedModule ] ;
175180 }
176181
177182 function updateModuleForToNestedModule ( ) {
@@ -198,7 +203,13 @@ module.exports = function(file, api, options) {
198203 }
199204
200205 function createModule ( p ) {
201- let [ moduleName , options , setupType , subject , hasCustomSubject ] = parseModule ( p ) ;
206+ let [ moduleName , options , setupType , subject , hasCustomSubject , isNestedModule ] = parseModule (
207+ p
208+ ) ;
209+
210+ if ( isNestedModule ) {
211+ return null ;
212+ }
202213
203214 let needsHooks = false ;
204215 let moduleSetupExpression ;
@@ -447,6 +458,9 @@ module.exports = function(file, api, options) {
447458 let expression = expressionPath . node ;
448459 if ( isModuleDefinition ( expressionPath ) ) {
449460 let result = createModule ( expressionPath ) ;
461+ if ( result === null ) {
462+ return ;
463+ }
450464 expressionPath . replace ( result [ 0 ] ) ;
451465 currentModuleCallbackBody = result [ 1 ] ;
452466 currentTestType = result [ 2 ] ;
0 commit comments