Open
Conversation
This was referenced Aug 7, 2025
Author
|
I have constructed an extensive test with all characters in the range 0-255: let argument = `\\\0x00\\\0x01 ... \\\0xFF`;The output is tested against expected results constructed according to POSIX standard for
The same test is performed with all characters in the range 1-127 against actual output from /bin/sh. await result = x("/bin/sh", ["-c", "echo " + argument]); // unquoted
await result = x("/bin/sh", ["-c", "echo " + '"' + argument + '"']); // double quoted
await result = x("/bin/sh", ["-c", "echo " + "'" + argument + "'"]); // single quotedThis should demonstrate the correctness of the modification convincingly enough. |
d4e1458 to
b86e4c4
Compare
Author
|
The result of the escape test against the main branch shows the problems with escaped characters in double and single quoted strings: |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
As reported in issue #4, the tokenizer does not follow the POSIX rules for the shell. Since a frequent use case for the tokenizer module is to reuse commands from shell scripts, it is unfortunate, if the tokenizer behaves differently.
I have added extensive comments for better comprehension, but they can of course be removed.
I have also modified the newline test case, so that
npm run testdoes not fail.There is a test case that constructs a string of all characters in the ASCII code range 1-127 escaped, which is then supplied as unquoted, double and single quoted argument to
argsTokenizer. The results are checked against the actual output from /bin/sh.That test fails against the unmodified version of
args-tokenizerand passes with the proposed modifications.