A set of Asynchronous Module Definition AMD compliance tests.
The amd-js test suite comes with a node based test runner. Node is available from the node.js website. A version greater than 0.8.0 is recommended.
Clone this repository into a local directory, install dependencies with the npm install
command, and start the server:
You can visit http://localhost:4000 in your browser and run the tests from there.
Adding Your Own AMD FrameworkAn implementation needs to have the following two files in the impl directory:
The configure script should define the following global variables:
Please then add your framework to server/manifest
and add a line to .travis.yml
to begin auto-testing your code.
It's possible to run the AMD-JS tests as part of your existing CI system. You need to provide bridges between the AMD-JS suite and your unit testing framework of choice. You can do this by either implementing a global amdJSPrint
object or defining/implementing a global system
object on which a print()
method resides.
Here is a rudimentary system that just outputs to the console:
window.amdJSPrint = function (message, type) { console.log(message, type); };
pass
, fail
, info
, or done
.Using the above, this would be the QUnit equivalent. We use the QUnit stop and start methods to support any asynchronous operations that may be occuring in the test. In the example below, we also proxy our go
method, allowing us to capture when a require() call begins, and when all callbacks have completed.
// load me after your AMD implementation that provides // "go", "config", and "implemented" (function() { var oldGo = window.go; window.go = function () { var newArgs = [].splice.call(arguments, 0); var fn = newArgs[newArgs.length - 1]; // pause qunit test execution until the dependencies // are resolved stop(); newArgs[newArgs.length - 1] = function () { fn.apply(undefined, arguments); start(); }; oldGo.apply(window, newArgs); }; window.amdJSPrint = function (message, type) { if (type === 'info' || type === 'done') return; test(message, function() { ok(type === 'pass', message); }); }; })();
We recommend mounting this repository as a git submodule, at which point you can have your testing framework invoke each individual js test.
If you wish to hook this up directly to Travis-CI, an element is added to the page (#travis-results) with a pass/fail string as its contents. A capture of console.log()
will also output details in the CI runs.
Each test type builds on the other: supporting later test types implies support for earlier test types.
Basic AMD Functionality (basic)in the basic_ directories (except basic_require)*
Very basic loading of named modules that have dependency arrays.
in the basic_require directory
Basic require() support, in accordance with the amdjs require API:
in the anon_ directories*
Similar tests to basic, but using anonymous modules.
CommonJS Compatibility (funcString)in the cjs_define directory
Tests parsing of definition functions via Function.prototype.toString() to get out dependencies. Used to support simplified CommonJS module wrapping:
define(function (require) { var a = require('a'); // Return the module definition. return {}; });CommonJS Compatibility with Named Modules (namedWrap)
in the cjs_named directory
Similar to the funcString tests, but using named modules.
define('some/module', function (require) { var a = require('a'); //Return the module definition. return {}; });AMD Loader Plugins (plugins)
in the plugin_double, plugin_fromtext, plugin_normalize directories*
Support for loader plugins.
in the plugin_dynamic and plugin_dynamic_string directories*
Support for loader plugins that use dynamic: true to indicate their resources should not be cached by the loader. Instead the loader should call the plugin's load() method for each instance of a dependency that can be loaded by the plugin.
in the config_packages directory
Support for the common config API section on map config.
in the config_map and config_map_ directories*
Support for the common config API section on map config.
in the config_module directory
Support for the common config API section on module config.
in the config_paths directory
Support for the common config API section on paths config.
in the config_shim directory
Support for the common config API section on shim config.
amdjs-tests is released under two licenses: new BSD, and MIT. See the LICENSE file for more info.
The individual loader implementations are subject to their own specific licenses. This license only covers the tests.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4