#!/bin/bash NUM_OF_CORES='' TRIAL_PATH='' function getTrialAbsolutePath { TRIAL_PATH="$(which trial)" } function resolveNumOfCores { if [ "$(uname)" == "Darwin" ]; then NUM_OF_CORES="$(sysctl -n hw.ncpu)" else NUM_OF_CORES="$(nproc)" fi } function setuppy { echo "Installing Pixelated User Agent." pip install -r develop_requirements.txt pip install -r test_requirements.txt python setup.py develop $* pip uninstall -y scrypt; pip install scrypt pip uninstall -y gnupg; pip install gnupg==2.0.2 echo "Done." } function setupjs { echo "Installing node and bower libraries." cd ../web-ui npm install node_modules/bower/bin/bower install --config.interactive=false --allow-root LC_ALL=en_US.UTF-8 ./go build cd - echo "Done." } function runIntegrationTests { echo "Executing Integration Tests." resolveNumOfCores trial --reporter=text $* test.integration echo "Done." } function runUnitTests { echo "Executing Unit Tests." trial --reporter=text $* test.unit echo "Done." } function runPep8 { echo "Verifying conformation to pep8." pep8 pixelated test --ignore=E501 echo "Done." } function runJSHint { echo "Executing JSHint." cd ../web-ui LC_ALL=en_US.UTF-8 ./go jshint cd - echo "Done." } function runCoverageUnit { echo "Generating Unit Test Converage Information." coverage erase getTrialAbsolutePath coverage run -p --source=pixelated $TRIAL_PATH --reporter=text $* test.unit coverage combine coverage html echo "Done." } function runCoverageIntegration { echo "Generating Integration Test Converage Information." coverage erase getTrialAbsolutePath coverage run -p --source=pixelated $TRIAL_PATH --reporter=text $* test.integration coverage combine coverage html echo "Done." } function runCoverageUnitAndIntegration { echo "Generating Unit and Integration Test Converage Information." coverage erase getTrialAbsolutePath coverage run -p --source=pixelated $TRIAL_PATH --reporter=text test.unit coverage run -p --source=pixelated $TRIAL_PATH --reporter=text test.integration coverage combine coverage html echo "Done." } function runFunctionalTests { echo "Executing Functional Tests on headless PhantomJS." echo "You should execute it on Debian box for more similar results with CI environment." behave --tags ~@wip test/functional/features echo "Done." } if [ "$1" == 'test' ]; then set -e runPep8 runUnitTests "${@:2}" runIntegrationTests "${@:2}" elif [ "$1" == 'unit' ]; then set -e runUnitTests elif [ "$1" == 'integration' ]; then set -e runIntegrationTests elif [ "$1" == 'pep8' ]; then set -e runPep8 elif [ "$1" == 'setuppy' ]; then setuppy elif [ "$1" == 'setupjs' ]; then setupjs elif [ "$1" == 'setup' ]; then setupjs setuppy "${@:2}" elif [ "$1" == 'coverage_unit' ]; then runCoverageUnit "${@:2}" elif [ "$1" == 'coverage_integration' ]; then runCoverageIntegration "${@:2}" elif [ "$1" == 'coverage_all' ]; then set -e runPep8 runCoverageUnitAndIntegration "${@:2}" elif [ "$1" == 'start' ]; then /usr/bin/env pixelated-user-agent "${@:2}" elif [ "$1" == "functional" ]; then runFunctionalTests "${@:2}" else python setup.py $* fi