Skip to content

Commit

Permalink
Robot: accept regex in embedded arguments
Browse files Browse the repository at this point in the history
Close #1572.
  • Loading branch information
mMontu authored and masatake committed Oct 6, 2017
1 parent 0e230a1 commit 70a6c34
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
16 changes: 16 additions & 0 deletions Units/parser-robot.r/keyword-started-from-varref.d/expected.tags
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,31 @@ My Regular Keyword input.robot /^My Regular Keyword$/;" k
My_Regular_Keyword input.robot /^My Regular Keyword$/;" k
${embedded arg} Starting Single input.robot /^${embedded arg} Starting Single$/;" k
${embedded_arg}_Starting_Single input.robot /^${embedded arg} Starting Single$/;" k
${e} Starting Single Letter input.robot /^${e} Starting Single Letter$/;" k
${e}_Starting_Single_Letter input.robot /^${e} Starting Single Letter$/;" k
${embedded arg:value1|value2} Starting Single With Regex input.robot /^${embedded arg:value1|value2} Starting Single With Regex$/;" k
${embedded_arg:value1|value2}_Starting_Single_With_Regex input.robot /^${embedded arg:value1|value2} Starting Single With Regex$/;" k
${embedded arg1} Starting ${embedded arg2} Multiple input.robot /^${embedded arg1} Starting ${embedded arg2} Multiple$/;" k
${embedded_arg1}_Starting_${embedded_arg2}_Multiple input.robot /^${embedded arg1} Starting ${embedded arg2} Multiple$/;" k
${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex input.robot /^${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex$/;" k
${embedded_arg1}_Starting_${embedded_arg2:value1|value2}_Multiple_With_Regex input.robot /^${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex$/;" k
${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3} input.robot /^${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3}$/;" k
${embedded_arg1}_Starting_And_${embedded_arg2}_Ending_${embedded_arg3} input.robot /^${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3}$/;" k
Middle ${embedded arg} Single Arguments input.robot /^Middle ${embedded arg} Single Arguments$/;" k
Middle_${embedded_arg}_Single_Arguments input.robot /^Middle ${embedded arg} Single Arguments$/;" k
Middle ${embedded arg1} Multiple ${embedded arg2} Arguments input.robot /^Middle ${embedded arg1} Multiple ${embedded arg2} Arguments$/;" k
Middle_${embedded_arg1}_Multiple_${embedded_arg2}_Arguments input.robot /^Middle ${embedded arg1} Multiple ${embedded arg2} Arguments$/;" k
Middle ${embedded arg:value1|value2} Single Arguments With Regex input.robot /^Middle ${embedded arg:value1|value2} Single Arguments With Regex$/;" k
Middle_${embedded_arg:value1|value2}_Single_Arguments_With_Regex input.robot /^Middle ${embedded arg:value1|value2} Single Arguments With Regex$/;" k
Middle ${e} Single Letter Arguments input.robot /^Middle ${e} Single Letter Arguments$/;" k
Middle_${e}_Single_Letter_Arguments input.robot /^Middle ${e} Single Letter Arguments$/;" k
Ending Single ${embedded arg} input.robot /^Ending Single ${embedded arg}$/;" k
Ending_Single_${embedded_arg} input.robot /^Ending Single ${embedded arg}$/;" k
Ending Multiple ${embedded arg1} And ${embedded arg2} input.robot /^Ending Multiple ${embedded arg1} And ${embedded arg2}$/;" k
Ending_Multiple_${embedded_arg1}_And_${embedded_arg2} input.robot /^Ending Multiple ${embedded arg1} And ${embedded arg2}$/;" k
My Keyword_with_underscore-and-dashes input.robot /^My Keyword_with_underscore-and-dashes$/;" k
My Keyword with underscore-and-dashes input.robot /^My Keyword_with_underscore-and-dashes$/;" k
My Keyword_With $ dollar sign input.robot /^My Keyword_With $ dollar sign$/;" k
My Keyword With $ dollar sign input.robot /^My Keyword_With $ dollar sign$/;" k
My Test With Template1 input.robot /^My Test With Template1 My Kw 1 My Kw 2$/;" t
My_Test_With_Template1 input.robot /^My Test With Template1 My Kw 1 My Kw 2$/;" t
29 changes: 28 additions & 1 deletion Units/parser-robot.r/keyword-started-from-varref.d/input.robot
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#
# This test input is taken from #1570 opened by @mMontu.
# This test input is taken from #1572 opened by @mMontu.
#
*** Variables ***

${myvar} variable_value

*** Keywords ***
Expand All @@ -12,9 +13,19 @@ My Regular Keyword
${embedded arg} Starting Single
No Operation

${e} Starting Single Letter
No Operation


${embedded arg:value1|value2} Starting Single With Regex
No Operation

${embedded arg1} Starting ${embedded arg2} Multiple
No Operation

${embedded arg1} Starting ${embedded arg2:value1|value2} Multiple With Regex
No Operation

${embedded arg1} Starting And ${embedded arg2} Ending ${embedded arg3}
No Operation

Expand All @@ -24,8 +35,24 @@ Middle ${embedded arg} Single Arguments
Middle ${embedded arg1} Multiple ${embedded arg2} Arguments
No Operation

Middle ${embedded arg:value1|value2} Single Arguments With Regex
No Operation

Middle ${e} Single Letter Arguments
No Operation

Ending Single ${embedded arg}
No Operation

Ending Multiple ${embedded arg1} And ${embedded arg2}
No Operation

My Keyword_with_underscore-and-dashes
No Operation

My Keyword_With $ dollar sign
No Operation

*** Test Cases ***

My Test With Template1 My Kw 1 My Kw 2
2 changes: 1 addition & 1 deletion parsers/robot.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ static void initialize (const langType language)

addLanguageCallbackRegex (
language,
"(^([A-Za-z0-9]+|\\$\\{[_A-Za-z0-9][' _A-Za-z0-9]+\\})([${}' _][-${}A-Za-z0-9]+)*)",
"(^([A-Za-z0-9]+|\\$\\{[_A-Za-z0-9][' _A-Za-z0-9]*(:([^}]|\\\\|)+)*\\})([${}' _]([-_$A-Za-z0-9]+|\\{[_A-Za-z0-9][' _A-Za-z0-9]*(:([^}]|\\\\|)+)*\\})+)*)",
"{exclusive}", tagKeywordsAndTestCases, NULL, NULL);

addLanguageCallbackRegex (language, "^[$@]\\{([_A-Za-z0-9][' _A-Za-z0-9]+)\\} [ ]*.+",
Expand Down

0 comments on commit 70a6c34

Please sign in to comment.