@@ -585,11 +585,22 @@ async def get_command_line_variables(self) -> List[VariableDefinition]:
585585 name , args = split_args_from_name_or_path (str (variable_file ))
586586 try :
587587 lib_doc = await self .get_libdoc_for_variables_import (
588- name , tuple (args ), str (self .folder .to_path ()), self , resolve_command_line_vars = False
588+ name ,
589+ tuple (args ),
590+ str (self .folder .to_path ()),
591+ self ,
592+ resolve_variables = False ,
593+ resolve_command_line_vars = False ,
589594 )
590595 if lib_doc is not None :
591596 command_line_vars += lib_doc .variables
592597
598+ if lib_doc .errors :
599+ # TODO add diagnostics
600+ for error in lib_doc .errors :
601+ self ._logger .error (
602+ lambda : f"{ error .type_name } : { error .message } in { error .source } :{ error .line_no } "
603+ )
593604 except (SystemExit , KeyboardInterrupt , asyncio .CancelledError ):
594605 raise
595606 except BaseException as e :
@@ -604,11 +615,23 @@ async def get_command_line_variables(self) -> List[VariableDefinition]:
604615 name , args = split_args_from_name_or_path (variable_file )
605616 try :
606617 lib_doc = await self .get_libdoc_for_variables_import (
607- name , tuple (args ), str (self .folder .to_path ()), self , resolve_command_line_vars = False
618+ name ,
619+ tuple (args ),
620+ str (self .folder .to_path ()),
621+ self ,
622+ resolve_variables = False ,
623+ resolve_command_line_vars = False ,
608624 )
609625 if lib_doc is not None :
610626 command_line_vars += lib_doc .variables
611627
628+ if lib_doc .errors :
629+ # TODO add diagnostics
630+ for error in lib_doc .errors :
631+ self ._logger .error (
632+ lambda : f"{ error .type_name } : { error .message } in { error .source } :{ error .line_no } "
633+ )
634+
612635 except (SystemExit , KeyboardInterrupt , asyncio .CancelledError ):
613636 raise
614637 except BaseException as e :
@@ -878,12 +901,16 @@ async def get_variables_meta(
878901 name : str ,
879902 base_dir : str = "." ,
880903 variables : Optional [Dict [str , Optional [Any ]]] = None ,
904+ resolve_variables : bool = True ,
905+ resolve_command_line_vars : bool = True ,
881906 ) -> Tuple [Optional [LibraryMetaData ], str ]:
882907 try :
883908 import_name = await self .find_variables (
884909 name ,
885910 base_dir = base_dir ,
886911 variables = variables ,
912+ resolve_variables = resolve_variables ,
913+ resolve_command_line_vars = resolve_command_line_vars ,
887914 )
888915
889916 result : Optional [LibraryMetaData ] = None
@@ -935,7 +962,7 @@ async def get_variables_meta(
935962 except BaseException :
936963 pass
937964
938- return None , import_name
965+ return None , name
939966
940967 async def find_library (self , name : str , base_dir : str , variables : Optional [Dict [str , Any ]] = None ) -> str :
941968 return await self ._library_files_cache .get (self ._find_library , name , base_dir , variables )
@@ -986,19 +1013,35 @@ async def __find_resource(
9861013
9871014 return str (find_file_ex (name , base_dir , file_type ))
9881015
989- async def find_variables (self , name : str , base_dir : str , variables : Optional [Dict [str , Any ]] = None ) -> str :
990- return await self ._variables_files_cache .get (self .__find_variables , name , base_dir , variables )
1016+ async def find_variables (
1017+ self ,
1018+ name : str ,
1019+ base_dir : str ,
1020+ variables : Optional [Dict [str , Any ]] = None ,
1021+ resolve_variables : bool = True ,
1022+ resolve_command_line_vars : bool = True ,
1023+ ) -> str :
1024+ return await self ._variables_files_cache .get (
1025+ self .__find_variables , name , base_dir , variables , resolve_command_line_vars
1026+ )
9911027
9921028 @_logger .call
993- async def __find_variables (self , name : str , base_dir : str , variables : Optional [Dict [str , Any ]] = None ) -> str :
1029+ async def __find_variables (
1030+ self ,
1031+ name : str ,
1032+ base_dir : str ,
1033+ variables : Optional [Dict [str , Any ]] = None ,
1034+ resolve_variables : bool = True ,
1035+ resolve_command_line_vars : bool = True ,
1036+ ) -> str :
9941037 from robot .variables .search import contains_variable
9951038
996- if contains_variable (name , "$@&%" ):
1039+ if resolve_variables and contains_variable (name , "$@&%" ):
9971040 return find_variables (
9981041 name ,
9991042 str (self .folder .to_path ()),
10001043 base_dir ,
1001- await self .get_resolvable_command_line_variables (),
1044+ await self .get_resolvable_command_line_variables () if resolve_command_line_vars else None ,
10021045 variables ,
10031046 )
10041047
@@ -1258,19 +1301,23 @@ async def get_libdoc_for_variables_import(
12581301 base_dir : str ,
12591302 sentinel : Any = None ,
12601303 variables : Optional [Dict [str , Any ]] = None ,
1304+ resolve_variables : bool = True ,
12611305 resolve_command_line_vars : bool = True ,
12621306 ) -> VariablesDoc :
12631307 source = await self .find_variables (
12641308 name ,
12651309 base_dir ,
12661310 variables ,
1311+ resolve_variables = resolve_variables ,
1312+ resolve_command_line_vars = resolve_command_line_vars ,
12671313 )
12681314
12691315 async def _get_libdoc (name : str , args : Tuple [Any , ...], working_dir : str , base_dir : str ) -> VariablesDoc :
12701316 meta , source = await self .get_variables_meta (
12711317 name ,
12721318 base_dir ,
12731319 variables ,
1320+ resolve_command_line_vars = resolve_command_line_vars ,
12741321 )
12751322
12761323 self ._logger .debug (lambda : f"Load variables { source } { args !r} " )
0 commit comments