123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- #!/usr/bin/env bash
- # Copyright © Magento, Inc. All rights reserved.
- # See COPYING.txt for license details.
- set -e
- trap '>&2 echo Error: Command \`$BASH_COMMAND\` on line $LINENO failed with exit code $?' ERR
- # prepare for test suite
- case $TEST_SUITE in
- integration)
- cd dev/tests/integration
- test_set_list=$(find testsuite/* -maxdepth 1 -mindepth 1 -type d | sort)
- test_set_count=$(printf "$test_set_list" | wc -l)
- test_set_size[1]=$(printf "%.0f" $(echo "$test_set_count*0.13" | bc)) #13%
- test_set_size[2]=$(printf "%.0f" $(echo "$test_set_count*0.30" | bc)) #30%
- test_set_size[3]=$((test_set_count-test_set_size[1]-test_set_size[2])) #55%
- echo "Total = ${test_set_count}; Batch #1 = ${test_set_size[1]}; Batch #2 = ${test_set_size[2]}; Batch #3 = ${test_set_size[3]};";
- echo "==> preparing integration testsuite on index $INTEGRATION_INDEX with set size of ${test_set_size[$INTEGRATION_INDEX]}"
- cp phpunit.xml.dist phpunit.xml
- # remove memory usage tests if from any set other than the first
- if [[ $INTEGRATION_INDEX > 1 ]]; then
- echo " - removing testsuite/Magento/MemoryUsageTest.php"
- perl -pi -0e 's#^\s+<!-- Memory(.*?)</testsuite>\n##ims' phpunit.xml
- fi
- # divide test sets up by indexed testsuites
- i=0; j=1; dirIndex=1; testIndex=1;
- for test_set in $test_set_list; do
- test_xml[j]+=" <directory suffix=\"Test.php\">$test_set</directory>\n"
- if [[ $j -eq $INTEGRATION_INDEX ]]; then
- echo "$dirIndex: Batch #$j($testIndex of ${test_set_size[$j]}): + including $test_set"
- else
- echo "$dirIndex: Batch #$j($testIndex of ${test_set_size[$j]}): + excluding $test_set"
- fi
- testIndex=$((testIndex+1))
- dirIndex=$((dirIndex+1))
- i=$((i+1))
- if [ $i -eq ${test_set_size[$j]} ] && [ $j -lt $INTEGRATION_SETS ]; then
- j=$((j+1))
- i=0
- testIndex=1
- fi
- done
- # replace test sets for current index into testsuite
- perl -pi -e "s#\s+<directory.*>testsuite</directory>#${test_xml[INTEGRATION_INDEX]}#g" phpunit.xml
- echo "==> testsuite preparation complete"
- # create database and move db config into place
- mysql -uroot -e '
- SET @@global.sql_mode = NO_ENGINE_SUBSTITUTION;
- CREATE DATABASE magento_integration_tests;
- '
- mv etc/install-config-mysql.travis.php.dist etc/install-config-mysql.php
- cd ../../..
- ;;
- static)
- cd dev/tests/static
- echo "==> preparing changed files list"
- changed_files_ce="$TRAVIS_BUILD_DIR/dev/tests/static/testsuite/Magento/Test/_files/changed_files_ce.txt"
- php get_github_changes.php \
- --output-file="$changed_files_ce" \
- --base-path="$TRAVIS_BUILD_DIR" \
- --repo='https://github.com/magento/magento2.git' \
- --branch="$TRAVIS_BRANCH"
- sed 's/^/ + including /' "$changed_files_ce"
- cd ../../..
- ;;
- js)
- cp package.json.sample package.json
- cp Gruntfile.js.sample Gruntfile.js
- yarn
- if [[ $GRUNT_COMMAND != "static" ]]; then
- echo "Installing Magento"
- mysql -uroot -e 'CREATE DATABASE magento2;'
- php bin/magento setup:install -q \
- --admin-user="admin" \
- --admin-password="123123q" \
- --admin-email="admin@example.com" \
- --admin-firstname="John" \
- --admin-lastname="Doe"
- echo "Deploying Static Content"
- php bin/magento setup:static-content:deploy -f -q -j=2 \
- --no-css --no-less --no-images --no-fonts --no-misc --no-html-minify
- fi
- ;;
- functional)
- echo "Installing Magento"
- mysql -uroot -e 'CREATE DATABASE magento2;'
- php bin/magento setup:install -q \
- --language="en_US" \
- --timezone="UTC" \
- --currency="USD" \
- --base-url="http://${MAGENTO_HOST_NAME}/" \
- --admin-firstname="John" \
- --admin-lastname="Doe" \
- --backend-frontname="backend" \
- --admin-email="admin@example.com" \
- --admin-user="admin" \
- --use-rewrites=1 \
- --admin-use-security-key=0 \
- --admin-password="123123q"
- echo "Enabling production mode"
- php bin/magento deploy:mode:set production
- echo "Prepare functional tests for running"
- cd dev/tests/functional
- composer install && composer require se/selenium-server-standalone:2.53.1
- export DISPLAY=:1.0
- sh ./vendor/se/selenium-server-standalone/bin/selenium-server-standalone -port 4444 -host 127.0.0.1 \
- -Dwebdriver.firefox.bin=$(which firefox) -trustAllSSLCertificate &> ~/selenium.log &
- cp ./phpunit.xml.dist ./phpunit.xml
- sed -e "s?127.0.0.1?${MAGENTO_HOST_NAME}?g" --in-place ./phpunit.xml
- sed -e "s?basic?travis_acceptance?g" --in-place ./phpunit.xml
- cp ./.htaccess.sample ./.htaccess
- cd ./utils
- php -f generate/moduleSequence.php
- php -f mtf troubleshooting:check-all
- cd ../../..
- ;;
- graphql-api-functional)
- echo "Installing Magento"
- mysql -uroot -e 'CREATE DATABASE magento2;'
- php bin/magento setup:install -q \
- --language="en_US" \
- --timezone="UTC" \
- --currency="USD" \
- --base-url="http://${MAGENTO_HOST_NAME}/" \
- --admin-firstname="John" \
- --admin-lastname="Doe" \
- --backend-frontname="backend" \
- --admin-email="admin@example.com" \
- --admin-user="admin" \
- --use-rewrites=1 \
- --admin-use-security-key=0 \
- --admin-password="123123q"
- echo "Prepare api-functional tests for running"
- cd dev/tests/api-functional
- cp -r _files/Magento/TestModuleGraphQl* ../../../app/code/Magento # Deploy and enable test modules before running tests
- cp ./phpunit_graphql.xml.dist ./phpunit.xml
- sed -e "s?magento.url?${MAGENTO_HOST_NAME}?g" --in-place ./phpunit.xml
- cd ../../..
- php bin/magento setup:upgrade
- echo "Enabling production mode"
- php bin/magento deploy:mode:set production
- ;;
- esac
|