-
-
Couldn't load subscription status.
- Fork 13
Handle missing executor in NodeJS #528
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @sven-oly, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request primarily focuses on improving the robustness and clarity of error reporting within the system and enhancing data schemas. It standardizes error messages in the NodeJS executor and the Python test driver to provide more contextual information when issues arise. Additionally, it introduces a new hash_id field across multiple test schemas, which will aid in data management and identification.
Highlights
- Enhanced Error Reporting in NodeJS Executor: The NodeJS executor now provides more detailed error responses for unsupported test types, including a specific label and error detail.
- Schema Updates for hash_id: Several test schemas (collation, lang_names, likely_subtags, number_format) have been updated to include a new hash_id property for better data identification.
- Improved Error Handling in Python Test Driver: The Python test driver's error handling for subprocess failures has been refined to retain the original input label and provide a more descriptive error detail.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request aims to improve error handling for missing executors in NodeJS and updates several JSON schemas. My review identified a critical syntax error in the JavaScript executor and two critical bugs in the Python test driver that would lead to runtime crashes. Additionally, I've pointed out some minor typos in the descriptions within the updated JSON schema files. The suggested fixes should resolve these issues.
| error_result = {'label': input['label'], | ||
| 'input_data': input_line, | ||
| 'error': self.run_error_message | ||
| 'error': self.run_error_message, | ||
| 'error_detail': 'severe error from subprocess ' + | ||
| result.returncode, | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This block introduces two critical issues that will cause a crash:
NameError: The variableinputis used to get a label (input['label']), but it is not defined within thiselseblock's scope. It is only defined in theexceptblock below.TypeError:result.returncodeis an integer. Concatenating it with a string using+will raise aTypeError. It must be converted to a string first, for example, by usingstr(result.returncode).
I've provided a suggestion that resolves both issues by safely parsing the input to retrieve the label and correctly handling the type conversion.
label = 'UNKNOWN'
try:
input_json = json.loads(input_line.splitlines()[0])
label = input_json.get('label', 'UNKNOWN')
except (IndexError, json.JSONDecodeError):
pass # Fallback to 'UNKNOWN' if parsing fails
error_result = {'label': label,
'input_data': input_line,
'error': self.run_error_message,
'error_detail': 'severe error from subprocess ' +
str(result.returncode),
}There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please fix
|
Is this still relevant / important? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not clear to me what this PR changes: it adds context to two errors that were already errors, but it doesn't catch anything new as far as I can tell?
| error_result = {'label': input['label'], | ||
| 'input_data': input_line, | ||
| 'error': self.run_error_message | ||
| 'error': self.run_error_message, | ||
| 'error_detail': 'severe error from subprocess ' + | ||
| result.returncode, | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please fix
| "hash_id": { | ||
| "description": "Has value of the JSON string omitting label value", | ||
| "type": "integer" | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question: I don't see hash_id used anywhere in this PR outside the schema. Why do you need it?
adf6fb2 to
218d52a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My concerns about the new schema field hash_id being added but not being used in this PR are still open
#459