refactor(angular): externalize script load order into JSON

- move all script load order into angularFiles.js
- rakefile and angular-bootstrap.js use angularFiles.js to get script orders
- gen_jstd_configs.js uses angularFiles.js to generate various jstd config files
- run gen_jstd_configs.js whenever we run server.sh

Closes #470
This commit is contained in:
Di Peng 2011-08-15 16:17:12 -07:00 committed by Igor Minar
parent 8017340cd1
commit a13653c814
11 changed files with 197 additions and 359 deletions

1
.gitignore vendored
View file

@ -10,3 +10,4 @@ performance/temp*.html
*~
angular.js.tmproj
node_modules
jsTestDriver*.conf

View file

@ -1,62 +1,8 @@
require 'yaml'
include FileUtils
ANGULAR = [
'src/Angular.js',
'src/JSON.js',
'src/Compiler.js',
'src/Scope.js',
'src/Injector.js',
'src/parser.js',
'src/Resource.js',
'src/Browser.js',
'src/sanitizer.js',
'src/jqLite.js',
'src/apis.js',
'src/filters.js',
'src/formatters.js',
'src/validators.js',
'src/service/cookieStore.js',
'src/service/cookies.js',
'src/service/defer.js',
'src/service/document.js',
'src/service/exceptionHandler.js',
'src/service/hover.js',
'src/service/invalidWidgets.js',
'src/service/location.js',
'src/service/log.js',
'src/service/resource.js',
'src/service/route.js',
'src/service/routeParams.js',
'src/service/sniffer.js',
'src/service/window.js',
'src/service/xhr.bulk.js',
'src/service/xhr.cache.js',
'src/service/xhr.error.js',
'src/service/xhr.js',
'src/service/locale.js',
'src/directives.js',
'src/markups.js',
'src/widgets.js',
'src/AngularPublic.js',
]
ANGULAR_SCENARIO = [
'src/scenario/Scenario.js',
'src/scenario/Application.js',
'src/scenario/Describe.js',
'src/scenario/Future.js',
'src/scenario/ObjectModel.js',
'src/scenario/Describe.js',
'src/scenario/Runner.js',
'src/scenario/SpecRunner.js',
'src/scenario/dsl.js',
'src/scenario/matchers.js',
'src/scenario/output/Html.js',
'src/scenario/output/Json.js',
'src/scenario/output/Xml.js',
'src/scenario/output/Object.js'
]
content = File.open('angularFiles.js', 'r') {|f| f.read }
files = eval(content.gsub(/angularFiles = /, '').gsub(/:/, '=>'));
BUILD_DIR = 'build'
@ -92,8 +38,8 @@ task :compile_scenario => :init do
deps = [
'lib/jquery/jquery-1.4.2.js',
'src/scenario/angular.prefix',
ANGULAR,
ANGULAR_SCENARIO,
files['angularSrc'],
files['angularScenario'],
'src/scenario/angular.suffix',
]
@ -194,7 +140,7 @@ task :compile => [:init, :compile_scenario, :compile_jstd_scenario_adapter, :gen
deps = [
'src/angular.prefix',
ANGULAR,
files['angularSrc'],
'src/angular.suffix',
]

139
angularFiles.js vendored Normal file
View file

@ -0,0 +1,139 @@
angularFiles = {
'angularSrc': [
'src/Angular.js',
'src/JSON.js',
'src/Compiler.js',
'src/Scope.js',
'src/Injector.js',
'src/parser.js',
'src/Resource.js',
'src/Browser.js',
'src/sanitizer.js',
'src/jqLite.js',
'src/apis.js',
'src/filters.js',
'src/formatters.js',
'src/validators.js',
'src/service/cookieStore.js',
'src/service/cookies.js',
'src/service/defer.js',
'src/service/document.js',
'src/service/exceptionHandler.js',
'src/service/hover.js',
'src/service/invalidWidgets.js',
'src/service/location.js',
'src/service/log.js',
'src/service/resource.js',
'src/service/route.js',
'src/service/routeParams.js',
'src/service/sniffer.js',
'src/service/window.js',
'src/service/xhr.bulk.js',
'src/service/xhr.cache.js',
'src/service/xhr.error.js',
'src/service/xhr.js',
'src/service/locale.js',
'src/directives.js',
'src/markups.js',
'src/widgets.js',
'src/AngularPublic.js',
],
'angularScenario': [
'src/scenario/Scenario.js',
'src/scenario/Application.js',
'src/scenario/Describe.js',
'src/scenario/Future.js',
'src/scenario/ObjectModel.js',
'src/scenario/Describe.js',
'src/scenario/Runner.js',
'src/scenario/SpecRunner.js',
'src/scenario/dsl.js',
'src/scenario/matchers.js',
'src/scenario/output/Html.js',
'src/scenario/output/Json.js',
'src/scenario/output/Xml.js',
'src/scenario/output/Object.js'
],
'jstd': [
'lib/jasmine-1.0.1/jasmine.js',
'lib/jasmine-jstd-adapter/JasmineAdapter.js',
'lib/jquery/jquery-1.4.2.js',
'test/jquery_remove.js',
'@angularSrc',
'example/personalLog/*.js',
'test/testabilityPatch.js',
'src/scenario/Scenario.js',
'src/scenario/output/*.js',
'src/jstd-scenario-adapter/*.js',
'src/scenario/*.js',
'src/angular-mocks.js',
'test/mocks.js',
'test/scenario/*.js',
'test/scenario/output/*.js',
'test/jstd-scenario-adapter/*.js',
'test/*.js',
'test/service/*.js',
'example/personalLog/test/*.js'
],
'jstdExclude': [
'test/jquery_alias.js',
'src/angular-bootstrap.js',
'src/scenario/angular-bootstrap.js',
'src/AngularPublic.js'
],
'jstdScenario': [
'build/angular-scenario.js',
'build/jstd-scenario-adapter-config.js',
'build/jstd-scenario-adapter.js',
'build/docs/docs-scenario.js'
],
'jstdPerf': [
'lib/jasmine-1.0.1/jasmine.js',
'lib/jasmine-jstd-adapter/JasmineAdapter.js',
'angularSrc',
'src/angular-mocks.js',
'perf/data/*.js',
'perf/testUtils.js',
'perf/*.js'
],
'jstdPerfExclude': [
'src/angular-bootstrap.js',
'src/scenario/angular-bootstrap.js',
'src/AngularPublic.js'
],
'jstdJquery': [
'lib/jasmine-1.0.1/jasmine.js',
'lib/jasmine-jstd-adapter/JasmineAdapter.js',
'lib/jquery/jquery-1.4.2.js',
'test/jquery_alias.js',
'@angularSrc',
'example/personalLog/*.js',
'test/testabilityPatch.js',
'src/scenario/Scenario.js',
'src/scenario/output/*.js',
'src/jstd-scenario-adapter/*.js',
'src/scenario/*.js',
'src/angular-mocks.js',
'test/mocks.js',
'test/scenario/*.js',
'test/scenario/output/*.js',
'test/jstd-scenario-adapter/*.js',
'test/*.js',
'test/service/*.js',
'example/personalLog/test/*.js'
],
'jstdJqueryExclude': [
'src/angular-bootstrap.js',
'src/AngularPublic.js',
'src/scenario/angular-bootstrap.js',
'test/jquery_remove.js'
]
}

43
gen_jstd_configs.js Executable file
View file

@ -0,0 +1,43 @@
#!/usr/bin/env node
/* This file reads in list of files from angularFiles.js and generate various jstd config files */
var fs = require('fs'),
angularSrc,
angularScenario;
fs.readFile('angularFiles.js', function(err, data) {
eval(data.toString());
var prefix = 'server: http://localhost:9876\n\n',
prefixScenario = 'server: http://localhost:9877\n\n';
angularSrc = angularFiles.angularSrc.join('\n- ');
angularScenario = angularFiles.angularScenario.join('\n- ');
fs.writeFile('./jsTestDriver.conf', prefix + combine(angularFiles.jstd,
angularFiles.jstdExclude));
fs.writeFile('./jsTestDriver-scenario.conf', prefixScenario +
combine(angularFiles.jstdScenario) +
'\n\nproxy:\n- {matcher: "*", server: "http://localhost:8000"}');
fs.writeFile('./jsTestDriver-perf.conf', prefix + combine(angularFiles.jstdPerf,
angularFiles.jstdPerfExclude));
fs.writeFile('./jsTestDriver-jquery.conf', prefix + combine(angularFiles.jstdJquery,
angularFiles.jstdJqueryExclude));
fs.writeFile('./jsTestDriver-coverage.conf', prefix +
combine(angularFiles.jstd, angularFiles.jstdExclude) +
'\n\nplugin:\n- name: "coverage"\n' +
'jar: "lib/jstestdriver/coverage.jar"\n' +
'module: "com.google.jstestdriver.coverage.CoverageModule"');
});
function combine(load, exclude) {
var fileList = 'load:\n- ' + load.join('\n- ');
if (exclude) fileList += ('\n\nexclude:\n- ' + exclude.join('\n- '));
//Replace placeholders for src list before returning
return fileList.replace(/@angularSrc/g, angularSrc);
}

View file

@ -1,68 +0,0 @@
server: http://localhost:9876
load:
- lib/jasmine-1.0.1/jasmine.js
- lib/jasmine-jstd-adapter/JasmineAdapter.js
- lib/jquery/jquery-1.4.2.js
- test/jquery_remove.js
- src/Angular.js
- src/JSON.js
- src/Compiler.js
- src/Scope.js
- src/Injector.js
- src/parser.js
- src/Resource.js
- src/Browser.js
- src/sanitizer.js
- src/jqLite.js
- src/apis.js
- src/filters.js
- src/formatters.js
- src/validators.js
- src/service/cookieStore.js
- src/service/cookies.js
- src/service/defer.js
- src/service/document.js
- src/service/exceptionHandler.js
- src/service/hover.js
- src/service/invalidWidgets.js
- src/service/location.js
- src/service/log.js
- src/service/resource.js
- src/service/route.js
- src/service/sniffer.js
- src/service/window.js
- src/service/xhr.bulk.js
- src/service/xhr.cache.js
- src/service/xhr.error.js
- src/service/xhr.js
- src/service/locale.js
- src/directives.js
- src/markups.js
- src/widgets.js
- example/personalLog/*.js
- test/testabilityPatch.js
- src/scenario/Scenario.js
- src/scenario/output/*.js
- src/jstd-scenario-adapter/*.js
- src/scenario/*.js
- src/angular-mocks.js
- test/mocks.js
- test/scenario/*.js
- test/scenario/output/*.js
- test/jstd-scenario-adapter/*.js
- test/*.js
- test/service/*.js
- example/personalLog/test/*.js
exclude:
- test/jquery_alias.js
- src/angular-bootstrap.js
- src/scenario/angular-bootstrap.js
- src/AngularPublic.js
plugin:
- name: "coverage"
jar: "lib/jstestdriver/coverage.jar"
module: "com.google.jstestdriver.coverage.CoverageModule"

View file

@ -1,64 +0,0 @@
server: http://localhost:9876
load:
- lib/jasmine-1.0.1/jasmine.js
- lib/jasmine-jstd-adapter/JasmineAdapter.js
- lib/jquery/jquery-1.4.2.js
- test/jquery_alias.js
- src/Angular.js
- src/JSON.js
- src/Compiler.js
- src/Scope.js
- src/Injector.js
- src/parser.js
- src/Resource.js
- src/Browser.js
- src/sanitizer.js
- src/jqLite.js
- src/apis.js
- src/filters.js
- src/formatters.js
- src/validators.js
- src/service/cookieStore.js
- src/service/cookies.js
- src/service/defer.js
- src/service/document.js
- src/service/exceptionHandler.js
- src/service/hover.js
- src/service/invalidWidgets.js
- src/service/location.js
- src/service/log.js
- src/service/resource.js
- src/service/route.js
- src/service/routeParams.js
- src/service/sniffer.js
- src/service/window.js
- src/service/xhr.bulk.js
- src/service/xhr.cache.js
- src/service/xhr.error.js
- src/service/xhr.js
- src/service/locale.js
- src/directives.js
- src/markups.js
- src/widgets.js
- example/personalLog/*.js
- test/testabilityPatch.js
- src/scenario/Scenario.js
- src/scenario/output/*.js
- src/jstd-scenario-adapter/*.js
- src/scenario/*.js
- src/angular-mocks.js
- test/mocks.js
- test/scenario/*.js
- test/scenario/output/*.js
- test/jstd-scenario-adapter/*.js
- test/*.js
- test/service/*.js
- example/personalLog/test/*.js
exclude:
- src/angular-bootstrap.js
- src/AngularPublic.js
- src/scenario/angular-bootstrap.js
- test/jquery_remove.js

View file

@ -1,50 +0,0 @@
server: http://localhost:9876
load:
- lib/jasmine-1.0.1/jasmine.js
- lib/jasmine-jstd-adapter/JasmineAdapter.js
- src/Angular.js
- src/JSON.js
- src/Compiler.js
- src/Scope.js
- src/Injector.js
- src/parser.js
- src/Resource.js
- src/Browser.js
- src/sanitizer.js
- src/jqLite.js
- src/apis.js
- src/filters.js
- src/formatters.js
- src/validators.js
- src/service/cookieStore.js
- src/service/cookies.js
- src/service/defer.js
- src/service/document.js
- src/service/exceptionHandler.js
- src/service/hover.js
- src/service/invalidWidgets.js
- src/service/location.js
- src/service/log.js
- src/service/resource.js
- src/service/route.js
- src/service/routeParams.js
- src/service/sniffer.js
- src/service/window.js
- src/service/xhr.bulk.js
- src/service/xhr.cache.js
- src/service/xhr.error.js
- src/service/xhr.js
- src/service/locale.js
- src/directives.js
- src/markups.js
- src/widgets.js
- src/angular-mocks.js
- perf/data/*.js
- perf/testUtils.js
- perf/*.js
exclude:
- src/angular-bootstrap.js
- src/scenario/angular-bootstrap.js
- src/AngularPublic.js

View file

@ -1,10 +0,0 @@
server: http://localhost:9877
load:
- build/angular-scenario.js
- build/jstd-scenario-adapter-config.js
- build/jstd-scenario-adapter.js
- build/docs/docs-scenario.js
proxy:
- {matcher: "*", server: "http://localhost:8000"}

View file

@ -1,63 +0,0 @@
server: http://localhost:9876
load:
- lib/jasmine-1.0.1/jasmine.js
- lib/jasmine-jstd-adapter/JasmineAdapter.js
- lib/jquery/jquery-1.4.2.js
- test/jquery_remove.js
- src/Angular.js
- src/JSON.js
- src/Compiler.js
- src/Scope.js
- src/Injector.js
- src/parser.js
- src/Resource.js
- src/Browser.js
- src/sanitizer.js
- src/jqLite.js
- src/apis.js
- src/filters.js
- src/formatters.js
- src/validators.js
- src/service/cookieStore.js
- src/service/cookies.js
- src/service/defer.js
- src/service/document.js
- src/service/exceptionHandler.js
- src/service/hover.js
- src/service/invalidWidgets.js
- src/service/location.js
- src/service/log.js
- src/service/resource.js
- src/service/route.js
- src/service/routeParams.js
- src/service/sniffer.js
- src/service/window.js
- src/service/xhr.bulk.js
- src/service/xhr.cache.js
- src/service/xhr.error.js
- src/service/xhr.js
- src/service/locale.js
- src/directives.js
- src/markups.js
- src/widgets.js
- example/personalLog/*.js
- test/testabilityPatch.js
- src/scenario/Scenario.js
- src/scenario/output/*.js
- src/jstd-scenario-adapter/*.js
- src/scenario/*.js
- src/angular-mocks.js
- test/mocks.js
- test/scenario/*.js
- test/scenario/output/*.js
- test/jstd-scenario-adapter/*.js
- test/*.js
- test/service/*.js
- example/personalLog/test/*.js
exclude:
- test/jquery_alias.js
- src/angular-bootstrap.js
- src/scenario/angular-bootstrap.js
- src/AngularPublic.js

View file

@ -1,3 +1,4 @@
#!/bin/bash
node gen_jstd_configs.js
java -jar lib/jstestdriver/JsTestDriver.jar --port 9876 --browserTimeout 90000

View file

@ -64,7 +64,10 @@
}
};
function addScripts(){
window.addScripts = function(scripts) {
delete window.addScripts;
delete window.angularFiles;
var prop, i;
// initialize the window property cache
@ -75,8 +78,8 @@
}
// load the js scripts
for (i in Array.prototype.slice.call(arguments, 0)) {
var file = arguments[i];
for (i in scripts) {
var file = scripts[i].replace(/src\//, '');
document.write('<script type="text/javascript" src="' + serverPath + file + '" ' +
'onload="angularClobberTest(\'' + file + '\')"></script>');
}
@ -89,48 +92,8 @@
addCss('angular.css');
addScripts('Angular.js',
'JSON.js',
'Compiler.js',
'Scope.js',
'Injector.js',
'jqLite.js',
'parser.js',
'Resource.js',
'Browser.js',
'sanitizer.js',
'AngularPublic.js',
// Extension points
'service/cookieStore.js',
'service/cookies.js',
'service/defer.js',
'service/document.js',
'service/exceptionHandler.js',
'service/hover.js',
'service/invalidWidgets.js',
'service/location.js',
'service/log.js',
'service/resource.js',
'service/route.js',
'service/routeParams.js',
'service/sniffer.js',
'service/window.js',
'service/xhr.bulk.js',
'service/xhr.cache.js',
'service/xhr.error.js',
'service/xhr.js',
'service/locale.js',
'apis.js',
'filters.js',
'formatters.js',
'validators.js',
'directives.js',
'markups.js',
'widgets.js');
document.write('<script type="text/javascript" src="' + serverPath + '../angularFiles.js' + '" ' +
'onload="addScripts(angularFiles.angularSrc)"></script>');
function onLoadListener(){
// empty the cache to prevent mem leaks