File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed
Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -49,21 +49,32 @@ describe("parseRuntimeString", () => {
4949 const result = parseRuntimeString ( "ssh hostname" , workspaceName ) ;
5050 // When no user is specified, uses current user (process.env.USER)
5151 const expectedUser = process . env . USER ?? "user" ;
52+ const expectedHomeDir = expectedUser === "root" ? "/root" : `/home/${ expectedUser } ` ;
5253 expect ( result ) . toEqual ( {
5354 type : "ssh" ,
5455 host : "hostname" ,
55- srcBaseDir : `/home/ ${ expectedUser } /cmux` ,
56+ srcBaseDir : `${ expectedHomeDir } /cmux` ,
5657 } ) ;
5758 } ) ;
5859
5960 test ( "accepts SSH with hostname.domain only" , ( ) => {
6061 const result = parseRuntimeString ( "ssh dev.example.com" , workspaceName ) ;
6162 // When no user is specified, uses current user (process.env.USER)
6263 const expectedUser = process . env . USER ?? "user" ;
64+ const expectedHomeDir = expectedUser === "root" ? "/root" : `/home/${ expectedUser } ` ;
6365 expect ( result ) . toEqual ( {
6466 type : "ssh" ,
6567 host : "dev.example.com" ,
66- srcBaseDir : `/home/${ expectedUser } /cmux` ,
68+ srcBaseDir : `${ expectedHomeDir } /cmux` ,
69+ } ) ;
70+ } ) ;
71+
72+ test ( "uses /root for root user" , ( ) => {
73+ const result = parseRuntimeString ( "ssh root@hostname" , workspaceName ) ;
74+ expect ( result ) . toEqual ( {
75+ type : "ssh" ,
76+ host : "root@hostname" ,
77+ srcBaseDir : "/root/cmux" ,
6778 } ) ;
6879 } ) ;
6980
Original file line number Diff line number Diff line change @@ -55,12 +55,16 @@ export function parseRuntimeString(
5555 const atIndex = hostPart . indexOf ( "@" ) ;
5656 const user = atIndex > 0 ? hostPart . substring ( 0 , atIndex ) : process . env . USER ?? "user" ;
5757
58+ // Determine home directory path based on user
59+ // root user's home is /root, all others are /home/<user>
60+ const homeDir = user === "root" ? "/root" : `/home/${ user } ` ;
61+
5862 // Accept both "hostname" and "user@hostname" formats
5963 // SSH will use current user or ~/.ssh/config if user not specified
6064 return {
6165 type : RUNTIME_MODE . SSH ,
6266 host : hostPart ,
63- srcBaseDir : `/home/ ${ user } /cmux` , // Default remote base directory (NOT including workspace name)
67+ srcBaseDir : `${ homeDir } /cmux` , // Default remote base directory (NOT including workspace name)
6468 } ;
6569 }
6670
You can’t perform that action at this time.
0 commit comments