-
Notifications
You must be signed in to change notification settings - Fork 313
[test] Reclassify some tests between "invalid" and "malformed" #2130
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
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,36 +1,78 @@ | ||
| ;; RUN: wast --assert default --snapshot tests/snapshots % | ||
|
|
||
| (assert_invalid | ||
| (module | ||
| (func end)) | ||
| (assert_malformed | ||
| (module quote | ||
| "(func end)") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_invalid | ||
| (module | ||
| (func end block)) | ||
| ;; binary version of previous test | ||
| (assert_malformed | ||
| (module binary | ||
| "\00asm\01\00\00\00\01\04\01\60\00\00\03\02\01\00\0a\05\01\03\00\0b\0b") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_invalid | ||
| (module | ||
| (func end i32.add)) | ||
| (assert_malformed | ||
| (module quote | ||
| "(func end block)") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_invalid | ||
| (module | ||
| (func end unreachable)) | ||
| ;; binary version of previous test | ||
| (assert_malformed | ||
| (module binary | ||
| "\00asm\01\00\00\00\01\04\01\60\00\00\03\02\01\00\0a\07\01\05\00\0b\02\40\0b") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_invalid | ||
| (module | ||
| (func end br 0)) | ||
| (assert_malformed | ||
| (module quote | ||
| "(func end i32.add)") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_invalid | ||
| (module | ||
| (func end return)) | ||
| ;; binary version of previous test | ||
| (assert_malformed | ||
| (module binary | ||
| "\00asm\01\00\00\00\01\04\01\60\00\00\03\02\01\00\0a\06\01\04\00\0b\6a\0b") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_invalid | ||
| (module | ||
| (func end return_call 0)) | ||
| (assert_malformed | ||
| (module quote | ||
| "(func end unreachable)") | ||
| "operators remaining after end of function") | ||
|
|
||
| ;; binary version of previous test | ||
| (assert_malformed | ||
| (module binary | ||
| "\00asm\01\00\00\00\01\04\01\60\00\00\03\02\01\00\0a\06\01\04\00\0b\00\0b") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_malformed | ||
| (module quote | ||
| "(func end br 0)") | ||
| "operators remaining after end of function") | ||
|
|
||
| ;; binary version of previous test | ||
| (assert_malformed | ||
| (module binary | ||
| "\00asm\01\00\00\00\01\04\01\60\00\00\03\02\01\00\0a\07\01\05\00\0b\0c\00\0b") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_malformed | ||
| (module quote | ||
| "(func end return)") | ||
| "operators remaining after end of function") | ||
|
|
||
| ;; binary version of previous test | ||
| (assert_malformed | ||
| (module binary | ||
| "\00asm\01\00\00\00\01\04\01\60\00\00\03\02\01\00\0a\06\01\04\00\0b\0f\0b") | ||
| "operators remaining after end of function") | ||
|
|
||
| (assert_malformed | ||
| (module quote | ||
| "(func end return_call 0)") | ||
| "operators remaining after end of function") | ||
|
|
||
| ;; binary version of previous test | ||
| (assert_malformed | ||
| (module binary | ||
| "\00asm\01\00\00\00\01\04\01\60\00\00\03\02\01\00\0a\07\01\05\00\0b\12\00\0b") | ||
| "operators remaining after end of function") | ||
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -28,7 +28,7 @@ | |
| )) | ||
| ) | ||
|
|
||
| (assert_invalid | ||
| (assert_malformed | ||
| (component quote | ||
| "(type (instance" | ||
| "(type $t u8)" | ||
|
|
||
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
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
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
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
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
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
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
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
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
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
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
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
Oops, something went wrong.
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.
IIRC we've had bugs in both the text and binary format in the past about handling operators-after-end, notably panics. Would you be up for adding
module binaryversions of these tests in addition tomodule quoteso we can be guaranteed at least one of them hits the binary validator as opposed to having them all fail in the text parser?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.
I'm happy to do it, but fwiw I'm basically not anything to the text parser and the text parser won't catch this by itself -- it's only the binary parser that will keep track of the blocks and make sure the
ends are well-matched. But I don't mind extra safety -- will add. :-)(Per above: the method I'm proposing for the assert_malformed tests is basically not to change the text parsers at all, and instead run each test by first (1) using the wast crate to convert WAT to bytes, and then (2) running wasmparser on those bytes to see if they parse as binary Wasm. That way all the safety checks are done in the binary reader/parser and it doesn't matter where the module originally came from (text or binary).)
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.
Done.