test: cleanup rxjs custom build

The latest rxjs release works with closure compiler out of the box.
We no longer need to compile our own.

Also put closure options into a file rather than using a shell script.
This commit is contained in:
Alex Eagle 2017-05-03 10:45:45 -07:00 committed by Matias Niemelä
parent 7f9c589ba3
commit 5856298798
11 changed files with 50 additions and 151 deletions

View File

@ -1,4 +1,3 @@
/rxjs/
built/ built/
dist/ dist/
vendor/ vendor/

View File

@ -32,13 +32,7 @@ Angular's `node_modules` is installed.
## Running integration tests ## Running integration tests
The first time you run the tests, you'll need some setup: You can iterate on the tests by keeping the dist folder up-to-date.
```shell
$ ./integration/build_rxjs_es6.sh
```
Now you can iterate on the tests by keeping the dist folder up-to-date.
See the `package.json` of the test(s) you're debugging, to see which dist/ folders they install from. See the `package.json` of the test(s) you're debugging, to see which dist/ folders they install from.
Then run the right `tsc --watch` command to keep those dist folders up-to-date, for example: Then run the right `tsc --watch` command to keep those dist folders up-to-date, for example:

View File

@ -1,19 +0,0 @@
#!/usr/bin/env bash
# This script builds rxjs from source, with an ES6 target, and with tsickle turned on.
# We need to do this until we work with the RxJS team to get a distribution that works
# with Closure Compiler.
# Note that in nodejs, we still run the standard RxJS distribution. This one is only
# used for the bundle that targets a browser runtime.
# TODO(alexeagle): discuss with Jay Phelps once we have a recommendation
set -e -o pipefail
cd `dirname $0`
rm -rf rxjs
git clone https://github.com/ReactiveX/rxjs.git --depth=200
git -C rxjs/ checkout 5.0.3
cp rxjs.tsconfig.json rxjs/
TSC="node --max-old-space-size=3000 ../dist/tools/@angular/tsc-wrapped/src/main"
$TSC -p rxjs/rxjs.tsconfig.json

View File

@ -1,53 +0,0 @@
#!/usr/bin/env bash
# Build a folder using angular ES6 and the closure compiler
set -e -o pipefail
# The ES6 distro we built for rxjs works only in the browser, not in nodejs.
# Since we installed rxjs in node_modules for ngc to use, we have to point
# to the alternate distro when compiling with closure.
rm -rf vendor
mkdir vendor
cp -pr ../rxjs/dist/es6 vendor/rxjs
CLOSURE_ARGS=(
"--language_in=ES6_STRICT"
"--language_out=ES5"
"--compilation_level=ADVANCED_OPTIMIZATIONS"
"--warning_level=QUIET"
"--js_output_file=dist/bundle.js"
"--create_source_map=%outname%.map"
"--variable_renaming_report=dist/variable_renaming_report"
"--property_renaming_report=dist/property_renaming_report"
# Don't include ES6 polyfills
"--rewrite_polyfills=false"
# List of path prefixes to be removed from ES6 & CommonJS modules.
"--js_module_root=node_modules/@angular/core"
"--js_module_root=node_modules/@angular/common"
"--js_module_root=node_modules/@angular/compiler"
"--js_module_root=node_modules/@angular/platform-browser"
"--js_module_root=vendor"
# Uncomment for easier debugging
# "--formatting=PRETTY_PRINT"
node_modules/@angular/core/src/testability/testability.externs.js
node_modules/zone.js/dist/zone.js
$(find -L vendor/rxjs -name *.js)
node_modules/@angular/core/@angular/core.js
node_modules/@angular/common/@angular/common.js
node_modules/@angular/compiler/@angular/compiler.js
node_modules/@angular/platform-browser/@angular/platform-browser.js
"built/src/*.js"
"--entry_point=./built/src/main"
)
java -jar node_modules/google-closure-compiler/compiler.jar $(echo ${CLOSURE_ARGS[*]})
# gzip on Travis doesn't have --keep option so copy the original file first
cp dist/bundle.js dist/bundle.tmp
gzip -f dist/bundle.js
mv dist/bundle.tmp dist/bundle.js
ls -alH dist/bundle*

View File

