@@ -528,16 +528,68 @@ public void eclipseOnLinuxDetected() {
528528
529529 }
530530
531+ @ Test
532+ public void runFromCommandLineWorks () {
533+ String cmd1 = "/opt/homebrew/Cellar/openjdk/19.0.2/libexec/openjdk.jdk/Contents/Home/bin/java" ;
534+ String [] args1 = new String [] { "-XX:TieredStopAtLevel=1" , "-Xdebug" ,
535+ "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5731" ,
536+ "-cp" , "lotsofjars.jar" ,
537+ "com.example.application.Application" , };
538+
539+ String cmd2 = "/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home/bin/java" ;
540+ String [] args2 = new String [] { "-classpath" ,
541+ "/opt/homebrew/Cellar/maven/3.9.0/libexec/boot/plexus-classworlds-2.6.0.jar" ,
542+ "-Dclassworlds.conf=/opt/homebrew/Cellar/maven/3.9.0/libexec/bin/m2.conf" ,
543+ "-Dmaven.home=/opt/homebrew/Cellar/maven/3.9.0/libexec" ,
544+ "-Dlibrary.jansi.path=/opt/homebrew/Cellar/maven/3.9.0/libexec/lib/jansi-native" ,
545+ "-Dmaven.multiModuleProjectDirectory=/home/foo/test/openide" ,
546+ "org.codehaus.plexus.classworlds.launcher.Launcher" ,
547+ "spring-boot:run" , };
548+
549+ String cmd3 = "/bin/zsh" ;
550+ String [] args3 = new String [] {};
551+
552+ String cmd4 = null ;
553+ String [] args4 = null ;
554+
555+ String cmd5 = "/System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal" ;
556+ String [] args5 = new String [] {};
557+
558+ String cmd6 = null ;
559+ String [] args6 = null ;
560+
561+ Info info1 = mock (cmd1 , args1 );
562+ Info info2 = mock (cmd2 , args2 );
563+ Info info3 = mock (cmd3 , args3 );
564+ Info info4 = mock (cmd4 , args4 );
565+ Info info5 = mock (cmd5 , args5 );
566+ Info info6 = mock (cmd6 , args6 );
567+
568+ List <Info > processes = new ArrayList <>();
569+ processes .add (info1 );
570+ processes .add (info2 );
571+ processes .add (info3 );
572+ processes .add (info4 );
573+ processes .add (info5 );
574+ processes .add (info6 );
575+
576+ Optional <Info > ideCommand = OpenInCurrentIde .findIdeCommand (processes );
577+ Assert .assertTrue (ideCommand .isEmpty ());
578+ }
579+
531580 private Info mock (String cmd ) {
532581 return mock (cmd , cmd );
533582 }
534583
535584 private Info mock (String cmd , String [] arguments ) {
536585 Info info = Mockito .mock (Info .class );
537- Mockito .when (info .command ()).thenReturn (Optional .of (cmd ));
538- Mockito .when (info .arguments ()).thenReturn (Optional .of (arguments ));
539- Mockito .when (info .commandLine ()).thenReturn (
540- Optional .of (cmd + " " + String .join (" " , arguments )));
586+ Mockito .when (info .command ()).thenReturn (Optional .ofNullable (cmd ));
587+ Mockito .when (info .arguments ())
588+ .thenReturn (Optional .ofNullable (arguments ));
589+ if (cmd != null && arguments != null ) {
590+ Mockito .when (info .commandLine ()).thenReturn (
591+ Optional .of (cmd + " " + String .join (" " , arguments )));
592+ }
541593
542594 return info ;
543595 }
0 commit comments