mirror of
https://github.com/facebook/react-native.git
synced 2024-11-21 22:10:14 +00:00
498cf7e2d7
Summary: Although the test suites have a handful of failing tests, the jobs themselves do not fail. Let's get these tests back into the fold so that we may track our progress getting these back to a good state. cc dlowder-salesforce Run tests on Circle, and confirm everything is green: https://circleci.com/workflow-run/4dd1a84b-502d-4ad6-aa41-64c768392a6b If you go into the test iOS and test tvOS jobs, you will see that we are collecting test results at the top. These results show the failing individual tests. Closes https://github.com/facebook/react-native/pull/18171 Differential Revision: D7151558 Pulled By: hramos fbshipit-source-id: f105ec8bc97e80ed1b8358cde3f13a1ad3b271c2
94 lines
2.8 KiB
Bash
Executable File
94 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -ex
|
|
|
|
# Script used to run iOS and tvOS tests.
|
|
# Environment variables are used to configure what test to run.
|
|
# If not arguments are passed to the script, it will only compile
|
|
# the RNTester.
|
|
# If the script is called with a single argument "test", we'll
|
|
# also run the RNTester integration test (needs JS and packager).
|
|
# ./objc-test.sh test
|
|
|
|
SCRIPTS=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
ROOT=$(dirname $SCRIPTS)
|
|
|
|
cd $ROOT
|
|
|
|
# Create cleanup handler
|
|
function cleanup {
|
|
EXIT_CODE=$?
|
|
set +e
|
|
|
|
if [ $EXIT_CODE -ne 0 ];
|
|
then
|
|
WATCHMAN_LOGS=/usr/local/Cellar/watchman/3.1/var/run/watchman/$USER.log
|
|
[ -f $WATCHMAN_LOGS ] && cat $WATCHMAN_LOGS
|
|
fi
|
|
# kill whatever is occupying port 8081 (packager)
|
|
lsof -i tcp:8081 | awk 'NR!=1 {print $2}' | xargs kill
|
|
# kill whatever is occupying port 5555 (web socket server)
|
|
lsof -i tcp:5555 | awk 'NR!=1 {print $2}' | xargs kill
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
# Wait for the package to start
|
|
function waitForPackager {
|
|
local -i max_attempts=60
|
|
local -i attempt_num=1
|
|
|
|
until $(curl -s http://localhost:8081/status | grep "packager-status:running" -q); do
|
|
if (( attempt_num == max_attempts )); then
|
|
echo "Packager did not respond in time. No more attempts left."
|
|
exit 1
|
|
else
|
|
(( attempt_num++ ))
|
|
echo "Packager did not respond. Retrying for attempt number $attempt_num..."
|
|
sleep 1
|
|
fi
|
|
done
|
|
|
|
echo "Packager is ready!"
|
|
}
|
|
|
|
# If first argument is "test", actually start the packager and run tests.
|
|
# Otherwise, just build RNTester for tvOS and exit
|
|
|
|
if [ "$1" = "test" ]; then
|
|
|
|
# Start the packager
|
|
./scripts/packager.sh --max-workers=1 || echo "Can't start packager automatically" &
|
|
# Start the WebSocket test server
|
|
open "./IntegrationTests/launchWebSocketServer.command" || echo "Can't start web socket server automatically"
|
|
|
|
waitForPackager
|
|
|
|
# Preload the RNTesterApp bundle for better performance in integration tests
|
|
curl 'http://localhost:8081/RNTester/js/RNTesterApp.ios.bundle?platform=ios&dev=true' -o temp.bundle
|
|
rm temp.bundle
|
|
curl 'http://localhost:8081/RNTester/js/RNTesterApp.ios.bundle?platform=ios&dev=true&minify=false' -o temp.bundle
|
|
rm temp.bundle
|
|
curl 'http://localhost:8081/IntegrationTests/IntegrationTestsApp.bundle?platform=ios&dev=true' -o temp.bundle
|
|
rm temp.bundle
|
|
curl 'http://localhost:8081/IntegrationTests/RCTRootViewIntegrationTestApp.bundle?platform=ios&dev=true' -o temp.bundle
|
|
rm temp.bundle
|
|
|
|
# Run tests
|
|
xcodebuild \
|
|
-project "RNTester/RNTester.xcodeproj" \
|
|
-scheme $SCHEME \
|
|
-sdk $SDK \
|
|
-destination "$DESTINATION" \
|
|
build test \
|
|
| xcpretty --report junit --output ~/react-native/reports/junit/objc-xcodebuild-results.xml
|
|
|
|
else
|
|
|
|
# Don't run tests. No need to pass -destination to xcodebuild.
|
|
xcodebuild \
|
|
-project "RNTester/RNTester.xcodeproj" \
|
|
-scheme $SCHEME \
|
|
-sdk $SDK \
|
|
build
|
|
|
|
fi
|