-
Notifications
You must be signed in to change notification settings - Fork 37
Fix json encoder to reject user defined iterables #687
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
Open
GKotsifos
wants to merge
1
commit into
verygoodsecurity:master
Choose a base branch
from
GKotsifos:json-iterable-typeerror
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Do we have a test for this? I understand why, but would this break behavior that folks are depending on?
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.
Fair point, if anyone is serializing custom iterables then this change will break them. Regarding the test, I was thinking of adding one but saw this line:
starlarky/larky/src/main/java/com/verygood/security/larky/modules/JsonModule.java
Line 36 in ae1cc24
and could not find a json.star file so I assumed there are not tests for json. I can create some if needed.
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.
@GKotsifos the tests are here, I can see how that's confusing:
https://github.com/verygoodsecurity/starlarky/blob/master/libstarlark/src/test/java/net/starlark/java/eval/testdata/json.star
Maybe update the comment to say it's at
libstarlark/...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.
@mahmoudimus correct me if I am wrong but these tests are for this class:
https://github.com/verygoodsecurity/starlarky/blob/master/libstarlark/src/main/java/net/starlark/java/lib/json/Json.java
and not the JsonModule.java where the changes are:
https://github.com/verygoodsecurity/starlarky/blob/master/larky/src/main/java/com/verygood/security/larky/modules/JsonModule.java
although now that you mention it we should probably apply the same fix to Json.java as well.
Also looking at these tests, I saw this line:
starlarky/libstarlark/src/test/java/net/starlark/java/eval/testdata/json.star
Line 31 in ae1cc24
where even though range is a built-in iterable it should still fail since in python only lists and tuples are mapped by default to JSON arrays and I assume we want to mimic the exact behavior of python. But the description of the issue only states we should reject user-defined iterables. What do you think?