@@ -543,7 +543,7 @@ impl LanguageServer {
543543#[ cfg( test) ]
544544mod tests {
545545 use crate :: path_to_uri;
546- use crate :: tests:: { initialize_language_server, open_unchecked, send_hover_request} ;
546+ use crate :: tests:: { initialize_language_server, open , open_unchecked, send_hover_request} ;
547547 use assert_json_diff:: assert_json_eq;
548548 use lsp_server:: { Connection , Message } ;
549549 use lsp_types:: {
@@ -761,28 +761,41 @@ mod tests {
761761
762762 #[ rstest]
763763 #[ case:: command_reference(
764- "foo.nu" , ( 0 , 12 ) ,
764+ "foo.nu" , ( 0 , 12 ) , true ,
765765 vec![ make_location_ref( "bar" , 4 , 2 , 4 , 7 ) , make_location_ref( "foo" , 0 , 11 , 0 , 16 ) ] ,
766766 ) ]
767+ #[ case:: single_file_without_workspace_folder_param(
768+ "foo.nu" , ( 0 , 12 ) , false ,
769+ vec![ make_location_ref( "foo" , 0 , 11 , 0 , 16 ) ] ,
770+ ) ]
771+ #[ case:: new_file(
772+ "no_such_file.nu" , ( 0 , 5 ) , true ,
773+ vec![ make_location_ref( "no_such_file" , 0 , 4 , 0 , 7 ) ] ,
774+ ) ]
775+ #[ case:: new_file_without_workspace_folder_param(
776+ "no_such_file.nu" , ( 0 , 5 ) , false ,
777+ vec![ make_location_ref( "no_such_file" , 0 , 4 , 0 , 7 ) ] ,
778+ ) ]
767779 #[ case:: quoted_command_reference(
768- "bar.nu" , ( 0 , 23 ) ,
780+ "bar.nu" , ( 0 , 23 ) , true ,
769781 vec![ make_location_ref( "bar" , 5 , 4 , 5 , 11 ) , make_location_ref( "foo" , 6 , 13 , 6 , 20 ) ] ,
770782 ) ]
771783 #[ case:: module_path_reference(
772- "baz.nu" , ( 0 , 12 ) ,
784+ "baz.nu" , ( 0 , 12 ) , true ,
773785 vec![ make_location_ref( "bar" , 0 , 4 , 0 , 12 ) , make_location_ref( "baz" , 6 , 4 , 6 , 12 ) ] ,
774786 ) ]
775787 fn reference_in_workspace (
776788 #[ case] main_file : & str ,
777789 #[ case] cursor_position : ( u32 , u32 ) ,
790+ #[ case] with_workspace_folder : bool ,
778791 #[ case] expected_refs : Vec < serde_json:: Value > ,
779792 ) {
780793 let mut script = fixtures ( ) ;
781794 script. push ( "lsp/workspace" ) ;
782795 let ( client_connection, _recv) = initialize_language_server (
783796 None ,
784797 serde_json:: to_value ( InitializeParams {
785- workspace_folders : Some ( vec ! [ WorkspaceFolder {
798+ workspace_folders : with_workspace_folder . then_some ( vec ! [ WorkspaceFolder {
786799 uri: path_to_uri( & script) ,
787800 name: "random name" . to_string( ) ,
788801 } ] ) ,
@@ -791,11 +804,24 @@ mod tests {
791804 . ok ( ) ,
792805 ) ;
793806 script. push ( main_file) ;
807+ let file_exists = script. is_file ( ) ;
794808 let script = path_to_uri ( & script) ;
795809
796- open_unchecked ( & client_connection, script. clone ( ) ) ;
810+ if file_exists {
811+ open_unchecked ( & client_connection, script. clone ( ) ) ;
812+ } else {
813+ let _ = open (
814+ & client_connection,
815+ script. clone ( ) ,
816+ Some ( "def foo [] {}" . into ( ) ) ,
817+ ) ;
818+ }
797819
798- let message_num = 6 ;
820+ let message_num = if with_workspace_folder {
821+ if file_exists { 6 } else { 7 }
822+ } else {
823+ 1
824+ } ;
799825 let ( line, character) = cursor_position;
800826 let messages = send_reference_request (
801827 & client_connection,
0 commit comments