@@ -247,6 +247,49 @@ describe("perform-backmerge", () => {
247247 verify ( mockedGit . unstash ( ) ) . calledAfter ( pushAction ) ;
248248 } ) ;
249249
250+ it ( "stash and unstash with empty stash" , async ( ) => {
251+ const mockedGit = mock ( Git ) ;
252+ const mockedLogger = mock ( NullLogger ) ;
253+ when ( mockedGit . checkout ( anyString ( ) ) ) . thenResolve ( ) ;
254+ when ( mockedGit . configFetchAllRemotes ( ) ) . thenResolve ( ) ;
255+ when ( mockedGit . getModifiedFiles ( ) )
256+ . thenReturn ( new Promise < string [ ] > ( resolve => resolve ( [ ] ) ) ) ;
257+ when ( mockedGit . fetch ( ) ) . thenResolve ( ) ;
258+ when ( mockedGit . commit ( anyString ( ) ) ) . thenResolve ( ) ;
259+ when ( mockedGit . rebase ( anyString ( ) ) ) . thenResolve ( ) ;
260+ const makeError = require ( 'execa/lib/error' )
261+ when ( mockedGit . unstash ( ) ) . thenThrow ( makeError ( {
262+ stderr : 'No stash entries found.' ,
263+ parsed : { options :{ timeout : 0 } }
264+ } ) ) ;
265+ when ( mockedGit . push ( anyString ( ) , anyString ( ) , anything ( ) ) ) . thenResolve ( ) ;
266+
267+ const context = { logger : instance ( mockedLogger ) , branch : { name : 'master' } , options : { repositoryUrl : 'my-repo' } } as Context ;
268+
269+ await performBackmerge (
270+ instance ( mockedGit ) ,
271+ {
272+ backmergeBranches : [ 'develop' ] ,
273+ clearWorkspace : true ,
274+ restoreWorkspace : true
275+ } ,
276+ context
277+ ) ;
278+ verify ( mockedLogger . log ( 'Performing back-merge into develop branch "develop".' ) ) . once ( ) ;
279+ verify ( mockedGit . checkout ( 'master' ) ) . once ( ) ;
280+ verify ( mockedGit . configFetchAllRemotes ( ) ) . once ( ) ;
281+ verify ( mockedGit . fetch ( context . options ! . repositoryUrl ) ) . once ( ) ;
282+
283+ const checkoutDevelopAction = mockedGit . checkout ( 'develop' ) ;
284+ verify ( mockedGit . stash ( ) ) . calledBefore ( checkoutDevelopAction ) ;
285+ verify ( checkoutDevelopAction ) . once ( ) ;
286+ verify ( mockedGit . rebase ( 'master' ) ) . once ( ) ;
287+
288+ const pushAction = mockedGit . push ( 'my-repo' , 'develop' , false )
289+ verify ( pushAction ) . once ( ) ;
290+ verify ( mockedGit . unstash ( ) ) . calledAfter ( pushAction ) ;
291+ } ) ;
292+
250293 it ( "merge as backmerge strategy" , async ( ) => {
251294 const mockedGit = mock ( Git ) ;
252295 const mockedLogger = mock ( NullLogger ) ;
0 commit comments