@ -0,0 +1,30 @@
--compilation_level=ADVANCED_OPTIMIZATIONS
--language_out=ES5
--js_output_file=dist/bundle.js
--output_manifest=dist/manifest.MF
--variable_renaming_report=dist/variable_renaming_report
--property_renaming_report=dist/property_renaming_report
--create_source_map=%outname%.map
--warning_level=QUIET
--dependency_mode=STRICT
--rewrite_polyfills=false
node_modules/zone.js/dist/zone_externs.js
--js node_modules/rxjs/**.js
--process_common_js_modules
--module_resolution=node
node_modules/@angular/core/@angular/core.js
--js_module_root=node_modules/@angular/core
node_modules/@angular/core/src/testability/testability.externs.js
node_modules/@angular/common/@angular/common.js
--js_module_root=node_modules/@angular/common
node_modules/@angular/platform-browser/@angular/platform-browser.js
--js_module_root=node_modules/@angular/platform-browser
--js built/**.js
--entry_point=built/src/main

View File

@ -5,7 +5,8 @@
"server": { "server": {
"baseDir": "src", "baseDir": "src",
"routes": { "routes": {
"/dist": "dist" "/dist": "dist",
"/node_modules": "node_modules"
}, },
"middleware": { "middleware": {
"0": null "0": null

View File

@ -11,10 +11,10 @@
"@angular/platform-browser": "file:../../dist/packages-dist/platform-browser", "@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
"@angular/platform-server": "file:../../dist/packages-dist/platform-server", "@angular/platform-server": "file:../../dist/packages-dist/platform-server",
"@angular/tsc-wrapped": "file:../../dist/tools/@angular/tsc-wrapped", "@angular/tsc-wrapped": "file:../../dist/tools/@angular/tsc-wrapped",
"google-closure-compiler": "20161201.0.0", "google-closure-compiler": "20170409.0.0",
"rxjs": "file:../../node_modules/rxjs", "rxjs": "5.3.1",
"typescript": "2.1.6", "typescript": "2.1.6",
"zone.js": "0.7.6" "zone.js": "0.8.6"
}, },
"devDependencies": { "devDependencies": {
"@types/jasmine": "2.5.41", "@types/jasmine": "2.5.41",
@ -23,7 +23,8 @@
"protractor": "file:../../node_modules/protractor" "protractor": "file:../../node_modules/protractor"
}, },
"scripts": { "scripts": {
"test": "ngc && ./bundle.sh && concurrently \"yarn run serve\" \"yarn run protractor\" --kill-others --success first", "closure": "java -jar node_modules/google-closure-compiler/compiler.jar --flagfile closure.conf",
"test": "ngc && yarn run closure && concurrently \"yarn run serve\" \"yarn run protractor\" --kill-others --success first",
"serve": "lite-server -c e2e/browser.config.json", "serve": "lite-server -c e2e/browser.config.json",
"preprotractor": "tsc -p e2e", "preprotractor": "tsc -p e2e",
"protractor": "protractor e2e/protractor.config.js" "protractor": "protractor e2e/protractor.config.js"

View File

@ -1,14 +1,18 @@
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Hello World</title> <title>Hello World</title>
<base href="/"> <base href="/">
</head> </head>
<body>
<hello-world-app>Loading...</hello-world-app>
<script src="dist/bundle.js"></script> <body>
<hello-world-app>Loading...</hello-world-app>
<script src="node_modules/zone.js/dist/zone.min.js"></script>
<script src="dist/bundle.js"></script>
</body> </body>
</html> </html>

View File

@ -4,12 +4,6 @@ set -e -o pipefail
cd `dirname $0` cd `dirname $0`
if [ ! -d "rxjs/dist/es6" ]; then
echo "You must run build the ES2015 version of RxJS for some tests:"
echo "./integration/build_rxjs_es6.sh"
exit 1
fi
# Workaround https://github.com/yarnpkg/yarn/issues/2165 # Workaround https://github.com/yarnpkg/yarn/issues/2165
# Yarn will cache file://dist URIs and not update Angular code # Yarn will cache file://dist URIs and not update Angular code
readonly cache=.yarn_local_cache readonly cache=.yarn_local_cache
@ -20,7 +14,7 @@ rm_cache
mkdir $cache mkdir $cache
trap rm_cache EXIT trap rm_cache EXIT
for testDir in $(ls | grep -v rxjs | grep -v node_modules) ; do for testDir in $(ls | grep -v node_modules) ; do
[[ -d "$testDir" ]] || continue [[ -d "$testDir" ]] || continue
echo "#################################" echo "#################################"
echo "Running integration test $testDir" echo "Running integration test $testDir"

View File

@ -1,42 +0,0 @@
{
"angularCompilerOptions": {
"skipMetadataEmit": true,
"annotationsAs": "static fields",
"annotateForClosureCompiler": true
},
"compilerOptions": {
"types": [],
/**
* Remaining options are copied from
* https://github.com/ReactiveX/rxjs/blob/cba74135810a8e6bbe0b3c7732e8544b0869589e/tsconfig.json
* TODO(alexeagle): use "extends" instead when Angular is on TS 2.1
*/
"removeComments": false,
"preserveConstEnums": true,
"sourceMap": true,
"declaration": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"suppressImplicitAnyIndexErrors": true,
"moduleResolution": "node",
"module": "es2015",
"target": "es6",
"outDir": "dist/es6",
"lib": [
"es5",
"es2015.iterable",
"es2015.collection",
"es2015.promise",
"dom"
]
},
"formatCodeOptions": {
"indentSize": 2,
"tabSize": 2
},
"files": [
"src/Rx.ts"
]
}

View File

@ -37,16 +37,6 @@ travisFoldStart "tsc a bunch of useless stuff"
travisFoldEnd "tsc a bunch of useless stuff" travisFoldEnd "tsc a bunch of useless stuff"
# Build integration tests
if [[ ${CI_MODE:-} == "e2e_2" ]]; then
travisFoldStart "build.integration"
cd "`dirname $0`/../../integration"
./build_rxjs_es6.sh
cd -
travisFoldEnd "build.integration"
fi
# Build angular.io # Build angular.io
if [[ ${CI_MODE:-} == "aio" ]]; then if [[ ${CI_MODE:-} == "aio" ]]; then
travisFoldStart "build.aio" travisFoldStart "build.aio"