| 
									
										
										
										
											2017-01-27 09:17:50 -08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | set -u -e -o pipefail | 
					
						
							| 
									
										
										
										
											2017-01-27 09:17:50 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-15 15:36:11 -07:00
										 |  |  | # see https://circleci.com/docs/2.0/env-vars/#circleci-built-in-environment-variables | 
					
						
							|  |  |  | CI=${CI:-false} | 
					
						
							| 
									
										
										
										
											2018-02-27 17:06:06 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-15 15:36:11 -07:00
										 |  |  | cd "$(dirname "$0")" | 
					
						
							| 
									
										
										
										
											2017-01-27 09:17:50 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-15 15:36:11 -07:00
										 |  |  | # basedir is the workspace root | 
					
						
							|  |  |  | readonly basedir=$(pwd)/.. | 
					
						
							| 
									
										
										
										
											2019-10-06 12:06:53 +09:00
										 |  |  | readonly bazel_bin=$(yarn bin)/bazel | 
					
						
							| 
									
										
										
										
											2017-11-18 12:26:33 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-06 12:37:46 +01:00
										 |  |  | # When running on the CI, we track the payload size of various integration output files. Also | 
					
						
							|  |  |  | # we shard tests across multiple CI job instances. The script needs to be run with a shard index | 
					
						
							|  |  |  | # and the maximum amount of shards available for the integration tests on the CI. | 
					
						
							|  |  |  | # For example: "./run_tests.sh {SHARD_INDEX} {MAX_SHARDS}". | 
					
						
							| 
									
										
										
										
											2018-03-15 15:36:11 -07:00
										 |  |  | if $CI; then | 
					
						
							|  |  |  |   source ${basedir}/scripts/ci/payload-size.sh | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-06 12:37:46 +01:00
										 |  |  |   SHARD_INDEX=${1:?"No shard index has been specified."} | 
					
						
							|  |  |  |   MAX_SHARDS=${2:?"The maximum amount of shards has not been specified."} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Determines the tests that need to be run for this shard index. | 
					
						
							|  |  |  |   TEST_DIRS=$(node ./get-sharded-tests.js --shardIndex ${SHARD_INDEX} --maxShards ${MAX_SHARDS}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  |   # NB: we don't run build-packages-dist.sh because we expect that it was done | 
					
						
							|  |  |  |   # by an earlier job in the CircleCI workflow. | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   # Not on CircleCI so let's build the packages-dist directory. | 
					
						
							|  |  |  |   # This should be fast on incremental re-build. | 
					
						
							|  |  |  |   ${basedir}/scripts/build-packages-dist.sh | 
					
						
							| 
									
										
										
										
											2019-01-06 12:37:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # If we aren't running on CircleCI, we do not shard tests because this would be the job of | 
					
						
							|  |  |  |   # Bazel eventually. For now, we just run all tests sequentially when running locally. | 
					
						
							|  |  |  |   TEST_DIRS=$(ls | grep -v node_modules) | 
					
						
							| 
									
										
										
										
											2018-03-20 12:34:27 -07:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2017-08-03 15:18:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-10 16:23:44 -08:00
										 |  |  | # Workaround https://github.com/yarnpkg/yarn/issues/2165 | 
					
						
							|  |  |  | # Yarn will cache file://dist URIs and not update Angular code | 
					
						
							|  |  |  | readonly cache=.yarn_local_cache | 
					
						
							|  |  |  | function rm_cache { | 
					
						
							|  |  |  |   rm -rf $cache | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | rm_cache | 
					
						
							|  |  |  | mkdir $cache | 
					
						
							|  |  |  | trap rm_cache EXIT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-06 12:37:46 +01:00
										 |  |  | for testDir in ${TEST_DIRS}; do | 
					
						
							| 
									
										
										
										
											2017-01-27 09:17:50 -08:00
										 |  |  |   [[ -d "$testDir" ]] || continue | 
					
						
							|  |  |  |   echo "#################################" | 
					
						
							|  |  |  |   echo "Running integration test $testDir" | 
					
						
							|  |  |  |   echo "#################################" | 
					
						
							|  |  |  |   ( | 
					
						
							|  |  |  |     cd $testDir | 
					
						
							| 
									
										
										
										
											2017-08-03 15:18:55 -07:00
										 |  |  |     rm -rf dist | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-10 16:23:44 -08:00
										 |  |  |     yarn install --cache-folder ../$cache | 
					
						
							| 
									
										
										
										
											2017-02-09 19:08:16 +02:00
										 |  |  |     yarn test || exit 1 | 
					
						
							| 
									
										
										
										
											2018-10-31 13:03:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-02 12:28:23 +01:00
										 |  |  |     # Track payload size for cli-hello-world* tests, plus hello_world__closure | 
					
						
							|  |  |  |     if $CI && ([[ $testDir =~ cli-hello-world ]] || [[ $testDir == hello_world__closure ]]); then | 
					
						
							|  |  |  |       if ([[ $testDir =~ cli-hello-world ]]); then | 
					
						
							| 
									
										
										
										
											2017-08-03 15:18:55 -07:00
										 |  |  |         yarn build | 
					
						
							|  |  |  |       fi | 
					
						
							| 
									
										
										
										
											2018-10-31 13:03:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |       trackPayloadSize "$testDir" "dist/*.js" true false "${basedir}/integration/_payload-limits.json" | 
					
						
							| 
									
										
										
										
											2018-01-25 16:43:29 -08:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2018-10-31 13:03:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-15 15:36:11 -07:00
										 |  |  |     # remove the temporary node modules directory to keep the source folder clean. | 
					
						
							|  |  |  |     rm -rf node_modules | 
					
						
							| 
									
										
										
										
											2017-01-27 09:17:50 -08:00
										 |  |  |   ) | 
					
						
							|  |  |  | done | 
					
						
							| 
									
										
										
										
											2017-08-03 15:18:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-31 13:03:22 +02:00
										 |  |  | if $CI; then | 
					
						
							|  |  |  |   trackPayloadSize "umd" "../dist/packages-dist/*/bundles/*.umd.min.js" false false | 
					
						
							|  |  |  | fi |