DIR : /home/kozerus/public_html/pn/uize/site-source/js/Uize/Test/Runner.js

/home/kozerus/public_html/pn/uize/site-source/js/Uize/Test

/*______________
|       ______  |   U I Z E    J A V A S C R I P T    F R A M E W O R K
|     /      /  |   ---------------------------------------------------
|    /    O /   |    MODULE : Uize.Test.Runner Class
|   /    / /    |
|  /    / /  /| |    ONLINE : http://www.uize.com
| /____/ /__/_| | COPYRIGHT : (c)2010-2016 UIZE
|          /___ |   LICENSE : Available under MIT License or GNU General Public License
|_______________|             http://www.uize.com/license.html
*/

/* Module Meta Data
	type: Class
	importance: 2
	codeCompleteness: 80
	docCompleteness: 5
*/

/*?
	Introduction
		The =Uize.Test.Runner= package module provides a way to dynamically produce a test runner instance that can act as a wrapper for running tests for one or more modules.

		*DEVELOPERS:* `Chris van Rensburg`
*/

Uize.module ({
	name:'Uize.Test.Runner',
	required:[
		'Uize.Str.Repeat',
		'Uize.Test',
		'Uize.Data.Matches',
		'Uize.Util.ModuleNaming',
		'Uize.Util.Matchers.ModuleNameMatcher'
	],
	builder:function () {
		'use strict';

		var
			/*** Variables for Scruncher Optimization ***/
				_Uize = Uize,
				_Uize_Util_ModuleNaming = _Uize.Util.ModuleNaming,
				_Uize_Test = _Uize.Test,
				_repeat = _Uize.Str.Repeat.repeat,
				_matchingValues = _Uize.Data.Matches.values
		;

		return _Uize.package ({
			resolve:function (_params,_getJsModules,_moduleExists,_consoleLog,_onDone,_callback) {
				var
					_module = _params.module || '*',
					_console = (_params.silent == 'true' ? 'silent' : _params.console) || 'summary'
				;

				function _createTestRunnerInstanceAndCallCallback (_TestClass) {
					var
						_testInstance = new _TestClass,
						_logChunks = []
					;
					function _log (_logChunk) {
						_console == 'verbose' && _consoleLog (_logChunk);
						_logChunks.push (_logChunk);
					}
					_testInstance.wire ({
						Start:
							function (_event) {
								_log (_repeat ('   ',_event.source.getDepth ()) + _event.source.get ('title'));
							},
						Done:
							function (_event) {
								var
									_test = _event.source,
									_reasonForFailure = _test.get ('reasonForFailure')
								;
								/*** add to log ***/
									_log (
										_repeat ('   ',_test.getDepth () + 1) +
										(
											_test.get ('result')
												? ('PASSED!!! (duration: ' + _test.get ('duration') + 'ms)')
												: ('*** FAILED *** ' + (_reasonForFailure || ''))
										)
									);

								/*** finish up if the test fails or if unit tests complete ***/
									if (_test == _testInstance || !_test.get ('result')) {
										var _synopsis = _test.getSynopsis ();
										(_console != 'silent' || _reasonForFailure) && _consoleLog (_synopsis);
										_logChunks.push (_synopsis);
										_onDone && _onDone (_reasonForFailure,_logChunks);
										_test.get ('result') || (_Uize.global().WScript && WScript.Quit (1));
									}
							}
					});
					_callback (_testInstance);
				}

				if (typeof _module == 'string') {
					/*** determine modules to test ***/
						var _modulesToTest;
						if (_Uize_Util_ModuleNaming.isModuleName (_module)) {
							_modulesToTest = [_Uize_Util_ModuleNaming.getModuleNameFromTestModuleName (_module)];
						} else {
							var
								_moduleNameMatcher = _Uize.Util.Matchers.ModuleNameMatcher.resolve (_module),
								_libraryModuleSuffixRegExp = /\.library$/i,
								_modulesExcludingLibraryModules = _matchingValues (
									_getJsModules ().sort (),
									function (_moduleName) {
										return !_libraryModuleSuffixRegExp.test (_moduleName); // ignore .library modules
									}
								),
								_modulesLookup = _Uize.lookup (_modulesExcludingLibraryModules)
							;
							_modulesToTest = _matchingValues (
								_modulesExcludingLibraryModules,
								function (_moduleName) {
									return (
										!/^[a-zA-Z_\$][a-zA-Z0-9_\$]*\.Test($|\.)/.test (_moduleName) && // ignore test modules
										_moduleNameMatcher (_moduleName) // only include modules from module name matcher
									);
								}
							);
						}

					/*** resolve modules to test to test class and run tests ***/
						var _testModuleName;
						if (_modulesToTest.length == 1) {
							var _moduleToTest = _modulesToTest [0];
							_testModuleName = _Uize_Util_ModuleNaming.getTestModuleName (_moduleToTest);
							if (_moduleExists (_testModuleName)) {
								_Uize.require (_testModuleName,_createTestRunnerInstanceAndCallCallback);
							} else {
								_createTestRunnerInstanceAndCallCallback (
									_Uize_Test.requiredModulesTest (
										_Uize_Util_ModuleNaming.getModuleNameFromTestModuleName (_moduleToTest)
									)
								);
							}
						} else {
							_createTestRunnerInstanceAndCallCallback (
								_Uize_Test.resolve ({
									title:'Unit Tests Suite',
									test:_Uize.map (
										_modulesToTest,
										function (_moduleName) {
											return (
												_modulesLookup [
													_testModuleName = _Uize_Util_ModuleNaming.getTestModuleName (_moduleName)
												]
													? _Uize_Test.testModuleTest (_testModuleName)
													: _Uize_Test.requiredModulesTest (_moduleName)
											);
										}
									)
								})
							);
						}
				} else {
					_createTestRunnerInstanceAndCallCallback (_module);
				}
			}
		});
	}
});

//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer