Section | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
The Groovy script tester in JMCF is available on the Custom field configuration screen when you write a Groovy script
to return a value expected by the calculated custom field in the Groovy Formula for the calculated custom field in the Format Expression fieldfield.
Using the Groovy Script tester
...
After selecting issue against which the script should be tested (as explained above), click on Test.
The following information will be displayed. This information can be used for debugging.
Message: Success/error message based on the test result.
- Result type: Data type of the result.
- Result value: Value of the result.
- Stack: If an exception was thrown during the execution of the script, a stack trace will be displayed.
- Logs: Information logged using the
log
variable.
Example
Panel | |||||||
---|---|---|---|---|---|---|---|
Test a script that fetches returns the username of the user the issue is assigned to: Groovy expression as the Value typesum of two number fields:
|
Debugging your script
If you encounter an error during testing, you will need to debug your script. The Message, Stack and Log information displayed in the script tester result panel aids in debugging the script.
Using the Message and Stack trace
In the above example, after testing the script against an issue that is unassigned:encountering the error,
- Identify the problem, from the
Message
that displayed a null pointer exception error and theStack
that displayed the line number on which the error occurred. - return (
Correct the problem, using the safe navigation operator ? that avoids the null pointer exception.
Code Block checking for null values and then returning the result.
In the Groovy editor, write the following lines of code:
Code Block language groovy linenumbers true if (issue.get("customfield_10028") == null || issue.get("
...
customfield_10006") == null) return null; else return issue.get("customfield_10028") + issue.get("customfield_10006");
- Click on
Test again
. The following result is displayed:
Using the log variable
Using the log variable, you can debug your script, a step further, by adding information into the log. For example, while testing a condition in your script, if the result evaluates to false
when you expect it to be true
, you might want to know what values are being compared in your condition. In such cases, you can use the log variable to display the value.
Note |
---|
The log calls should always be used before the return statement because they would never get executed after it. |
...
Use log variable, in the above script to know the values of the custom fields.
Code Block |
---|
return (issue.get("assignee")? == "Scharlie") |
...
Identify the problem, using the log variable (as shown below) and check what values are being compared.
...
log.warn("Value of field 10028 is: "+issue.get("customfield_10028")); log.warn(" |
...
Value |
...
of |
...
field |
...
10006 |
...
is: " |
...
+ |
...
issue |
...
.get(" |
...
customfield_10006")); |
...
if (issue |
...
.get(" |
...
customfield_10028") == null |
...
Retest the script, as explained above and verify the result in the script test panel.
The script is comparing a user object to a String value.
Correct the problem, by fetching the username and then comparing the values
Code Block |
---|
log.warn("Fetched user is" + " " + issue?.get("assignee"))
return (issue?.get("assignee").getName() == "Scharlie") |
...
|| issue.get("customfield_10006") == null)
return null;
else
return issue.get("customfield_10028") + issue.get("customfield_10006"); |
Re-test the script, the following result is displayed.
Remove your logging code, so that log entries don't get written to Jira's logfile each time the
...
field is
...
calculated.