@@ -88,16 +88,39 @@ describe('useGitBranchName', () => {
8888 expect ( result . current ) . toBeUndefined ( ) ;
8989 } ) ;
9090
91- it ( 'should return undefined if branch is HEAD (detached state)' , async ( ) => {
91+ it ( 'should return short commit hash if branch is HEAD (detached state)' , async ( ) => {
9292 ( mockExec as MockedFunction < typeof mockExec > ) . mockImplementation (
93- ( _command , _options , callback ) => {
94- callback ?.( null , 'HEAD\n' , '' ) ;
93+ ( command , _options , callback ) => {
94+ if ( command === 'git rev-parse --abbrev-ref HEAD' ) {
95+ callback ?.( null , 'HEAD\n' , '' ) ;
96+ } else if ( command === 'git rev-parse --short HEAD' ) {
97+ callback ?.( null , 'a1b2c3d\n' , '' ) ;
98+ }
99+ return new EventEmitter ( ) as ChildProcess ;
100+ } ,
101+ ) ;
102+
103+ const { result, rerender } = renderHook ( ( ) => useGitBranchName ( CWD ) ) ;
104+ await act ( async ( ) => {
105+ vi . runAllTimers ( ) ;
106+ rerender ( ) ;
107+ } ) ;
108+ expect ( result . current ) . toBe ( 'a1b2c3d' ) ;
109+ } ) ;
110+
111+ it ( 'should return undefined if branch is HEAD and getting commit hash fails' , async ( ) => {
112+ ( mockExec as MockedFunction < typeof mockExec > ) . mockImplementation (
113+ ( command , _options , callback ) => {
114+ if ( command === 'git rev-parse --abbrev-ref HEAD' ) {
115+ callback ?.( null , 'HEAD\n' , '' ) ;
116+ } else if ( command === 'git rev-parse --short HEAD' ) {
117+ callback ?.( new Error ( 'Git error' ) , '' , 'error output' ) ;
118+ }
95119 return new EventEmitter ( ) as ChildProcess ;
96120 } ,
97121 ) ;
98122
99123 const { result, rerender } = renderHook ( ( ) => useGitBranchName ( CWD ) ) ;
100- expect ( result . current ) . toBeUndefined ( ) ;
101124 await act ( async ( ) => {
102125 vi . runAllTimers ( ) ;
103126 rerender ( ) ;
0 commit comments