contacts/js/dav/CONTRIBUTING.md

3.0 KiB

Contributing

Table of Contents generated with DocToc

Under the hood

dav uses npm to manage external dependencies. External npm modules get bundled into the browser js binary with the (excellent) browserify utility. dav uses the DOMParser and XMLHttpRequest web apis (to parse xml and send http requests). All of the async library operations use es6 Promises.

Running the tests

///////////////////////////////////////
/ suite       / command               /
///////////////////////////////////////
/ integration / make test-integration /
///////////////////////////////////////
/ lint        / make lint             /
///////////////////////////////////////
/ unit        / make test-unit        /
///////////////////////////////////////

Things to note:

  • As of 1.1.1, all of the tests run dav via nodejs. There are no browser tests (yet).
  • You can add helpful debug logs to test output with the DEBUG environment variable.
    • Filter logs by setting DEBUG=dav:*, DEBUG=dav:request:*, etc.
  • Integration tests run against sabredav
    • The server code lives here
    • There is a make task which downloads a sabredav release from GitHub that make test-integration depends on
    • The sabredav instance uses sqlite to store dav collections and objects among other things.
      • The code that seeds the database lives here

Publishing a release

  1. Update package.json to reflect the new version. Use semver to help decide what new version number is best.
  2. If there are changes to the public api, document them in the README. Then regenerate the README.md table of contents with make toc.
  3. Add a new entry to HISTORY.md with the new version number and a description of the changeset. Regenerate the HISTORY.md table of contents with make toc.
  4. Commit the changes to package.json, HISTORY.md, and (perhaps) README.md. Push to GitHub.
  5. Run make && npm publish.
  6. Create a new GitHub release named v.{MAJOR}.{MINOR}.{PATCH} with a description of the changeset. Upload the freshly generated zipball dav.zip.