Skip to content

Commit

Permalink
docs(contributing): add developer docs explaining how to setup and ru…
Browse files Browse the repository at this point in the history
…n tests

- Create a first version of developer documentation explaining how to
setup and run AngularDart tests locally and on Travis.
- Update `CONTRIBUTING.md` to refer to this new doc.

Closes dart-archive#322. Assumes dart-archive#545.

Closes dart-archive#548
  • Loading branch information
chalin authored and mhevery committed Feb 12, 2014
1 parent e2a00ab commit eaaa337
Show file tree
Hide file tree
Showing 2 changed files with 143 additions and 5 deletions.
7 changes: 2 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,7 @@ Before you submit your pull request consider the following guidelines:
git commit -a
```

* Build your changes locally to ensure all the tests pass

```shell
./run-test.sh
```
* Build your changes locally to ensure all the tests pass: see the [developer documentation][dev-doc].

* Push your branch to Github:

Expand Down Expand Up @@ -226,3 +222,4 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
[communityMilestone]: https://github.com/angular/angular.dart/issues?milestone=13&state=open
[coc]: https://github.com/angular/code-of-conduct/blob/master/CODE_OF_CONDUCT.md
[dev-doc]: https://github.com/angular/angular.dart/blob/master/DEVELOPER.md
141 changes: 141 additions & 0 deletions DEVELOPER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Building and Testing AngularDart

This document describes how to set up your development environment to build and test AngularDart, and
explains the basic mechanics of using `git`, `node`, and `npm`.

See the [contributing guidelines](https://github.com/angular/angular.dart/blob/master/CONTRIBUTING.md) for how to contribute your own code to

1. [Prerequisite Software](#prerequisite-software)
2. [Getting the Sources](#getting-the-sources)
3. [Environment Variable Setup](#environment-variable-setup)
4. [Installing NPM Modules and Dart Packages](#installing-npm-modules-and-dart-packages)
5. [Running Tests Locally](#running-tests-locally)
6. [Continuous Integration using Travis](#continuous-integration-using-travis)

## Prerequisite Software

Before you can build and test AngularDart, you must install and configure the
following products on your development machine:

* [Dart](https://www.dartlang.org/): as can be expected, AngularDart requires
an installation of the Dart-SDK and Dartium (a version of
[Chromium](http://www.chromium.org) with native support for Dart through the
Dart VM). One of the **simplest** ways to get both is to install the **Dart
Editor bundle**, which includes the editor, sdk and Dartium. See the [Dart
tools download page for
instructions](https://www.dartlang.org/tools/download.html).

* [Git](http://git-scm.com/) and/or the **Github app** (for
[Mac](http://mac.github.com/) or [Windows](http://windows.github.com/)): the
[Github Guide to Installing
Git](https://help.github.com/articles/set-up-git) is a good source of
information.

* [Node.js](http://nodejs.org): We use Node to run a development web server,
run tests, and generate distributable files. We also use Node's Package
Manager (`npm`). Depending on your system, you can install Node either from
source or as a pre-packaged bundle.

## Getting the Sources

Forking and Cloning the AngularDart repository:

1. Login to your Github account or create one by following the instructions given [here](https://github.com/signup/free).
Afterwards.
2. [Fork](http://help.github.com/forking) the [main AngularDart repository](https://github.com/angular/angular.dart).
3. Clone your fork of the AngularDart repository and define an `upstream` remote pointing back to the AngularDart repository that you forked in the first place:

```shell
# Clone your Github repository:
git clone [email protected]:<github username>/angular.dart.git

# Go to the AngularDart directory:
cd angular.dart

# Add the main AngularDart repository as an upstream remote to your repository:
git remote add upstream https://github.com/angular/angular.dart.git
```

## Environment Variable Setup


Define the environment variables listed below. These are mainly needed for the
test scripts. The notation shown here is for
[`bash`](http://www.gnu.org/software/bash/); adapt as appropriate for your
favorite shell. (Examples given below of possible values for initializing the
environment variables assume Mac OS X and that you have installed the Dart
Editor in the directory named by `$DART_EDITOR_DIR`. This is only for
illustrative purposes.)

```shell
# CHROME_BIN: path to a Chrome browser executable; e.g.,
export CHROME_BIN="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

# CHROME_CANARY_BIN: path to a Dartium browser executable; e.g.,
export CHROME_CANARY_BIN="$DART_EDITOR_DIR/chromium/Chromium.app/Contents/MacOS/Chromium"
```

You should also add the Dart SDK `bin` directory to your path and/or define `DART_SDK`; e.g.

```shell
# DART_SDK: path to a Dart SDK directory; e.g.,
export DART_SDK="$DART_EDITOR_DIR/dart-sdk"

# Update PATH to include the Dart SDK bin directory
PATH+=":$DART_SDK/bin"
```
## Installing NPM Modules and Dart Packages

Next, install the modules and packages needed to run AngularDart tests:

```shell
# Install node.js dependencies:
npm install

# Install Dart packages
pub install
```

## Running Tests Locally

NOTE: scripts are being written to embody the following steps.

To run base tests:

```shell
# Source a script to define yet more environment variables
. ./scripts/env.sh

# Run io tests:
$DART --checked test/io/all.dart

# Run expression extractor tests:
scripts/test-expression-extractor.sh

Run the Dart Analyzer:
./scripts/analyze.sh
```

To run Karma tests over Dartium, execute the following shell commands (which
will launch the Karma server):

```shell
. ./scripts/env.sh
node "node_modules/karma/bin/karma" start karma.conf \
--reporters=junit,dots --port=8765 --runner-port=8766 \
--browsers=Dartium
```

In another shell window or tab, or from your favorite IDE, launch the Karma
tests proper by executing:

```shell
. ./scripts/env.sh
karma_run.sh
```

## Continuous Integration using Travis

See the instructions given [here](https://github.com/angular/angular.dart/blob/master/travis.md).

-----

0 comments on commit eaaa337

Please sign in to comment.