@@ -8,54 +8,45 @@ import { tmpdir } from "../fixture/fixture"
88
99Log . init ( { print : false } )
1010
11- const bunModule = await import ( "bun" )
11+ const gitModule = await import ( "../../src/util/git" )
12+ const originalGit = gitModule . git
13+
1214type Mode = "none" | "rev-list-fail" | "top-fail" | "common-dir-fail"
1315let mode : Mode = "none"
1416
15- function render ( parts : TemplateStringsArray , vals : unknown [ ] ) {
16- return parts . reduce ( ( acc , part , i ) => `${ acc } ${ part } ${ i < vals . length ? String ( vals [ i ] ) : "" } ` , "" )
17- }
18-
19- function fakeShell ( output : { exitCode : number ; stdout : string ; stderr : string } ) {
20- const result = {
21- exitCode : output . exitCode ,
22- stdout : Buffer . from ( output . stdout ) ,
23- stderr : Buffer . from ( output . stderr ) ,
24- text : async ( ) => output . stdout ,
25- }
26- const shell = {
27- quiet : ( ) => shell ,
28- nothrow : ( ) => shell ,
29- cwd : ( ) => shell ,
30- env : ( ) => shell ,
31- text : async ( ) => output . stdout ,
32- then : ( onfulfilled : ( value : typeof result ) => unknown , onrejected ?: ( reason : unknown ) => unknown ) =>
33- Promise . resolve ( result ) . then ( onfulfilled , onrejected ) ,
34- catch : ( onrejected : ( reason : unknown ) => unknown ) => Promise . resolve ( result ) . catch ( onrejected ) ,
35- finally : ( onfinally : ( ( ) => void ) | undefined | null ) => Promise . resolve ( result ) . finally ( onfinally ) ,
36- }
37- return shell
38- }
39-
40- mock . module ( "bun" , ( ) => ( {
41- ...bunModule ,
42- $ : ( parts : TemplateStringsArray , ...vals : unknown [ ] ) => {
43- const cmd = render ( parts , vals ) . replaceAll ( "," , " " ) . replace ( / \s + / g, " " ) . trim ( )
17+ mock . module ( "../../src/util/git" , ( ) => ( {
18+ git : ( args : string [ ] , opts : { cwd : string ; env ?: Record < string , string > } ) => {
19+ const cmd = [ "git" , ...args ] . join ( " " )
4420 if (
4521 mode === "rev-list-fail" &&
4622 cmd . includes ( "git rev-list" ) &&
4723 cmd . includes ( "--max-parents=0" ) &&
4824 cmd . includes ( "--all" )
4925 ) {
50- return fakeShell ( { exitCode : 128 , stdout : "" , stderr : "fatal" } )
26+ return Promise . resolve ( {
27+ exitCode : 128 ,
28+ text : ( ) => Promise . resolve ( "" ) ,
29+ stdout : Buffer . from ( "" ) ,
30+ stderr : Buffer . from ( "fatal" ) ,
31+ } )
5132 }
5233 if ( mode === "top-fail" && cmd . includes ( "git rev-parse" ) && cmd . includes ( "--show-toplevel" ) ) {
53- return fakeShell ( { exitCode : 128 , stdout : "" , stderr : "fatal" } )
34+ return Promise . resolve ( {
35+ exitCode : 128 ,
36+ text : ( ) => Promise . resolve ( "" ) ,
37+ stdout : Buffer . from ( "" ) ,
38+ stderr : Buffer . from ( "fatal" ) ,
39+ } )
5440 }
5541 if ( mode === "common-dir-fail" && cmd . includes ( "git rev-parse" ) && cmd . includes ( "--git-common-dir" ) ) {
56- return fakeShell ( { exitCode : 128 , stdout : "" , stderr : "fatal" } )
42+ return Promise . resolve ( {
43+ exitCode : 128 ,
44+ text : ( ) => Promise . resolve ( "" ) ,
45+ stdout : Buffer . from ( "" ) ,
46+ stderr : Buffer . from ( "fatal" ) ,
47+ } )
5748 }
58- return ( bunModule . $ as any ) ( parts , ... vals )
49+ return originalGit ( args , opts )
5950 } ,
6051} ) )
6152
0 commit comments