angular-cn/packages/zone.js/DEVELOPER.md

2.9 KiB

To run tests

Make sure your environment is set up with:

yarn

In a separate process, run the WebSockets server:

yarn ws-server

Run the browser tests using Karma:

yarn test

Run the node.js tests:

yarn test-node

Run tslint:

yarn lint

Run format with clang-format:

yarn format

Run all checks (lint/format/browser test/test-node):

yarn ci

Before Commit

Please make sure you pass all following checks before commit

  • gulp lint (tslint)
  • gulp format:enforce (clang-format)
  • gulp promisetest (promise a+ test)
  • yarn test (karma browser test)
  • gulp test-node (node test)

You can run

yarn ci

to do all those checks for you. You can also add the script into your git pre-commit hook

echo -e 'exec npm run ci' > .git/hooks/pre-commit
chmod u+x .git/hooks/pre-commit

Webdriver Test

zone.js also supports running webdriver e2e tests.

  1. run locally
yarn webdriver-start
yarn webdriver-http
yarn webdriver-test
  1. run locally with sauce connect
// export SAUCE_USERNAME and SAUCE_ACCESS_KEY
export SAUCE_USERNAME=XXXX
export SAUCE_ACCESS_KEY=XXX

sc -u $SAUCE_USERNAME -k $SAUCE_ACCESS_KEY
yarn webdriver-http
yarn webdriver-sauce-test

Releasing

Releasing zone.js is a two step process.

  1. Create a PR which updates the changelog, and get it merged using normal merge process.
  2. Once the PR is merged check out the merge SHA of the PR and release zone.js from that SHA and tag it.

1. Creating a PR for release

export PREVIOUS_ZONE_TAG=`git tag -l 'zone.js-*' | tail -n1`
export VERSION=`(cd packages/zone.js; npm version patch --no-git-tag-version)`
export VERSION=${VERSION#v}
export TAG="zone.js-${VERSION}"
echo "Releasing zone.js version ${TAG}. Last release was ${PREVIOUS_ZONE_TAG}."
yarn gulp changelog:zonejs

Inspect the packages/zone.js/CHANGELOG.md for any issues and than commit it with this command.

Create a dry run build to make sure everything is ready.

yarn bazel --output_base=$(mktemp -d) run //packages/zone.js:npm_package.pack --workspace_status_command="echo BUILD_SCM_VERSION $VERSION"

If everything looks good commit the changes and push them to your origin to create a PR.

git co -b "release_${TAG}"
git add packages/zone.js/CHANGELOG.md packages/zone.js/package.json
git ci -m "release: cut the ${TAG} release"
git push origin "release_${TAG}"

2. Cutting a release

Check out the SHA on master which has the changelog commit of the zone.js

git fetch upstream
export VERSION=`(node -e "console.log(require('./packages/zone.js/package.json').version)")`
export TAG="zone.js-${VERSION}"
export SHA=`git log upstream/master --oneline -n 1000 | grep "release: cut the ${TAG} release" | cut -f 1 -d " "`
git co ${SHA}
yarn bazel \
  --output_base=$(mktemp -d) run //packages/zone.js:npm_package.publish \
  --workspace_status_command="echo BUILD_SCM_VERSION $VERSION"
git tag ${TAG} ${SHA}
git push upstream ${TAG}