@@ -122,6 +122,9 @@ describe('ref', () => {
122122 case 'git show -s --pretty=%D' :
123123 result = 'HEAD, tag: 8.0.0' ;
124124 break ;
125+ case 'git for-each-ref --format=%(refname) --points-at HEAD refs/tags/' :
126+ result = 'refs/tags/8.0.0' ;
127+ break ;
125128 }
126129 return Promise . resolve ( {
127130 stdout : result ,
@@ -144,6 +147,9 @@ describe('ref', () => {
144147 case 'git show -s --pretty=%D' :
145148 result = 'grafted, HEAD, tag: 8.0.0' ;
146149 break ;
150+ case 'git for-each-ref --format=%(refname) --points-at HEAD refs/tags/' :
151+ result = 'refs/tags/8.0.0' ;
152+ break ;
147153 }
148154 return Promise . resolve ( {
149155 stdout : result ,
@@ -420,6 +426,9 @@ describe('ref', () => {
420426 case 'git show -s --pretty=%D' :
421427 result = 'HEAD, tag: v8.0.0, origin/release-branch' ;
422428 break ;
429+ case 'git for-each-ref --format=%(refname) --points-at HEAD refs/tags/' :
430+ result = 'refs/tags/v8.0.0' ;
431+ break ;
423432 }
424433 return Promise . resolve ( {
425434 stdout : result ,
@@ -442,6 +451,9 @@ describe('ref', () => {
442451 case 'git show -s --pretty=%D' :
443452 result = 'grafted, HEAD, tag: v8.0.0, origin/release-branch' ;
444453 break ;
454+ case 'git for-each-ref --format=%(refname) --points-at HEAD refs/tags/' :
455+ result = 'refs/tags/v8.0.0' ;
456+ break ;
445457 }
446458 return Promise . resolve ( {
447459 stdout : result ,
@@ -452,6 +464,31 @@ describe('ref', () => {
452464 const ref = await Git . ref ( ) ;
453465 expect ( ref ) . toEqual ( 'refs/tags/v8.0.0' ) ;
454466 } ) ;
467+
468+ it ( 'returns mocked detached tag ref when tag name contains a comma' , async ( ) => {
469+ vi . spyOn ( Exec , 'getExecOutput' ) . mockImplementation ( ( cmd , args ) : Promise < ExecOutput > => {
470+ const fullCmd = `${ cmd } ${ args ?. join ( ' ' ) } ` ;
471+ let result = '' ;
472+ switch ( fullCmd ) {
473+ case 'git branch --show-current' :
474+ result = '' ;
475+ break ;
476+ case 'git show -s --pretty=%D' :
477+ result = 'HEAD, tag: release,with-comma, origin/release-branch' ;
478+ break ;
479+ case 'git for-each-ref --format=%(refname) --points-at HEAD refs/tags/' :
480+ result = 'refs/tags/release,with-comma' ;
481+ break ;
482+ }
483+ return Promise . resolve ( {
484+ stdout : result ,
485+ stderr : '' ,
486+ exitCode : 0
487+ } ) ;
488+ } ) ;
489+ const ref = await Git . ref ( ) ;
490+ expect ( ref ) . toEqual ( 'refs/tags/release,with-comma' ) ;
491+ } ) ;
455492} ) ;
456493
457494describe ( 'fullCommit' , ( ) => {
0 commit comments