From f840b4d4ba336ff6c45360185a7414d5c37ecb51 Mon Sep 17 00:00:00 2001
From: "Marcus R. Brown" <me@igetgam.es>
Date: Sat, 11 Feb 2017 17:34:15 -0800
Subject: [PATCH] Fix `test -e` with wildcard arguments. (#1503)

The `test` command fails with multiple arguments when given a unary operator such as '-e'. Add a function that can test one or more files by looping over all files.
---
 tasks/e2e-installs.sh    | 13 +++++++++---
 tasks/e2e-kitchensink.sh | 15 ++++++++++----
 tasks/e2e-simple.sh      | 43 +++++++++++++++++++++++-----------------
 3 files changed, 46 insertions(+), 25 deletions(-)

diff --git a/tasks/e2e-installs.sh b/tasks/e2e-installs.sh
index 7bb4c0392..d117c2401 100755
--- a/tasks/e2e-installs.sh
+++ b/tasks/e2e-installs.sh
@@ -39,6 +39,13 @@ function handle_exit {
   exit
 }
 
+# Check for the existence of one or more files.
+function exists {
+  for f in $*; do
+    test -e "$f"
+  done
+}
+
 function create_react_app {
   node "$temp_cli_path"/node_modules/create-react-app/index.js $*
 }
@@ -86,7 +93,7 @@ create_react_app --scripts-version=0.4.0 test-app-version-number
 cd test-app-version-number
 
 # Check corresponding scripts version is installed.
-test -e node_modules/react-scripts
+exists node_modules/react-scripts
 grep '"version": "0.4.0"' node_modules/react-scripts/package.json
 
 # ******************************************************************************
@@ -98,7 +105,7 @@ create_react_app --scripts-version=https://registry.npmjs.org/react-scripts/-/re
 cd test-app-tarball-url
 
 # Check corresponding scripts version is installed.
-test -e node_modules/react-scripts
+exists node_modules/react-scripts
 grep '"version": "0.4.0"' node_modules/react-scripts/package.json
 
 # ******************************************************************************
@@ -110,7 +117,7 @@ create_react_app --scripts-version=react-scripts-fork test-app-fork
 cd test-app-fork
 
 # Check corresponding scripts version is installed.
-test -e node_modules/react-scripts-fork
+exists node_modules/react-scripts-fork
 
 # ******************************************************************************
 # Test nested folder path as the project name
diff --git a/tasks/e2e-kitchensink.sh b/tasks/e2e-kitchensink.sh
index 4bb45d728..22ee5d5ea 100755
--- a/tasks/e2e-kitchensink.sh
+++ b/tasks/e2e-kitchensink.sh
@@ -43,6 +43,13 @@ function create_react_app {
   node "$temp_cli_path"/node_modules/create-react-app/index.js $*
 }
 
+# Check for the existence of one or more files.
+function exists {
+  for f in $*; do
+    test -e "$f"
+  done
+}
+
 # Exit the script with a helpful error message when any error is encountered
 trap 'set +x; handle_error $LINENO $BASH_COMMAND' ERR
 
@@ -120,8 +127,8 @@ REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \
   npm run build
 
 # Check for expected output
-test -e build/*.html
-test -e build/static/js/main.*.js
+exists build/*.html
+exists build/static/js/main.*.js
 
 # Unit tests
 REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \
@@ -174,8 +181,8 @@ REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \
   npm run build
 
 # Check for expected output
-test -e build/*.html
-test -e build/static/js/main.*.js
+exists build/*.html
+exists build/static/js/main.*.js
 
 # Unit tests
 REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \
diff --git a/tasks/e2e-simple.sh b/tasks/e2e-simple.sh
index d0acb16b4..24b5ad85e 100755
--- a/tasks/e2e-simple.sh
+++ b/tasks/e2e-simple.sh
@@ -45,6 +45,13 @@ function create_react_app {
   node "$temp_cli_path"/node_modules/create-react-app/index.js $*
 }
 
+# Check for the existence of one or more files.
+function exists {
+  for f in $*; do
+    test -e "$f"
+  done
+}
+
 # Exit the script with a helpful error message when any error is encountered
 trap 'set +x; handle_error $LINENO $BASH_COMMAND' ERR
 
@@ -86,16 +93,16 @@ fi
 # Test local build command
 npm run build
 # Check for expected output
-test -e build/*.html
-test -e build/static/js/*.js
-test -e build/static/css/*.css
-test -e build/static/media/*.svg
-test -e build/favicon.ico
+exists build/*.html
+exists build/static/js/*.js
+exists build/static/css/*.css
+exists build/static/media/*.svg
+exists build/favicon.ico
 
 # Run tests with CI flag
 CI=true npm test
 # Uncomment when snapshot testing is enabled by default:
-# test -e template/src/__snapshots__/App.test.js.snap
+# exists template/src/__snapshots__/App.test.js.snap
 
 # Test local start command
 npm start -- --smoke-test
@@ -197,16 +204,16 @@ cd test-app
 # Test the build
 npm run build
 # Check for expected output
-test -e build/*.html
-test -e build/static/js/*.js
-test -e build/static/css/*.css
-test -e build/static/media/*.svg
-test -e build/favicon.ico
+exists build/*.html
+exists build/static/js/*.js
+exists build/static/css/*.css
+exists build/static/media/*.svg
+exists build/favicon.ico
 
 # Run tests with CI flag
 CI=true npm test
 # Uncomment when snapshot testing is enabled by default:
-# test -e src/__snapshots__/App.test.js.snap
+# exists src/__snapshots__/App.test.js.snap
 
 # Test the server
 npm start -- --smoke-test
@@ -230,11 +237,11 @@ npm link $root_path/packages/react-scripts
 # Test the build
 npm run build
 # Check for expected output
-test -e build/*.html
-test -e build/static/js/*.js
-test -e build/static/css/*.css
-test -e build/static/media/*.svg
-test -e build/favicon.ico
+exists build/*.html
+exists build/static/js/*.js
+exists build/static/css/*.css
+exists build/static/media/*.svg
+exists build/favicon.ico
 
 # Run tests, overring the watch option to disable it.
 # `CI=true npm test` won't work here because `npm test` becomes just `jest`.
@@ -242,7 +249,7 @@ test -e build/favicon.ico
 # `scripts/test.js` survive ejection (right now it doesn't).
 npm test -- --watch=no
 # Uncomment when snapshot testing is enabled by default:
-# test -e src/__snapshots__/App.test.js.snap
+# exists src/__snapshots__/App.test.js.snap
 
 # Test the server
 npm start -- --smoke-test
-- 
GitLab