92 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*global jasmine, __karma__, window*/
 | |
| (function () {
 | |
| 
 | |
| // Error.stackTraceLimit = Infinity;
 | |
| 
 | |
| jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
 | |
| 
 | |
| // Cancel Karma's synchronous start,
 | |
| // we call `__karma__.start()` later, once all the specs are loaded.
 | |
| __karma__.loaded = function () { };
 | |
| 
 | |
| // SET THE RUNTIME APPLICATION ROOT HERE
 | |
| var appRoot ='app'; // no trailing slash!
 | |
| 
 | |
| // RegExp for client application base path within karma (which always starts 'base\')
 | |
| var karmaBase = '^\/base\/'; // RegEx string for base of karma folders
 | |
| var appPackage = 'base/' + appRoot; //e.g., base/app
 | |
| var appRootRe = new RegExp(karmaBase + appRoot + '\/');
 | |
| var onlyAppFilesRe = new RegExp(karmaBase + appRoot + '\/(?!.*\.spec\.js$)([a-z0-9-_\.\/]+)\.js$');
 | |
| 
 | |
| var moduleNames = [];
 | |
| 
 | |
| // Configure systemjs packages to use the .js extension for imports from the app folder
 | |
| var packages = {};
 | |
| packages[appPackage] = {
 | |
|     defaultExtension: false,
 | |
|     format: 'register',
 | |
|     map: Object.keys(window.__karma__.files)
 | |
|       .filter(onlyAppFiles)
 | |
|       // Create local module name mapping to karma file path for app files
 | |
|       // with karma's fingerprint in query string, e.g.:
 | |
|       // './hero.service': '/base/app/hero.service.js?f4523daf879cfb7310ef6242682ccf10b2041b3e'
 | |
|       .reduce(function (pathsMapping, appPath) {
 | |
|         var moduleName = appPath.replace(appRootRe, './').replace(/\.js$/, '');
 | |
|         pathsMapping[moduleName] = appPath + '?' + window.__karma__.files[appPath];
 | |
|         return pathsMapping;
 | |
|       }, {})
 | |
|   }
 | |
| 
 | |
| System.config({ packages: packages });
 | |
| 
 | |
| // Configure Angular for the browser and
 | |
| // with test versions of the platform providers
 | |
| System.import('angular2/testing')
 | |
|   .then(function (testing) {
 | |
|     return System.import('angular2/platform/testing/browser')
 | |
|       .then(function (providers) {
 | |
|         testing.setBaseTestProviders(
 | |
|           providers.TEST_BROWSER_PLATFORM_PROVIDERS,
 | |
|           providers.TEST_BROWSER_APPLICATION_PROVIDERS
 | |
|         );
 | |
|       });
 | |
|   })
 | |
| 
 | |
| // Load all spec files
 | |
| // (e.g. 'base/app/hero.service.spec.js')
 | |
| .then(function () {
 | |
|   return Promise.all(
 | |
|     Object.keys(window.__karma__.files)
 | |
|       .filter(onlySpecFiles)
 | |
|       .map(function (moduleName) {
 | |
|         moduleNames.push(moduleName);
 | |
|         return System.import(moduleName);
 | |
|       }));
 | |
| })
 | |
| 
 | |
| .then(success, fail);
 | |
| 
 | |
| ////// Helpers //////
 | |
| 
 | |
| function onlyAppFiles(filePath) {
 | |
|   return onlyAppFilesRe.test(filePath);
 | |
| }
 | |
| 
 | |
| function onlySpecFiles(filePath) {
 | |
|   return /\.spec\.js$/.test(filePath);
 | |
| }
 | |
| 
 | |
| function success () {
 | |
|   console.log(
 | |
|     'Spec files loaded:\n  ' +
 | |
|     moduleNames.join('\n  ') +
 | |
|     '\nStarting Jasmine testrunner');
 | |
|   __karma__.start();
 | |
| }
 | |
| 
 | |
| function fail(error) {
 | |
|   __karma__.error(error.stack || error);
 | |
| }
 | |
| 
 | |
| })();
 |