There are several ways of contributing to Sinon.JS
help-wanted
To save everyone time and make it much more likely for your issue to be understood, worked on and resolved quickly, it would help if you're mindful of How to Report Bugs Effectively when pressing the "Submit new issue" button.
As a minimum, please report the following:
See our issue template for all details.
Pick an issue to fix, or pitch new features. To avoid wasting your time, please ask for feedback on feature suggestions with an issue.
Please try to write great commit messages.
There are numerous benefits to great commit messages
If you're already a few commits in by the time you read this, you can still change your commit messages.
Also, before making your pull request, consider if your commits make sense on their own (and potentially should be multiple pull requests) or if they can be squashed down to one commit (with a great message). There are no hard and fast rules about this, but being mindful of your readers greatly help you author good commits.
To save everyone some time, please use EditorConfig, so your editor helps make sure we all use the same encoding, indentation, line endings, etc.
The Sinon.JS developer environment requires Node/NPM. Please make sure you have Node installed, and install Sinon's dependencies:
$ npm install
This will also install a pre-commit hook, that runs style validation on staged files.
Sinon's source is written as ES5.1 and requires no transpiler or polyfills.
Sinon.JS uses feature detection to support ES6 features, but does not rely on any of the new syntax introduced in ES6 and remains compatible with ES5.1 runtimes.
Sinon.JS aims at supporting the following runtimes:
Sinon.JS uses ESLint to keep the codebase free of lint, and uses Prettier to keep consistent style.
If you are contributing to a Sinon project, you'll probably want to configure your editors (ESLint, Prettier) to make editing code a more enjoyable experience.
The ESLint verification (which includes Prettier) will be run before unit tests in the CI environment. The build will fail if the source code does not pass the style check.
You can run the linter locally:
$ npm run lint
You can fix a lot lint and style violations automatically:
$ npm run lint -- --fix
To ensure consistent reporting of lint warnings, you should use the same versions of ESLint and Prettier as defined in package.json
(which is what the CI servers use).
Following command runs unit tests in PhantomJS, Node and WebWorker
$ npm test
Sinon.JS uses Mocha, please read those docs if you're unfamiliar with it.
If you're doing more than a one line edit, you'll want to have finer control and less restarting of the Mocha
To start tests in dev mode run
$ npm run test-dev
Dev mode features:
Note that in dev mode tests run only in Node. Before creating your PR please ensure tests are passing in Phantom and WebWorker as well. To check this please use Run the tests instructions.
Build requires Node. Under the hood Browserify is used.
To build simply run
$ node build.js