- Notifications
You must be signed in to change notification settings - Fork 51
Description
Expected Behavior
When parsing the stack for a file that happens to have parentheses in its name, I expected those parentheses to still be there when I got the parsed StackFrame object's fileName.
e.g.
path/to/my (top secret) project/file.js remains as
path/to/my (top secret) project/file.js Current Behavior
Parentheses are stripped out of the path.
e.g.
path/to/my (top secret) project/file.js becomes
path/to/my top secret project/file.js` Steps to Reproduce (for bugs)
I wrote a failing test for it that reproduces the problem, in a branch which you can see here.
Context
This has caused us some problems running Cucumber-JS's own tests if the developer's environment has parens in the path. See cucumber/cucumber-js#1735
Your Environment
- stacktrace.js version: v2.0.2
- Browser Name and version: n/a
- Operating System and version (desktop or mobile): OSX 11.4
Possible Solution
If you want to submit a PR with a fix for this, you'll need to start by forking this repo. If you install the gh command-line tool, you can do that with:
$ gh repo fork stacktracejs/error-stack-parser That should hopefully fork the repo to your GitHub account and then create a local clone of it.
In the new directory of the local clone, you can then create a branch, and pull in my commit with the failing test:
$ git checkout -b allow-parens-in-node-filename $ git pull [email protected]:mattwynne/error-stack-parser.git allow-parens-in-node-filename Try running the tests, and you should see one failing:
npm install npm test npm test > [email protected] test > karma start karma.conf.js --single-run 19 07 2021 14:32:05.968:INFO [karma-server]: Karma v4.4.1 server started at http://0.0.0.0:9876/ 19 07 2021 14:32:05.971:INFO [launcher]: Launching browsers PhantomJS with concurrency unlimited 19 07 2021 14:32:05.975:INFO [launcher]: Starting browser PhantomJS 19 07 2021 14:32:07.389:INFO [PhantomJS 2.1.1 (Mac OS X 0.0.0)]: Connected on socket S7DEMBo_p_scyXL8AAAA with id 77822057 PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR LOG: 'DEPRECATION:', 'Setting specFilter directly on Env is deprecated and will be removed in a future version of Jasmine, please use the specFilter option in `configure`' ErrorStackParser #parse ✓ should parse Safari 7 Error.stack ✓ should parse Safari 8 Error.stack ✓ should parse nested eval() from Safari 9 ✓ should parse Firefox 31 Error.stack ✓ should parse nested eval() from Firefox 43 ✓ should parse function names containing @ in Firefox 43 Error.stack ✓ should parse IE 10 Error stacks ✓ should parse Opera 11 Error messages ✓ should parse IE 11 Error stacks ✓ should parse stack traces with @ in the URL ✓ should parse Opera 25 Error stacks ✓ should parse stack traces with @ in the URL and the method ✓ should parse Opera 9.27 Error messages ✓ should parse Safari 6 Error.stack ✓ should not parse IE 9 Error ✓ should handle webpack eval stacks ✓ should handle spaces in Node.js stacks ✓ should parse nested eval() from Edge ✓ should handle newlines in Error stack messages ✓ should parse Opera 10 Error messages ✗ should handle parentheses in Node.js stacks Expected '/var/app/scratch/my project top secret/index.js' to equal '/var/app/scratch/my project (top secret)/index.js'. <Jasmine> spec/error-stack-parser-spec.js:237:52 <Jasmine> ✓ should parse V8 Error.stack ✓ should parse error stacks with Constructors ✓ should parse V8 entries with no location ✓ should parse V8 Error.stack entries with port numbers ✓ should parse nested eval() from V8 PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 26 of 26 (1 FAILED) (0.35 secs / 0.313 secs) TOTAL: 1 FAILED, 25 SUCCESS 1) should handle parentheses in Node.js stacks ErrorStackParser #parse Expected '/var/app/scratch/my project top secret/index.js' to equal '/var/app/scratch/my project (top secret)/index.js'. <Jasmine> spec/error-stack-parser-spec.js:237:52 <Jasmine> Now you just need to fiddle with the code until that test passes :)