Make possible to set the acceptance tests directory to use
When the acceptance tests were run they were always loaded from the "tests/acceptance" directory of the Nextcloud server. Now it is possible to set the directory used to look for the Behat configuration and the Nextcloud installation script, which makes possible to run acceptance tests for the apps too instead of only for the server (although if no directory is explicitly given the tests for the server are the ones run). Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
50d35bee9f
commit
c8df4f5df4
|
@ -31,6 +31,18 @@
|
|||
# to control a web browser, so this script waits for the Selenium server
|
||||
# (which should have been started before executing this script) to be ready
|
||||
# before running the tests.
|
||||
#
|
||||
# By default the acceptance tests run are those for the Nextcloud server;
|
||||
# acceptance tests for apps can be run by providing the
|
||||
# "--acceptance-tests-dir XXX" option. When this option is used the Behat
|
||||
# configuration and the Nextcloud installation script used by the acceptance
|
||||
# tests for the Nextcloud server are ignored; they must be provided in the given
|
||||
# acceptance tests directory. Note, however, that the context classes for the
|
||||
# Nextcloud server and the core acceptance test framework classes are
|
||||
# automatically loaded; there is no need to explicitly set them in the Behat
|
||||
# configuration. Also, even when that option is used, the packages installed by
|
||||
# this script end in the "vendor" subdirectory of the acceptance tests for the
|
||||
# Nextcloud server, not in the one given in the option.
|
||||
|
||||
# Exit immediately on errors.
|
||||
set -o errexit
|
||||
|
@ -39,8 +51,20 @@ set -o errexit
|
|||
# Behat through Composer or running Behat) expect that.
|
||||
cd "$(dirname $0)"
|
||||
|
||||
# "--timeout-multiplier N" option can be provided before any other parameter to
|
||||
# set the timeout multiplier to be used in ActorContext.
|
||||
# "--acceptance-tests-dir XXX" option can be provided to set the directory
|
||||
# (relative to the root directory of the Nextcloud server) used to look for the
|
||||
# Behat configuration and the Nextcloud installation script.
|
||||
# By default it is "tests/acceptance", that is, the acceptance tests for the
|
||||
# Nextcloud server itself.
|
||||
ACCEPTANCE_TESTS_DIR="tests/acceptance"
|
||||
if [ "$1" = "--acceptance-tests-dir" ]; then
|
||||
ACCEPTANCE_TESTS_DIR=$2
|
||||
|
||||
shift 2
|
||||
fi
|
||||
|
||||
# "--timeout-multiplier N" option can be provided to set the timeout multiplier
|
||||
# to be used in ActorContext.
|
||||
TIMEOUT_MULTIPLIER=""
|
||||
if [ "$1" = "--timeout-multiplier" ]; then
|
||||
if [[ ! "$2" =~ ^[0-9]+$ ]]; then
|
||||
|
@ -83,6 +107,18 @@ if [ "$1" != "allow-git-repository-modifications" ]; then
|
|||
fi
|
||||
|
||||
SCENARIO_TO_RUN=$2
|
||||
if [ "$ACCEPTANCE_TESTS_DIR" != "tests/acceptance" ]; then
|
||||
if [ "$SCENARIO_TO_RUN" == "" ]; then
|
||||
echo "When an acceptance tests directory is given the scenario to run" \
|
||||
"should be provided too (paths are relative to the acceptance" \
|
||||
"tests directory; use the features directory to run all tests)"
|
||||
echo "No scenario was given, so \"features/\" was automatically used"
|
||||
|
||||
SCENARIO_TO_RUN="features/"
|
||||
fi
|
||||
|
||||
SCENARIO_TO_RUN=../../$ACCEPTANCE_TESTS_DIR/$SCENARIO_TO_RUN
|
||||
fi
|
||||
|
||||
if [ "$TIMEOUT_MULTIPLIER" != "" ]; then
|
||||
# Although Behat documentation states that using the BEHAT_PARAMS
|
||||
|
@ -97,7 +133,7 @@ if [ "$TIMEOUT_MULTIPLIER" != "" ]; then
|
|||
REPLACEMENT="\
|
||||
- ActorContext:\n\
|
||||
actorTimeoutMultiplier: $TIMEOUT_MULTIPLIER"
|
||||
sed --in-place "s/$ORIGINAL/$REPLACEMENT/" config/behat.yml
|
||||
sed --in-place "s/$ORIGINAL/$REPLACEMENT/" ../../$ACCEPTANCE_TESTS_DIR/config/behat.yml
|
||||
fi
|
||||
|
||||
if [ "$NEXTCLOUD_SERVER_DOMAIN" != "$DEFAULT_NEXTCLOUD_SERVER_DOMAIN" ]; then
|
||||
|
@ -114,7 +150,7 @@ if [ "$NEXTCLOUD_SERVER_DOMAIN" != "$DEFAULT_NEXTCLOUD_SERVER_DOMAIN" ]; then
|
|||
- NextcloudTestServerContext:\n\
|
||||
nextcloudTestServerHelperParameters:\n\
|
||||
- $NEXTCLOUD_SERVER_DOMAIN"
|
||||
sed --in-place "s/$ORIGINAL/$REPLACEMENT/" config/behat.yml
|
||||
sed --in-place "s/$ORIGINAL/$REPLACEMENT/" ../../$ACCEPTANCE_TESTS_DIR/config/behat.yml
|
||||
fi
|
||||
|
||||
if [ "$SELENIUM_SERVER" != "$DEFAULT_SELENIUM_SERVER" ]; then
|
||||
|
@ -156,7 +192,7 @@ if [ "$NEXTCLOUD_SERVER_DOMAIN" != "$DEFAULT_NEXTCLOUD_SERVER_DOMAIN" ]; then
|
|||
fi
|
||||
|
||||
echo "Installing and configuring Nextcloud server"
|
||||
tests/acceptance/installAndConfigureServer.sh $INSTALL_AND_CONFIGURE_SERVER_PARAMETERS
|
||||
$ACCEPTANCE_TESTS_DIR/installAndConfigureServer.sh $INSTALL_AND_CONFIGURE_SERVER_PARAMETERS
|
||||
|
||||
echo "Saving the default state so acceptance tests can reset to it"
|
||||
find . -name ".gitignore" -exec rm --force {} \;
|
||||
|
@ -168,4 +204,4 @@ cd tests/acceptance
|
|||
echo "Waiting for Selenium"
|
||||
timeout 60s bash -c "while ! curl $SELENIUM_SERVER >/dev/null 2>&1; do sleep 1; done"
|
||||
|
||||
vendor/bin/behat $SCENARIO_TO_RUN
|
||||
vendor/bin/behat --config=../../$ACCEPTANCE_TESTS_DIR/config/behat.yml $SCENARIO_TO_RUN
|
||||
|
|
|
@ -197,6 +197,18 @@ trap cleanUp EXIT
|
|||
# the Git working directory to the container) expect that.
|
||||
cd "$(dirname $0)"
|
||||
|
||||
# "--acceptance-tests-dir XXX" option can be provided to set the directory
|
||||
# (relative to the root directory of the Nextcloud server) used to look for the
|
||||
# Behat configuration and the Nextcloud installation script.
|
||||
# By default it is "tests/acceptance", that is, the acceptance tests for the
|
||||
# Nextcloud server itself.
|
||||
ACCEPTANCE_TESTS_DIR_OPTION=""
|
||||
if [ "$1" = "--acceptance-tests-dir" ]; then
|
||||
ACCEPTANCE_TESTS_DIR_OPTION="--acceptance-tests-dir $2"
|
||||
|
||||
shift 2
|
||||
fi
|
||||
|
||||
# "--timeout-multiplier N" option can be provided before the specific scenario
|
||||
# to run, if any, to set the timeout multiplier to be used in the acceptance
|
||||
# tests.
|
||||
|
@ -222,4 +234,4 @@ prepareSelenium
|
|||
prepareDocker
|
||||
|
||||
echo "Running tests"
|
||||
docker exec $NEXTCLOUD_LOCAL_CONTAINER bash -c "cd nextcloud && tests/acceptance/run-local.sh $TIMEOUT_MULTIPLIER_OPTION allow-git-repository-modifications $SCENARIO_TO_RUN"
|
||||
docker exec $NEXTCLOUD_LOCAL_CONTAINER bash -c "cd nextcloud && tests/acceptance/run-local.sh $ACCEPTANCE_TESTS_DIR_OPTION $TIMEOUT_MULTIPLIER_OPTION allow-git-repository-modifications $SCENARIO_TO_RUN"
|
||||
|
|
Loading…
Reference in New Issue