mobile_template 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +28 -0
- data/Rakefile +3 -0
- data/bin/mobile_template +71 -0
- data/lib/mobile_template/version.rb +4 -0
- data/lib/mobile_template.rb +5 -0
- data/mobile_template.gemspec +21 -0
- data/templates/assets/Gemfile +4 -0
- data/templates/assets/config.rb +96 -0
- data/templates/assets/config.ru +4 -0
- data/templates/assets/source/images/vendor/ajax-loader.gif +0 -0
- data/templates/assets/source/images/vendor/ajax-loader.png +0 -0
- data/templates/assets/source/images/vendor/icons-18-black.png +0 -0
- data/templates/assets/source/images/vendor/icons-18-white.png +0 -0
- data/templates/assets/source/images/vendor/icons-36-black.png +0 -0
- data/templates/assets/source/images/vendor/icons-36-white.png +0 -0
- data/templates/assets/source/index.html.erb +2 -0
- data/templates/assets/source/javascripts/app/index.js.coffee +2 -0
- data/templates/assets/source/javascripts/application.js.coffee +5 -0
- data/templates/assets/source/javascripts/vendor/cordova.js +4841 -0
- data/templates/assets/source/javascripts/vendor/jquery.js +9267 -0
- data/templates/assets/source/javascripts/vendor/jquery.mobile.js +7410 -0
- data/templates/assets/source/layout.erb +24 -0
- data/templates/assets/source/stylesheets/application.css.scss +2 -0
- data/templates/assets/source/stylesheets/vendor/jquery.mobile.css.scss +1872 -0
- data/templates/cordova_android/.gitignore +18 -0
- data/templates/cordova_android/LICENSE +202 -0
- data/templates/cordova_android/NOTICE +5 -0
- data/templates/cordova_android/README.md +95 -0
- data/templates/cordova_android/VERSION +1 -0
- data/templates/cordova_android/bin/BOOM +4 -0
- data/templates/cordova_android/bin/autotest +2 -0
- data/templates/cordova_android/bin/bench +29 -0
- data/templates/cordova_android/bin/create +46 -0
- data/templates/cordova_android/bin/create.bat +1 -0
- data/templates/cordova_android/bin/create.js +88 -0
- data/templates/cordova_android/bin/create.xml +79 -0
- data/templates/cordova_android/bin/node_modules/.bin/cake +7 -0
- data/templates/cordova_android/bin/node_modules/.bin/coffee +7 -0
- data/templates/cordova_android/bin/node_modules/.bin/nodeunit +120 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/.npmignore +11 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/LICENSE +22 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/README +48 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/Rakefile +78 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/bin/cake +7 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/bin/coffee +7 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/extras/jsl.conf +44 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/browser.js +75 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/cake.js +76 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/coffee-script.js +135 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/command.js +301 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/grammar.js +591 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/helpers.js +66 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/index.js +8 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/lexer.js +656 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/nodes.js +2289 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/optparse.js +111 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/parser.js +676 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/repl.js +123 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/rewriter.js +363 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/lib/scope.js +120 -0
- data/templates/cordova_android/bin/node_modules/coffee-script/package.json +27 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/.gitignore +5 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/.npmignore +3 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/CONTRIBUTORS.md +60 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/LICENSE +19 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/Makefile +126 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/README.md +432 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/bin/nodeunit +120 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/bin/nodeunit.json +10 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/deps/async.js +623 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/deps/console.log.js +55 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/deps/ejs.js +125 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/deps/json2.js +483 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/nodeunit.js +1757 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/suite1.js +12 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/suite2.js +13 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/test.html +16 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/img/example_fail.png +0 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/img/example_pass.png +0 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/index.js +3 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/assert.js +316 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/core.js +260 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/nodeunit.js +82 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/browser.js +119 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/default.js +123 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/html.js +107 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/index.js +9 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/junit.js +183 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/minimal.js +112 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/skip_passed.js +105 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/track.js +48 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/types.js +187 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/lib/utils.js +209 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/man1/nodeunit.1 +95 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/nodelint.cfg +4 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/package.json +56 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/share/junit.xml.ejs +19 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/share/license.js +11 -0
- data/templates/cordova_android/bin/node_modules/nodeunit/share/nodeunit.css +70 -0
- data/templates/cordova_android/bin/templates/project/.cordova/android/readme.md +1 -0
- data/templates/cordova_android/bin/templates/project/.cordova/readme.md +3 -0
- data/templates/cordova_android/bin/templates/project/cordova/create +36 -0
- data/templates/cordova_android/bin/templates/project/cordova/debug +9 -0
- data/templates/cordova_android/bin/templates/project/cordova/emulate +12 -0
- data/templates/cordova_android/bin/templates/project/cordova/log +3 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/Activity.java +16 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/AndroidManifest.xml +50 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/index.html +42 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/main.js +146 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/master.css +96 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/drawable/icon.png +0 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/xml/cordova.xml +5 -0
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/xml/plugins.xml +19 -0
- data/templates/cordova_android/bin/test +26 -0
- data/templates/cordova_android/bin/tests/autotest.coffee +4 -0
- data/templates/cordova_android/bin/tests/create.coffee +21 -0
- data/templates/cordova_android/bin/tests/debug.coffee +0 -0
- data/templates/cordova_android/bin/tests/test.coffee +0 -0
- data/templates/cordova_android/framework/.classpath +8 -0
- data/templates/cordova_android/framework/.project +33 -0
- data/templates/cordova_android/framework/AndroidManifest.xml +68 -0
- data/templates/cordova_android/framework/ant.properties +34 -0
- data/templates/cordova_android/framework/assets/js/accelerometer.js +137 -0
- data/templates/cordova_android/framework/assets/js/app.js +89 -0
- data/templates/cordova_android/framework/assets/js/battery.js +134 -0
- data/templates/cordova_android/framework/assets/js/camera.js +168 -0
- data/templates/cordova_android/framework/assets/js/capture.js +203 -0
- data/templates/cordova_android/framework/assets/js/compass.js +168 -0
- data/templates/cordova_android/framework/assets/js/contact.js +310 -0
- data/templates/cordova_android/framework/assets/js/cordova.android.js +4841 -0
- data/templates/cordova_android/framework/assets/js/cordova.js.base +924 -0
- data/templates/cordova_android/framework/assets/js/crypto.js +54 -0
- data/templates/cordova_android/framework/assets/js/device.js +83 -0
- data/templates/cordova_android/framework/assets/js/file.js +1082 -0
- data/templates/cordova_android/framework/assets/js/filetransfer.js +125 -0
- data/templates/cordova_android/framework/assets/js/geolocation.js +209 -0
- data/templates/cordova_android/framework/assets/js/header.txt +19 -0
- data/templates/cordova_android/framework/assets/js/media.js +233 -0
- data/templates/cordova_android/framework/assets/js/network.js +100 -0
- data/templates/cordova_android/framework/assets/js/notification.js +133 -0
- data/templates/cordova_android/framework/assets/js/position.js +100 -0
- data/templates/cordova_android/framework/assets/js/storage.js +439 -0
- data/templates/cordova_android/framework/assets/www/index.html +27 -0
- data/templates/cordova_android/framework/build.xml +216 -0
- data/templates/cordova_android/framework/libs/commons-codec-1.3.jar +0 -0
- data/templates/cordova_android/framework/proguard-project.txt +20 -0
- data/templates/cordova_android/framework/project.properties +14 -0
- data/templates/cordova_android/framework/res/drawable/icon.png +0 -0
- data/templates/cordova_android/framework/res/drawable/splash.png +0 -0
- data/templates/cordova_android/framework/res/layout/main.xml +29 -0
- data/templates/cordova_android/framework/res/values/strings.xml +23 -0
- data/templates/cordova_android/framework/res/xml/cordova.xml +37 -0
- data/templates/cordova_android/framework/res/xml/plugins.xml +37 -0
- data/templates/cordova_android/framework/src/com/phonegap/api/IPlugin.java +27 -0
- data/templates/cordova_android/framework/src/com/phonegap/api/LOG.java +28 -0
- data/templates/cordova_android/framework/src/com/phonegap/api/PhonegapActivity.java +28 -0
- data/templates/cordova_android/framework/src/com/phonegap/api/Plugin.java +27 -0
- data/templates/cordova_android/framework/src/com/phonegap/api/PluginManager.java +35 -0
- data/templates/cordova_android/framework/src/com/phonegap/api/PluginResult.java +53 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/AccelListener.java +311 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/App.java +198 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/AudioHandler.java +364 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/AudioPlayer.java +450 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/AuthenticationToken.java +69 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/BatteryListener.java +156 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/CallbackServer.java +431 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/CameraLauncher.java +500 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/Capture.java +400 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/CompassListener.java +308 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessor.java +198 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessorSdk5.java +1934 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/ContactManager.java +113 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/CordovaChromeClient.java +314 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/CordovaWebViewClient.java +306 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/Device.java +219 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/DirectoryManager.java +161 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/DroidGap.java +1417 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/ExifHelper.java +165 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/FileTransfer.java +458 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/FileUploadResult.java +63 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/FileUtils.java +1048 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/GeoBroker.java +165 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/GeoListener.java +133 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/GpsListener.java +163 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/HttpHandler.java +80 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java +104 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/NetworkListener.java +153 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/NetworkManager.java +248 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/Notification.java +366 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/PreferenceNode.java +34 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/PreferenceSet.java +62 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/StandAlone.java +35 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/Storage.java +239 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/TempListener.java +112 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/CordovaInterface.java +145 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/IPlugin.java +116 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/LOG.java +234 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/Plugin.java +210 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginManager.java +359 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginResult.java +119 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/file/EncodingException.java +28 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/file/FileExistsException.java +28 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/file/InvalidModificationException.java +29 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/file/NoModificationAllowedException.java +28 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/file/TypeMismatchException.java +29 -0
- data/templates/cordova_android/framework/test/org/apache/cordova/PreferenceNodeTest.java +53 -0
- data/templates/cordova_android/framework/test/org/apache/cordova/PreferenceSetTest.java +73 -0
- metadata +279 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
Nodeunit contributors (sorted alphabeticaly)
|
2
|
+
============================================
|
3
|
+
|
4
|
+
* **[Alex Gorbatchev](https://github.com/alexgorbatchev)**
|
5
|
+
|
6
|
+
* Deeper default object inspection
|
7
|
+
* Timeout to ensure flushing of console output (default reporter)
|
8
|
+
|
9
|
+
* **[Alex Wolfe](https://github.com/alexkwolfe)**
|
10
|
+
|
11
|
+
* HTML test reporter
|
12
|
+
|
13
|
+
* **[Caolan McMahon](https://github.com/caolan)**
|
14
|
+
|
15
|
+
* Author and maintainer
|
16
|
+
* Most features develpopment
|
17
|
+
|
18
|
+
* **[Carl Fürstenberg](https://github.com/azatoth)**
|
19
|
+
|
20
|
+
* Debian-friendly Makefile, supports both 'node' and 'nodejs' executables
|
21
|
+
* Sandbox utility
|
22
|
+
* Minimal test reporter
|
23
|
+
|
24
|
+
* **[Gerad Suyderhoud](https://github.com/gerad)**
|
25
|
+
|
26
|
+
* First comand-line tool
|
27
|
+
|
28
|
+
* **[Kadir Pekel](https://github.com/coffeemate)**
|
29
|
+
|
30
|
+
* Improvements to default test reporter
|
31
|
+
* HTTP test utility
|
32
|
+
|
33
|
+
* **[Matthias Lübken](https://github.com/luebken)**
|
34
|
+
|
35
|
+
* Utility functions for tracking incomplete tests on exit
|
36
|
+
|
37
|
+
* **[Oleg Efimov](https://github.com/Sannis)**
|
38
|
+
|
39
|
+
* Adding 'make lint' and fixing nodelint errors
|
40
|
+
* Option parsing, --help text and config file support
|
41
|
+
* Reporters option for command-line tool
|
42
|
+
|
43
|
+
* **[Orlando Vazquez](https://github.com/orlandov)**
|
44
|
+
|
45
|
+
* Added jUnit XML reporter
|
46
|
+
|
47
|
+
* **[Ryan Dahl](https://github.com/ry)**
|
48
|
+
|
49
|
+
* Add package.json
|
50
|
+
|
51
|
+
* **[Sam Stephenson](https://github.com/sstephenson)**
|
52
|
+
|
53
|
+
* Coffee-script support
|
54
|
+
|
55
|
+
* **[Thomas Mayfield](https://github.com/thegreatape)**
|
56
|
+
|
57
|
+
* Async setUp and tearDown support for testCase
|
58
|
+
|
59
|
+
**[Full contributors list](https://github.com/caolan/nodeunit/contributors).**
|
60
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2010 Caolan McMahon
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
@@ -0,0 +1,126 @@
|
|
1
|
+
PACKAGE = nodeunit
|
2
|
+
NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node)
|
3
|
+
|
4
|
+
PREFIX ?= /usr/local
|
5
|
+
BINDIR ?= $(PREFIX)/bin
|
6
|
+
DATADIR ?= $(PREFIX)/share
|
7
|
+
MANDIR ?= $(PREFIX)/share/man
|
8
|
+
LIBDIR ?= $(PREFIX)/lib
|
9
|
+
NODEJSLIBDIR ?= $(LIBDIR)/$(NODEJS)
|
10
|
+
|
11
|
+
BUILDDIR = dist
|
12
|
+
|
13
|
+
DOCS = $(shell find doc -name '*.md' \
|
14
|
+
|sed 's|.md|.1|g' \
|
15
|
+
|sed 's|doc/|man1/|g' \
|
16
|
+
)
|
17
|
+
|
18
|
+
|
19
|
+
$(shell if [ ! -d $(BUILDDIR) ]; then mkdir $(BUILDDIR); fi)
|
20
|
+
|
21
|
+
all: build doc
|
22
|
+
|
23
|
+
browser:
|
24
|
+
# super hacky build script for browser version!
|
25
|
+
mkdir -p $(BUILDDIR)/browser
|
26
|
+
rm -rf $(BUILDDIR)/browser/*
|
27
|
+
# build browser version of nodeunit.js
|
28
|
+
cat share/license.js >> $(BUILDDIR)/browser/nodeunit.js
|
29
|
+
echo "nodeunit = (function(){" >> $(BUILDDIR)/browser/nodeunit.js
|
30
|
+
cat deps/json2.js >> $(BUILDDIR)/browser/nodeunit.js
|
31
|
+
# make assert global
|
32
|
+
echo "var assert = this.assert = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
33
|
+
echo "var types = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
34
|
+
echo "var core = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
35
|
+
echo "var nodeunit = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
36
|
+
echo "var reporter = {};" >> $(BUILDDIR)/browser/nodeunit.js
|
37
|
+
cat deps/async.js >> $(BUILDDIR)/browser/nodeunit.js
|
38
|
+
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
39
|
+
cat lib/assert.js >> $(BUILDDIR)/browser/nodeunit.js
|
40
|
+
echo "})(assert);" >> $(BUILDDIR)/browser/nodeunit.js
|
41
|
+
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
42
|
+
cat lib/types.js >> $(BUILDDIR)/browser/nodeunit.js
|
43
|
+
echo "})(types);" >> $(BUILDDIR)/browser/nodeunit.js
|
44
|
+
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
45
|
+
cat lib/core.js >> $(BUILDDIR)/browser/nodeunit.js
|
46
|
+
echo "})(core);" >> $(BUILDDIR)/browser/nodeunit.js
|
47
|
+
echo "(function(exports){" >> $(BUILDDIR)/browser/nodeunit.js
|
48
|
+
cat lib/reporters/browser.js >> $(BUILDDIR)/browser/nodeunit.js
|
49
|
+
echo "})(reporter);" >> $(BUILDDIR)/browser/nodeunit.js
|
50
|
+
echo "nodeunit = core;" >> $(BUILDDIR)/browser/nodeunit.js
|
51
|
+
echo "nodeunit.assert = assert;" >> $(BUILDDIR)/browser/nodeunit.js
|
52
|
+
echo "nodeunit.reporter = reporter;" >> $(BUILDDIR)/browser/nodeunit.js
|
53
|
+
echo "nodeunit.run = reporter.run;" >> $(BUILDDIR)/browser/nodeunit.js
|
54
|
+
echo "return nodeunit; })();" >> $(BUILDDIR)/browser/nodeunit.js
|
55
|
+
sed -i "/\@REMOVE_LINE_FOR_BROWSER/d" $(BUILDDIR)/browser/nodeunit.js
|
56
|
+
# copy nodeunit.css
|
57
|
+
cp share/nodeunit.css $(BUILDDIR)/browser/nodeunit.css
|
58
|
+
# create nodeunit.min.js
|
59
|
+
uglifyjs $(BUILDDIR)/browser/nodeunit.js > $(BUILDDIR)/browser/nodeunit.min.js
|
60
|
+
# create test scripts
|
61
|
+
mkdir -p $(BUILDDIR)/browser/test
|
62
|
+
cp test/test.html $(BUILDDIR)/browser/test/test.html
|
63
|
+
# test-base.js
|
64
|
+
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-base.js
|
65
|
+
cat test/test-base.js >> $(BUILDDIR)/browser/test/test-base.js
|
66
|
+
echo "})(this.test_base = {});" >> $(BUILDDIR)/browser/test/test-base.js
|
67
|
+
sed -i "/\@REMOVE_LINE_FOR_BROWSER/d" $(BUILDDIR)/browser/test/test-base.js
|
68
|
+
# test-runmodule.js
|
69
|
+
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-runmodule.js
|
70
|
+
cat test/test-runmodule.js >> $(BUILDDIR)/browser/test/test-runmodule.js
|
71
|
+
echo "})(this.test_runmodule = {});" >> $(BUILDDIR)/browser/test/test-runmodule.js
|
72
|
+
sed -i "/\@REMOVE_LINE_FOR_BROWSER/d" $(BUILDDIR)/browser/test/test-runmodule.js
|
73
|
+
# test-runtest.js
|
74
|
+
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-runtest.js
|
75
|
+
cat test/test-runtest.js >> $(BUILDDIR)/browser/test/test-runtest.js
|
76
|
+
echo "})(this.test_runtest = {});" >> $(BUILDDIR)/browser/test/test-runtest.js
|
77
|
+
sed -i "/\@REMOVE_LINE_FOR_BROWSER/d" $(BUILDDIR)/browser/test/test-runtest.js
|
78
|
+
# test-testcase.js
|
79
|
+
echo "(function (exports) {" > $(BUILDDIR)/browser/test/test-testcase.js
|
80
|
+
cat test/test-testcase.js >> $(BUILDDIR)/browser/test/test-testcase.js
|
81
|
+
echo "})(this.test_testcase = {});" >> $(BUILDDIR)/browser/test/test-testcase.js
|
82
|
+
sed -i "/\@REMOVE_LINE_FOR_BROWSER/d" $(BUILDDIR)/browser/test/test-testcase.js
|
83
|
+
# copy nodeunit.js to dist/browser/test to make it easier for me to host and
|
84
|
+
# run on windows VMs with IE
|
85
|
+
cp $(BUILDDIR)/browser/nodeunit.js $(BUILDDIR)/browser/test/nodeunit.js
|
86
|
+
cp $(BUILDDIR)/browser/nodeunit.css $(BUILDDIR)/browser/test/nodeunit.css
|
87
|
+
|
88
|
+
build: stamp-build
|
89
|
+
|
90
|
+
stamp-build: $(wildcard deps/* lib/*.js)
|
91
|
+
touch $@;
|
92
|
+
mkdir -p $(BUILDDIR)/nodeunit
|
93
|
+
cp -R bin deps index.js lib package.json $(BUILDDIR)/nodeunit
|
94
|
+
printf '#!/bin/sh\n$(NODEJS) $(NODEJSLIBDIR)/$(PACKAGE)/bin/nodeunit $$@' > $(BUILDDIR)/nodeunit.sh
|
95
|
+
|
96
|
+
test:
|
97
|
+
$(NODEJS) ./bin/nodeunit test
|
98
|
+
|
99
|
+
install: build
|
100
|
+
install -d $(NODEJSLIBDIR)
|
101
|
+
cp -a $(BUILDDIR)/nodeunit $(NODEJSLIBDIR)
|
102
|
+
install -m 0755 $(BUILDDIR)/nodeunit.sh $(BINDIR)/nodeunit
|
103
|
+
install -d $(MANDIR)/man1/
|
104
|
+
cp -a man1/nodeunit.1 $(MANDIR)/man1/
|
105
|
+
|
106
|
+
uninstall:
|
107
|
+
rm -rf $(NODEJSLIBDIR)/nodeunit $(NODEJSLIBDIR)/nodeunit.js $(BINDIR)/nodeunit
|
108
|
+
rm -rf $(MANDIR)/man1/nodeunit.1
|
109
|
+
|
110
|
+
clean:
|
111
|
+
rm -rf $(BUILDDIR) stamp-build
|
112
|
+
|
113
|
+
lint:
|
114
|
+
nodelint --config nodelint.cfg ./index.js ./bin/nodeunit ./bin/nodeunit.json ./lib/*.js ./lib/reporters/*.js ./test/*.js
|
115
|
+
|
116
|
+
doc: man1 $(DOCS)
|
117
|
+
@true
|
118
|
+
|
119
|
+
man1:
|
120
|
+
@if ! test -d man1 ; then mkdir -p man1 ; fi
|
121
|
+
|
122
|
+
# use `npm install ronn` for this to work.
|
123
|
+
man1/%.1: doc/%.md
|
124
|
+
ronn --roff $< > $@
|
125
|
+
|
126
|
+
.PHONY: browser test install uninstall build all
|
@@ -0,0 +1,432 @@
|
|
1
|
+
Nodeunit
|
2
|
+
========
|
3
|
+
|
4
|
+
Simple syntax, powerful tools. Nodeunit provides easy async unit testing for
|
5
|
+
node.js and the browser.
|
6
|
+
|
7
|
+
* Simple to use
|
8
|
+
* Just export the tests from a module
|
9
|
+
* Works with node.js and in the browser.
|
10
|
+
* Helps you avoid common pitfalls when testing asynchronous code
|
11
|
+
* Easy to add test cases with setUp and tearDown functions if you wish
|
12
|
+
* Flexible reporters for custom output, built-in support for HTML and jUnit XML
|
13
|
+
* Allows the use of mocks and stubs
|
14
|
+
|
15
|
+
__Contributors__
|
16
|
+
|
17
|
+
* [alexgorbatchev](https://github.com/alexgorbatchev)
|
18
|
+
* [alexkwolfe](https://github.com/alexkwolfe)
|
19
|
+
* [azatoth](https://github.com/azatoth)
|
20
|
+
* [coffeemate](https://github.com/coffeemate)
|
21
|
+
* [luebken](https://github.com/luebken)
|
22
|
+
* [orlandov](https://github.com/orlandov)
|
23
|
+
* [Sannis](https://github.com/Sannis)
|
24
|
+
* [sstephenson](https://github.com/sstephenson)
|
25
|
+
* [thegreatape](https://github.com/thegreatape)
|
26
|
+
* and thanks to [cjohansen](https://github.com/cjohansen) for input and advice
|
27
|
+
on implementing setUp and tearDown functions. See
|
28
|
+
[cjohansen's fork](https://github.com/cjohansen/nodeunit).
|
29
|
+
|
30
|
+
Also, check out gerad's [nodeunit-dsl](https://github.com/gerad/nodeunit-dsl)
|
31
|
+
project, which implements a 'pretty dsl on top of nodeunit'.
|
32
|
+
|
33
|
+
More contributor information can be found in the
|
34
|
+
[CONTRIBUTORS.md](https://github.com/caolan/nodeunit/blob/master/CONTRIBUTORS.md)
|
35
|
+
file.
|
36
|
+
|
37
|
+
Usage
|
38
|
+
-----
|
39
|
+
|
40
|
+
Here is an example unit test module:
|
41
|
+
|
42
|
+
exports.testSomething = function(test){
|
43
|
+
test.expect(1);
|
44
|
+
test.ok(true, "this assertion should pass");
|
45
|
+
test.done();
|
46
|
+
};
|
47
|
+
|
48
|
+
exports.testSomethingElse = function(test){
|
49
|
+
test.ok(false, "this assertion should fail");
|
50
|
+
test.done();
|
51
|
+
};
|
52
|
+
|
53
|
+
When run using the included test runner, this will output the following:
|
54
|
+
|
55
|
+
<img src="https://github.com/caolan/nodeunit/raw/master/img/example_fail.png" />
|
56
|
+
|
57
|
+
Installation
|
58
|
+
------------
|
59
|
+
|
60
|
+
There are two options for installing nodeunit:
|
61
|
+
|
62
|
+
1. Clone / download nodeunit from [github](https://github.com/caolan/nodeunit),
|
63
|
+
then:
|
64
|
+
|
65
|
+
make && sudo make install
|
66
|
+
|
67
|
+
2. Install via npm:
|
68
|
+
|
69
|
+
npm install nodeunit
|
70
|
+
|
71
|
+
API Documentation
|
72
|
+
-----------------
|
73
|
+
|
74
|
+
Nodeunit uses the functions available in the node.js
|
75
|
+
[assert module](http://nodejs.org/docs/v0.4.2/api/assert.html):
|
76
|
+
|
77
|
+
* __ok(value, [message])__ - Tests if value is a true value.
|
78
|
+
* __equal(actual, expected, [message])__ - Tests shallow, coercive equality
|
79
|
+
with the equal comparison operator ( == ).
|
80
|
+
* __notEqual(actual, expected, [message])__ - Tests shallow, coercive
|
81
|
+
non-equality with the not equal comparison operator ( != ).
|
82
|
+
* __deepEqual(actual, expected, [message])__ - Tests for deep equality.
|
83
|
+
* __notDeepEqual(actual, expected, [message])__ - Tests for any deep
|
84
|
+
inequality.
|
85
|
+
* __strictEqual(actual, expected, [message])__ - Tests strict equality, as
|
86
|
+
determined by the strict equality operator ( === )
|
87
|
+
* __notStrictEqual(actual, expected, [message])__ - Tests strict non-equality,
|
88
|
+
as determined by the strict not equal operator ( !== )
|
89
|
+
* __throws(block, [error], [message])__ - Expects block to throw an error.
|
90
|
+
* __doesNotThrow(block, [error], [message])__ - Expects block not to throw an
|
91
|
+
error.
|
92
|
+
* __ifError(value)__ - Tests if value is not a false value, throws if it is a
|
93
|
+
true value. Useful when testing the first argument, error in callbacks.
|
94
|
+
|
95
|
+
Nodeunit also provides the following functions within tests:
|
96
|
+
|
97
|
+
* __expect(amount)__ - Specify how many assertions are expected to run within a
|
98
|
+
test. Very useful for ensuring that all your callbacks and assertions are
|
99
|
+
run.
|
100
|
+
* __done()__ - Finish the current test function, and move on to the next. ALL
|
101
|
+
tests should call this!
|
102
|
+
|
103
|
+
Nodeunit aims to be simple and easy to learn. This is achieved through using
|
104
|
+
existing structures (such as node.js modules) to maximum effect, and reducing
|
105
|
+
the API where possible, to make it easier to digest.
|
106
|
+
|
107
|
+
Tests are simply exported from a module, but they are still run in the order
|
108
|
+
they are defined.
|
109
|
+
|
110
|
+
__Note:__ Users of old nodeunit versions may remember using ok, equals and same
|
111
|
+
in the style of qunit, instead of the assert functions above. These functions
|
112
|
+
still exist for backwards compatibility, and are simply aliases to their assert
|
113
|
+
module counterparts.
|
114
|
+
|
115
|
+
|
116
|
+
Asynchronous Testing
|
117
|
+
--------------------
|
118
|
+
|
119
|
+
When testing asynchronous code, there are a number of sharp edges to watch out
|
120
|
+
for. Thankfully, nodeunit is designed to help you avoid as many of these
|
121
|
+
pitfalls as possible. For the most part, testing asynchronous code in nodeunit
|
122
|
+
_just works_.
|
123
|
+
|
124
|
+
|
125
|
+
### Tests run in series
|
126
|
+
|
127
|
+
While running tests in parallel seems like a good idea for speeding up your
|
128
|
+
test suite, in practice I've found it means writing much more complicated
|
129
|
+
tests. Because of node's module cache, running tests in parallel means mocking
|
130
|
+
and stubbing is pretty much impossible. One of the nicest things about testing
|
131
|
+
in javascript is the ease of doing stubs:
|
132
|
+
|
133
|
+
var _readFile = fs.readFile;
|
134
|
+
fs.readFile = function(path, callback){
|
135
|
+
// its a stub!
|
136
|
+
};
|
137
|
+
// test function that uses fs.readFile
|
138
|
+
|
139
|
+
// we're done
|
140
|
+
fs.readFile = _readFile;
|
141
|
+
|
142
|
+
You cannot do this when running tests in parallel. In order to keep testing as
|
143
|
+
simple as possible, nodeunit avoids it. Thankfully, most unit-test suites run
|
144
|
+
fast anyway.
|
145
|
+
|
146
|
+
|
147
|
+
### Explicit ending of tests
|
148
|
+
|
149
|
+
When testing async code its important that tests end at the correct point, not
|
150
|
+
just after a given number of assertions. Otherwise your tests can run short,
|
151
|
+
ending before all assertions have completed. Its important to detect too
|
152
|
+
many assertions as well as too few. Combining explicit ending of tests with
|
153
|
+
an expected number of assertions helps to avoid false test passes, so be sure
|
154
|
+
to use the test.expect() method at the start of your test functions, and
|
155
|
+
test.done() when finished.
|
156
|
+
|
157
|
+
|
158
|
+
Groups, setUp and tearDown
|
159
|
+
--------------------------
|
160
|
+
|
161
|
+
Nodeunit allows the nesting of test functions:
|
162
|
+
|
163
|
+
exports.test1 = function (test) {
|
164
|
+
...
|
165
|
+
}
|
166
|
+
|
167
|
+
exports.group = {
|
168
|
+
test2: function (test) {
|
169
|
+
...
|
170
|
+
},
|
171
|
+
test3: function (test) {
|
172
|
+
...
|
173
|
+
}
|
174
|
+
}
|
175
|
+
|
176
|
+
This would be run as:
|
177
|
+
|
178
|
+
test1
|
179
|
+
group - test2
|
180
|
+
group - test3
|
181
|
+
|
182
|
+
Using these groups its possible to add setUp and tearDown functions to your
|
183
|
+
tests. Nodeunit has a utility function called testCase which allows you to
|
184
|
+
define a setUp function, which is run before each test, and a tearDown
|
185
|
+
function, which is run after each test calls test.done():
|
186
|
+
|
187
|
+
var testCase = require('nodeunit').testCase;
|
188
|
+
|
189
|
+
module.exports = testCase({
|
190
|
+
setUp: function (callback) {
|
191
|
+
this.foo = 'bar';
|
192
|
+
callback();
|
193
|
+
},
|
194
|
+
tearDown: function (callback) {
|
195
|
+
// clean up
|
196
|
+
callback();
|
197
|
+
},
|
198
|
+
test1: function (test) {
|
199
|
+
test.equals(this.foo, 'bar');
|
200
|
+
test.done();
|
201
|
+
}
|
202
|
+
});
|
203
|
+
|
204
|
+
In this way, its possible to have multiple groups of tests in a module, each
|
205
|
+
group with its own setUp and tearDown functions.
|
206
|
+
|
207
|
+
|
208
|
+
Running Tests
|
209
|
+
-------------
|
210
|
+
|
211
|
+
Nodeunit comes with a basic command-line test runner, which can be installed
|
212
|
+
using 'sudo make install'. Example usage:
|
213
|
+
|
214
|
+
nodeunit testmodule1.js testfolder [...]
|
215
|
+
|
216
|
+
The default test reporter uses color output, because I think that's more fun :) I
|
217
|
+
intend to add a no-color option in future. To give you a feeling of the fun you'll
|
218
|
+
be having writing tests, lets fix the example at the start of the README:
|
219
|
+
|
220
|
+
<img src="https://github.com/caolan/nodeunit/raw/master/img/example_pass.png" />
|
221
|
+
|
222
|
+
Ahhh, Doesn't that feel better?
|
223
|
+
|
224
|
+
When using the included test runner, it will exit using the failed number of
|
225
|
+
assertions as the exit code. Exiting with 0 when all tests pass.
|
226
|
+
|
227
|
+
|
228
|
+
### Command-line Options
|
229
|
+
|
230
|
+
* __--reporter FILE__ - you can set the test reporter to a custom module or
|
231
|
+
on of the modules in nodeunit/lib/reporters, when omitted, the default test runner
|
232
|
+
is used.
|
233
|
+
* __--list-reporters__ - list available build-in reporters.
|
234
|
+
* __--config FILE__ - load config options from a JSON file, allows
|
235
|
+
the customisation of color schemes for the default test reporter etc. See
|
236
|
+
bin/nodeunit.json for current available options.
|
237
|
+
* __--version__ or __-v__ - report nodeunit version
|
238
|
+
* __--help__ - show nodeunit help
|
239
|
+
|
240
|
+
|
241
|
+
Running tests in the browser
|
242
|
+
----------------------------
|
243
|
+
|
244
|
+
Nodeunit tests can also be run inside the browser. For example usage, see
|
245
|
+
the examples/browser folder. The basic syntax is as follows:
|
246
|
+
|
247
|
+
__test.html__
|
248
|
+
|
249
|
+
<html>
|
250
|
+
<head>
|
251
|
+
<title>Example Test Suite</title>
|
252
|
+
<link rel="stylesheet" href="nodeunit.css" type="text/css" />
|
253
|
+
<script src="nodeunit.js"></script>
|
254
|
+
<script src="suite1.js"></script>
|
255
|
+
<script src="suite2.js"></script>
|
256
|
+
</head>
|
257
|
+
<body>
|
258
|
+
<h1 id="nodeunit-header>Example Test Suite</h1>
|
259
|
+
<script>
|
260
|
+
nodeunit.run({
|
261
|
+
'Suite One': suite1,
|
262
|
+
'Suite Two': suite2
|
263
|
+
});
|
264
|
+
</script>
|
265
|
+
</body>
|
266
|
+
</html>
|
267
|
+
|
268
|
+
Here, suite1 and suite2 are just object literals containing test functions or
|
269
|
+
groups, as would be returned if you did require('test-suite') in node.js:
|
270
|
+
|
271
|
+
__suite1.js__
|
272
|
+
|
273
|
+
this.suite1 = {
|
274
|
+
'example test': function (test) {
|
275
|
+
test.ok(true, 'everything is ok');
|
276
|
+
test.done();
|
277
|
+
}
|
278
|
+
};
|
279
|
+
|
280
|
+
If you wish to use a commonjs format for your test suites (using exports), it is
|
281
|
+
up to you to define the commonjs tools for the browser. There are a number of
|
282
|
+
alternatives and its important it fits with your existing code, which is
|
283
|
+
why nodeunit does not currently provide this out of the box.
|
284
|
+
|
285
|
+
In the example above, the tests will run when the page is loaded.
|
286
|
+
|
287
|
+
The browser-version of nodeunit.js is created in dist/browser when you do, 'make
|
288
|
+
browser'. You'll need [UglifyJS](https://github.com/mishoo/UglifyJS) installed in
|
289
|
+
order for it to automatically create nodeunit.min.js.
|
290
|
+
|
291
|
+
|
292
|
+
Adding nodeunit to Your Projects
|
293
|
+
--------------------------------
|
294
|
+
|
295
|
+
If you don't want people to have to install the nodeunit command-line tool,
|
296
|
+
you'll want to create a script that runs the tests for your project with the
|
297
|
+
correct require paths set up. Here's an example test script, with a deps
|
298
|
+
directory containing the projects dependencies:
|
299
|
+
|
300
|
+
#!/usr/bin/env node
|
301
|
+
require.paths.unshift(__dirname + '/deps');
|
302
|
+
|
303
|
+
var reporter = require('nodeunit').reporters.default;
|
304
|
+
reporter.run(['test']);
|
305
|
+
|
306
|
+
If you're using git, you might find it useful to include nodeunit as a
|
307
|
+
submodule. Using submodules makes it easy for developers to download nodeunit
|
308
|
+
and run your test suite, without cluttering up your repository with
|
309
|
+
the source code. To add nodeunit as a git submodule do the following:
|
310
|
+
|
311
|
+
git submodule add git://github.com/caolan/nodeunit.git deps/nodeunit
|
312
|
+
|
313
|
+
This will add nodeunit to the deps folder of your project. Now, when cloning
|
314
|
+
the repository, nodeunit can be downloaded by doing the following:
|
315
|
+
|
316
|
+
git submodule init
|
317
|
+
git submodule update
|
318
|
+
|
319
|
+
Let's update the test script above with a helpful hint on how to get nodeunit,
|
320
|
+
if its missing:
|
321
|
+
|
322
|
+
#!/usr/bin/env node
|
323
|
+
|
324
|
+
require.paths.unshift(__dirname + '/deps');
|
325
|
+
|
326
|
+
try {
|
327
|
+
var reporter = require('nodeunit').reporters.default;
|
328
|
+
}
|
329
|
+
catch(e) {
|
330
|
+
console.log("Cannot find nodeunit module.");
|
331
|
+
console.log("You can download submodules for this project by doing:");
|
332
|
+
console.log("");
|
333
|
+
console.log(" git submodule init");
|
334
|
+
console.log(" git submodule update");
|
335
|
+
console.log("");
|
336
|
+
process.exit();
|
337
|
+
}
|
338
|
+
|
339
|
+
process.chdir(__dirname);
|
340
|
+
reporter.run(['test']);
|
341
|
+
|
342
|
+
Now if someone attempts to run your test suite without nodeunit installed they
|
343
|
+
will be prompted to download the submodules for your project.
|
344
|
+
|
345
|
+
|
346
|
+
Built-in Test Reporters
|
347
|
+
-----------------------
|
348
|
+
|
349
|
+
* __default__ - The standard reporter seen in the nodeunit screenshots
|
350
|
+
* __minimal__ - Pretty, minimal output, shows errors and progress only
|
351
|
+
* __html__ - Outputs a HTML report to stdout
|
352
|
+
* __junit__ - Creates jUnit compatible XML reports, which can be used with
|
353
|
+
continuous integration tools such as [Hudson](http://hudson-ci.org/).
|
354
|
+
|
355
|
+
|
356
|
+
Writing a Test Reporter
|
357
|
+
---------------------
|
358
|
+
|
359
|
+
Nodeunit exports runTest(fn, options), runModule(mod, options) and
|
360
|
+
runFiles(paths, options). You'll most likely want to run test suites from
|
361
|
+
files, which can be done using the latter function. The _options_ argument can
|
362
|
+
contain callbacks which run during testing. Nodeunit provides the following
|
363
|
+
callbacks:
|
364
|
+
|
365
|
+
* __moduleStart(name)__ - called before a module is tested
|
366
|
+
* __moduleDone(name, assertions)__ - called once all test functions within the
|
367
|
+
module have completed (see assertions object reference below)
|
368
|
+
ALL tests within the module
|
369
|
+
* __testStart(name)__ - called before a test function is run
|
370
|
+
* __testDone(name, assertions)__ - called once a test function has completed
|
371
|
+
(by calling test.done())
|
372
|
+
* __log(assertion)__ - called whenever an assertion is made (see assertion
|
373
|
+
object reference below)
|
374
|
+
* __done(assertions)__ - called after all tests/modules are complete
|
375
|
+
|
376
|
+
The __assertion__ object:
|
377
|
+
|
378
|
+
* __passed()__ - did the assertion pass?
|
379
|
+
* __failed()__ - did the assertion fail?
|
380
|
+
* __error__ - the AssertionError if the assertion failed
|
381
|
+
* __method__ - the nodeunit assertion method used (ok, same, equals...)
|
382
|
+
* __message__ - the message the assertion method was called with (optional)
|
383
|
+
|
384
|
+
The __assertionList__ object:
|
385
|
+
|
386
|
+
* An array-like object with the following new attributes:
|
387
|
+
* __failures()__ - the number of assertions which failed
|
388
|
+
* __duration__ - the time taken for the test to complete in msecs
|
389
|
+
|
390
|
+
For a reference implementation of a test reporter, see lib/reporters/default.js in
|
391
|
+
the nodeunit project directory.
|
392
|
+
|
393
|
+
|
394
|
+
Sandbox utility
|
395
|
+
---------------
|
396
|
+
|
397
|
+
This is a function which evaluates JavaScript files in a sandbox and returns the
|
398
|
+
context. The sandbox function can be used for testing client-side code or private
|
399
|
+
un-exported functions within a module.
|
400
|
+
|
401
|
+
var sandbox = require('nodeunit').utils.sandbox;
|
402
|
+
var example = sandbox('example.js');
|
403
|
+
|
404
|
+
__sandbox(files, sandbox)__ - Evaluates JavaScript files in a sandbox, returning
|
405
|
+
the context. The first argument can either be a single filename or an array of
|
406
|
+
filenames. If multiple filenames are given their contents are concatenated before
|
407
|
+
evalution. The second argument is an optional context to use for the sandbox.
|
408
|
+
|
409
|
+
|
410
|
+
Running the nodeunit Tests
|
411
|
+
--------------------------
|
412
|
+
|
413
|
+
The tests for nodeunit are written using nodeunit itself as the test framework.
|
414
|
+
However, the module test-base.js first does some basic tests using the assert
|
415
|
+
module to ensure that test functions are actually run, and a basic level of
|
416
|
+
nodeunit functionality is available.
|
417
|
+
|
418
|
+
To run the nodeunit tests do:
|
419
|
+
|
420
|
+
make test
|
421
|
+
|
422
|
+
__Note:__ There was a bug in node v0.2.0 causing the tests to hang, upgrading
|
423
|
+
to v0.2.1 fixes this.
|
424
|
+
|
425
|
+
|
426
|
+
Contributing
|
427
|
+
------------
|
428
|
+
|
429
|
+
Contributions to the project are most welcome, so feel free to fork and improve.
|
430
|
+
When submitting a pull request, please run 'make lint' first to ensure
|
431
|
+
we're following a consistent coding style.
|
432
|
+
|