test: add cli integration test (#18738)

This adds cli integration test which creates a hello-world and tests it.

PR Close #18738
This commit is contained in:
Miško Hevery 2017-08-16 13:00:00 -07:00 committed by Miško Hevery
parent 0cc77b4a69
commit 56a5b02d04
3 changed files with 85 additions and 1 deletions

View File

@ -1,10 +1,13 @@
built/ built/
dist/ dist/
vendor/ vendor/
yarn.lock
.ng-cli/
cli-*/**
*/src/*.d.ts */src/*.d.ts
*/src/*.js */src/*.js
**/*.ngfactory.ts **/*.ngfactory.ts
**/*.ngsummary.json **/*.ngsummary.json
**/*.ngsummary.ts **/*.ngsummary.ts
*/yarn* */yarn*
*/.yarn_local_cache* **/.yarn_local_cache*

70
integration/ng-cli-create.sh Executable file
View File

@ -0,0 +1,70 @@
#!/usr/bin/env bash
set -e -o pipefail
if [ $# -eq 0 ]
then
echo "Angular cli integration create project"
echo
echo "./ng-cli-create.sh [project-name]"
echo
else
TEMP=`dirname $0`
INTEGRATION_DIR=`(cd $TEMP; pwd)`
PROJECT=$1
PROJECT_DIR=$INTEGRATION_DIR/$PROJECT
NG=$INTEGRATION_DIR/.ng-cli/node_modules/.bin/ng
(
echo "==================="
echo Creating $PROJECT...
echo "==================="
cd $INTEGRATION_DIR
rm -rf $PROJECT
$NG set --global packageManager=yarn
$NG new $PROJECT --skip-install
echo "==================="
echo $PROJECT created
echo "==================="
)
# By default `ng new` creates a package.json which uses @angular/* from NPM.
# Instead we want to use them from the current build so we overwrite theme here.
(
echo "==================="
echo Updating $PROJECT bundles
echo "==================="
cd $PROJECT_DIR
sed -i -E 's/ng build/ng build --prod --build-optimizer/g' package.json
sed -i -E 's/ng test/ng test --single-run/g' package.json
# workaround for https://github.com/angular/angular-cli/issues/7401
sed -i -E 's/"@angular\/cli\"\: \".*\"/"@angular\/cli": "https:\/\/github.com\/angular\/cli-builds"/g' package.json
yarn add \
file:../../dist/packages-dist/compiler-cli \
file:../../dist/packages-dist/language-service \
--save-dev --skip-integrity-check --emoji
yarn add \
file:../../dist/packages-dist/core \
file:../../dist/packages-dist/common \
file:../../dist/packages-dist/forms \
file:../../dist/packages-dist/http \
--save --skip-integrity-check --emoji
# yarn bug: can not install all of them in a single command and it has to be broken into separate invocations.
yarn add \
file:../../dist/packages-dist/animations \
file:../../dist/packages-dist/compiler \
file:../../dist/packages-dist/platform-browser \
file:../../dist/packages-dist/platform-browser-dynamic \
--save --skip-integrity-check --emoji
yarn install --emoji
echo "==================="
echo $PROJECT created succesfully
echo "==================="
)
fi

View File

@ -14,6 +14,17 @@ rm_cache
mkdir $cache mkdir $cache
trap rm_cache EXIT trap rm_cache EXIT
# We need to install `ng` but don't want to do it globally so we plate it into `.ng-cli` folder.
# This check prevents constant re-installing.
if [ ! -d ".ng-cli" ]; then
(
mkdir -p .ng-cli
cd .ng-cli
yarn add https://github.com/angular/cli-builds --cache-folder ../$cache
)
fi
./ng-cli-create.sh cli-hello-world
for testDir in $(ls | grep -v node_modules) ; do for testDir in $(ls | grep -v node_modules) ; do
[[ -d "$testDir" ]] || continue [[ -d "$testDir" ]] || continue
echo "#################################" echo "#################################"