mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-05-24 22:03:43 +00:00
docs(contribute): update misc/contribute docs with Testacular info
This commit is contained in:
parent
9d168f058f
commit
89dd566277
2 changed files with 76 additions and 56 deletions
20
Rakefile
20
Rakefile
|
|
@ -170,11 +170,14 @@ task :package => [:clean, :minify, :version, :docs] do
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
desc 'Start development webserver'
|
||||||
|
task :webserver, :port do |t, args|
|
||||||
|
system "node lib/nodeserver/server.js #{args[:port]}"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
desc 'Run all AngularJS tests'
|
desc 'Run all AngularJS tests'
|
||||||
task :test, :browsers, :misc_options do |t, args|
|
task :test, :browsers, :misc_options do |t, args|
|
||||||
|
|
||||||
puts args
|
|
||||||
|
|
||||||
[ 'test:jqlite',
|
[ 'test:jqlite',
|
||||||
'test:jquery',
|
'test:jquery',
|
||||||
'test:modules',
|
'test:modules',
|
||||||
|
|
@ -187,6 +190,17 @@ end
|
||||||
|
|
||||||
namespace :test do
|
namespace :test do
|
||||||
|
|
||||||
|
desc 'Run all unit tests (single run)'
|
||||||
|
task :unit, :browsers, :misc_options do |t, args|
|
||||||
|
[ 'test:jqlite',
|
||||||
|
'test:jquery',
|
||||||
|
'test:modules'
|
||||||
|
].each do |task|
|
||||||
|
Rake::Task[task].invoke(args[:browsers], args[:misc_options])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
desc 'Run jqLite-based unit test suite (single run)'
|
desc 'Run jqLite-based unit test suite (single run)'
|
||||||
task :jqlite, :browsers, :misc_options do |t, args|
|
task :jqlite, :browsers, :misc_options do |t, args|
|
||||||
start_testacular('testacular-jqlite.conf.js', true, args[:browsers], args[:misc_options])
|
start_testacular('testacular-jqlite.conf.js', true, args[:browsers], args[:misc_options])
|
||||||
|
|
|
||||||
|
|
@ -13,19 +13,19 @@
|
||||||
<a name="H1_1"></a>
|
<a name="H1_1"></a>
|
||||||
# License
|
# License
|
||||||
|
|
||||||
`Angular` is an open source project licensed under the {@link
|
AngularJS is an open source project licensed under the {@link
|
||||||
http://github.com/angular/angular.js/blob/master/LICENSE MIT license}. Your contributions are
|
http://github.com/angular/angular.js/blob/master/LICENSE MIT license}. Your contributions are
|
||||||
always welcome. When working with `angular` source base, please follow the guidelines provided on
|
always welcome. When working with AngularJS code base, please follow the guidelines provided on
|
||||||
this page.
|
this page.
|
||||||
|
|
||||||
|
|
||||||
<a name="H1_2"></a>
|
<a name="H1_2"></a>
|
||||||
# Contributing to Source Code
|
# Contributing to Source Code
|
||||||
|
|
||||||
We'd love for you to contribute to our source code and to make `angular` even better than it is
|
We'd love for you to contribute to our source code and to make AngularJS even better than it is
|
||||||
today! Here are the guidelines we'd like you to use:
|
today! Here are the guidelines we'd like you to follow:
|
||||||
|
|
||||||
* Major changes that you intend to contribute to the project must be discussed first on our {@link
|
* Major changes that you intend to contribute to the project should be discussed first on our {@link
|
||||||
https://groups.google.com/forum/?hl=en#!forum/angular mailing list} so that we can better
|
https://groups.google.com/forum/?hl=en#!forum/angular mailing list} so that we can better
|
||||||
coordinate our efforts, prevent duplication of work, and help you to craft the change so that it
|
coordinate our efforts, prevent duplication of work, and help you to craft the change so that it
|
||||||
is successfully accepted upstream.
|
is successfully accepted upstream.
|
||||||
|
|
@ -64,45 +64,43 @@ inheritance only when absolutely necessary.
|
||||||
external API. See our existing code to see what we mean.
|
external API. See our existing code to see what we mean.
|
||||||
|
|
||||||
* We don't go crazy with type annotations for private internal APIs unless it's an internal API
|
* We don't go crazy with type annotations for private internal APIs unless it's an internal API
|
||||||
that is used throughout `angular`. The best guidance is to do what makes the most sense.
|
that is used throughout AngularJS. The best guidance is to do what makes the most sense.
|
||||||
|
|
||||||
|
|
||||||
<a name="H1_4"></a>
|
<a name="H1_4"></a>
|
||||||
# Checking Out and Building Angular
|
# Checking Out and Building Angular
|
||||||
|
|
||||||
The `angular` source code is hosted at {@link http://github.com Github}, which we also use to
|
The AngularJS source code is hosted at {@link http://github.com Github}, which we also use to
|
||||||
accept code contributions. Several steps are needed to check out and build `angular`:
|
accept code contributions. Several steps are needed to check out and build AngularJS:
|
||||||
|
|
||||||
|
|
||||||
## Installation Dependencies
|
## Installation Dependencies
|
||||||
|
|
||||||
Before you can build `angular`, you must install or configure the following dependencies on your
|
Before you can build AngularJS, you must install or configure the following dependencies on your
|
||||||
machine:
|
machine:
|
||||||
|
|
||||||
* {@link http://rake.rubyforge.org Rake}: We use Rake as our build system, which is pre-installed
|
* {@link http://rake.rubyforge.org Rake}: We use Rake as our build system, which is pre-installed
|
||||||
on most Macintosh and Linux machines. If that is not true in your case, you can grab it from the
|
on most Macintosh and Linux machines. If that is not true in your case, you can grab it from the
|
||||||
Rake website.
|
Rake website.
|
||||||
|
|
||||||
|
* Git: The {@link http://help.github.com/mac-git-installation Github Guide to Installing Git} is
|
||||||
|
quite a good source for information on Git.
|
||||||
|
|
||||||
* {@link http://nodejs.org Node.js}: We use Node to generate the documentation and to run a
|
* {@link http://nodejs.org Node.js}: We use Node to generate the documentation and to run a
|
||||||
development web server. Depending on your system, you can install Node either from source or as a
|
development web server. Depending on your system, you can install Node either from source or as a
|
||||||
pre-packaged bundle.
|
pre-packaged bundle.
|
||||||
|
|
||||||
You'll also need npm and the following npm modules:
|
Once installed, you'll also need several npms (node packages), which you can install once you checked out a local copy
|
||||||
|
of the Angular repository (see below) with:
|
||||||
|
|
||||||
* install npm: `curl http://npmjs.org/install.sh | sh`
|
* `cd angular.js`
|
||||||
* install q: `npm install q`
|
* `npm install`
|
||||||
* install qq: `npm install qq`
|
|
||||||
* install q-fs: `npm install q-fs`
|
|
||||||
* install jasmine-node: `npm install jasmine`
|
|
||||||
|
|
||||||
|
|
||||||
|
* Lastly, you'll also need Testacular our spectacular test runner that we use for running unit and end-to-end tests.
|
||||||
|
|
||||||
* Java: The Java runtime is used to run {@link http://code.google.com/p/js-test-driver
|
* `sudo npm install -g testacular`
|
||||||
JsTestDriver} (JSTD), which we use to run our unit test suite. JSTD binaries are part of the
|
|
||||||
`angular` source base, which means there is no need to install or configure it separately.
|
|
||||||
|
|
||||||
* Git: The {@link http://help.github.com/mac-git-installation Github Guide to Installing Git} is
|
|
||||||
quite a good source for information on Git.
|
|
||||||
|
|
||||||
|
|
||||||
## Creating a Github Account and Forking Angular
|
## Creating a Github Account and Forking Angular
|
||||||
|
|
@ -112,31 +110,31 @@ Afterwards, go ahead and {@link http://help.github.com/forking fork} the {@link
|
||||||
https://github.com/angular/angular.js main angular repository}.
|
https://github.com/angular/angular.js main angular repository}.
|
||||||
|
|
||||||
|
|
||||||
## Building `Angular`
|
## Building AngularJS
|
||||||
|
|
||||||
To build `angular`, you check out the source code and use Rake to generate the non-minified and
|
To build AngularJS, you check out the source code and use Rake to generate the non-minified and
|
||||||
minified `angular` files:
|
minified AngularJS files:
|
||||||
|
|
||||||
1. To clone your Github repository, run:
|
1. To clone your Github repository, run:
|
||||||
|
|
||||||
git clone git@github.com:<github username>/angular.js.git
|
git clone git@github.com:<github username>/angular.js.git
|
||||||
|
|
||||||
2. To go to the `angular` directory, run:
|
2. To go to the AngularJS directory, run:
|
||||||
|
|
||||||
cd angular.js
|
cd angular.js
|
||||||
|
|
||||||
3. To add the main `angular` repository as an upstream remote to your repository, run:
|
3. To add the main AngularJS repository as an upstream remote to your repository, run:
|
||||||
|
|
||||||
git remote add upstream https://github.com/angular/angular.js.git
|
git remote add upstream https://github.com/angular/angular.js.git
|
||||||
|
|
||||||
4. To build `angular`, run:
|
4. To build AngularJS, run:
|
||||||
|
|
||||||
rake package
|
rake package
|
||||||
|
|
||||||
The build output can be located under the `build` directory. It consists of the following files and
|
The build output can be located under the `build` directory. It consists of the following files and
|
||||||
directories:
|
directories:
|
||||||
|
|
||||||
* `angular-<version>.tgz` — This is the complete tarball, which contains all of the release build
|
* `angular-<version>.zip` — This is the complete zip file, which contains all of the release build
|
||||||
artifacts.
|
artifacts.
|
||||||
|
|
||||||
* `angular.js` — The non-minified `angular` script.
|
* `angular.js` — The non-minified `angular` script.
|
||||||
|
|
@ -145,8 +143,6 @@ artifacts.
|
||||||
|
|
||||||
* `angular-scenario.js` — The `angular` End2End test runner.
|
* `angular-scenario.js` — The `angular` End2End test runner.
|
||||||
|
|
||||||
* `angular-ie-compat.js` — The Internet Explorer compatibility patch file.
|
|
||||||
|
|
||||||
* `docs/` — A directory that contains all of the files needed to run `docs.angularjs.org`.
|
* `docs/` — A directory that contains all of the files needed to run `docs.angularjs.org`.
|
||||||
|
|
||||||
* `docs/index.html` — The main page for the documentation.
|
* `docs/index.html` — The main page for the documentation.
|
||||||
|
|
@ -154,60 +150,70 @@ artifacts.
|
||||||
* `docs/docs-scenario.html` — The End2End test runner for the documentation application.
|
* `docs/docs-scenario.html` — The End2End test runner for the documentation application.
|
||||||
|
|
||||||
|
|
||||||
|
<a name="webserver"></a>
|
||||||
## Running a Local Development Web Server
|
## Running a Local Development Web Server
|
||||||
|
|
||||||
To debug or test code, it is often useful to have a local HTTP server. For this purpose, we have
|
To debug code and run end-to-end tests, it is often useful to have a local HTTP server. For this purpose, we have
|
||||||
made available a local web server based on Node.js.
|
made available a local web server based on Node.js.
|
||||||
|
|
||||||
1. To start the web server, run:
|
1. To start the web server, run:
|
||||||
|
|
||||||
./nodeserver.sh
|
rake webserver
|
||||||
|
|
||||||
2. To access the local server, go to this website:
|
2. To access the local server, go to this website:
|
||||||
|
|
||||||
http://localhost:8000/
|
http://localhost:8000/
|
||||||
|
|
||||||
By default, it serves the contents of the `angular` project directory.
|
By default, it serves the contents of the AngularJS project directory.
|
||||||
|
|
||||||
|
|
||||||
<a name="unit-tests"></a>
|
<a name="unit-tests"></a>
|
||||||
## Running the Unit Test Suite
|
## Running the Unit Test Suite
|
||||||
|
|
||||||
Our unit and integration tests are written with Jasmine and executed with JsTestDriver. To run the
|
Our unit and integration tests are written with Jasmine and executed with Testacular. To run all of the
|
||||||
tests:
|
tests once on Chrome run:
|
||||||
|
|
||||||
1. To start the JSTD server, run:
|
rake test:unit
|
||||||
|
|
||||||
./server.sh
|
To run the tests on other browsers (Chrome, ChromeCanary, Firefox, Opera and Safari are pre-configured) use:
|
||||||
|
|
||||||
2. To capture one or more browsers, go to this website:
|
rake test:unit[Opera+Firefox]
|
||||||
|
|
||||||
|
During development it's however more productive to continuously run unit tests every time the source or test files
|
||||||
|
change. To execute tests in this mode run:
|
||||||
|
|
||||||
|
1. To start the Testacular server, capture Chrome browser and run unit tests, run:
|
||||||
|
|
||||||
|
rake test:jqlite
|
||||||
|
|
||||||
|
2. To capture more browsers, open this url in the desired browser (url might be different if you have multiple instance
|
||||||
|
of Testacular running, read Testacular's console output for the correct url):
|
||||||
|
|
||||||
http://localhost:9876/
|
http://localhost:9876/
|
||||||
|
|
||||||
3. To trigger a test execution, run:
|
3. To re-run tests just change any source or test file.
|
||||||
|
|
||||||
./test.sh
|
|
||||||
|
|
||||||
4. To automatically run the test suite each time one or more of the files in the project directory
|
|
||||||
is changed, you can install `watchr` and then run:
|
|
||||||
|
|
||||||
watchr watchr.rb
|
|
||||||
|
|
||||||
5. To view the output of each test run, you can tail this log file:
|
|
||||||
|
|
||||||
./logs/jstd.log
|
|
||||||
|
|
||||||
|
|
||||||
## Running the End2End Test Suite
|
To learn more about all of the preconfigured Rake tasks run:
|
||||||
|
|
||||||
To run the End2End test suite:
|
rake -T
|
||||||
|
|
||||||
|
|
||||||
|
## Running the end-to-end Test Suite
|
||||||
|
|
||||||
|
To run the E2E test suite:
|
||||||
|
|
||||||
|
1. Start the local web server if it's not running already.
|
||||||
|
|
||||||
|
rake webserver
|
||||||
|
|
||||||
1. Start the local web server.
|
|
||||||
2. In a browser, go to:
|
2. In a browser, go to:
|
||||||
|
|
||||||
http://localhost:8000/build/docs/docs-scenario.html
|
http://localhost:8000/build/docs/docs-scenario.html
|
||||||
|
|
||||||
The tests are executed automatically.
|
or in terminal run:
|
||||||
|
|
||||||
|
rake test:e2e
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue