Skip to content

Commit

Permalink
Tests for workflow testing script.
Browse files Browse the repository at this point in the history
  • Loading branch information
jmchilton committed May 15, 2018
1 parent f606a2f commit 61e18c8
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 15 deletions.
38 changes: 24 additions & 14 deletions .travis.yml
@@ -1,18 +1,26 @@
language: python
sudo: false
sudo: true
python: 2.7
env:
- TOX_ENV=py27-lint
- TOX_ENV=py34-lint
- TOX_ENV=py27-lint-readme
- TOX_ENV=py27-lint-docs
- TOX_ENV=py34-quick
- TOX_ENV=py27
- TOX_ENV=py34
- TOX_ENV=py34-gx-1801
- TOX_ENV=py34-gx-dev
- TOX_ENV=py34-gx-1709
- TOX_ENV=py27-lint-docstrings
global:
- PLANEMO_SKIP_REDUNDANT_TESTS=1
- PLANEMO_ENABLE_POSTGRES_TESTS=1
- PLANEMO_SKIP_GALAXY_CWL_TESTS=1
- PLANEMO_TEST_WORKFLOW_RUN_PROFILE=travisworkflowtests
matrix:
- TOX_ENV=py27-lint
- TOX_ENV=py34-lint
- TOX_ENV=py27-lint-readme
- TOX_ENV=py27-lint-docs
- TOX_ENV=py34-quick
- TOX_ENV=py27
- TOX_ENV=py34
- TOX_ENV=py34-gx-1801
- TOX_ENV=py34-gx-dev
- TOX_ENV=py34-gx-1709
- TOX_ENV=py27-gxwf-test-test PLANEMO_TEST_STYLE=docker_test
- TOX_ENV=py27-gxwf-test-test PLANEMO_TEST_STYLE=serve_and_test
- TOX_ENV=py27-lint-docstrings

install:
# Setup git to allow git operations.
Expand All @@ -23,11 +31,13 @@ install:
matrix:
allow_failures:
- env: TOX_ENV=py27-lint-docstrings
- TOX_ENV=py27-gxwf-test-test PLANEMO_TEST_STYLE=docker_test

script: PLANEMO_SKIP_REDUNDANT_TESTS=1 PLANEMO_ENABLE_POSTGRES_TESTS=1 PLANEMO_SKIP_GALAXY_CWL_TESTS=1 PLANEMO_TEST_WORKFLOW_RUN_PROFILE=travisworkflowtests tox -e $TOX_ENV
script: tox -e $TOX_ENV

after_success:
- coveralls

services:
- postgresql
- postgresql
- docker
3 changes: 3 additions & 0 deletions Makefile
Expand Up @@ -75,6 +75,9 @@ test: ## run tests with the default Python (faster than tox)
quick-test: ## run quickest tests with the default Python
$(IN_VENV) PLANEMO_SKIP_SLOW_TESTS=1 PLANEMO_SKIP_GALAXY_TESTS=1 nosetests $(NOSE_TESTS)

gxwf-test-test: ## run test of workflow testing script
bash $(BUILD_SCRIPTS_DIR)/test_workflow_tests.sh

tox: ## run tests with tox in the specified ENV, defaults to py27
$(IN_VENV) tox -e $(ENV) -- $(ARGS)

Expand Down
78 changes: 78 additions & 0 deletions scripts/run_workflow_tests.sh
@@ -0,0 +1,78 @@
#!/bin/bash

: ${PLANEMO_TARGET:="planemo==0.50.1"}
: ${PLANEMO_OPTIONS:="--verbose"}
: ${PLANEMO_PROFILE_NAME:="wxflowtest"}
: ${PLANEMO_SERVE_PORT:="9019"}
: ${PLANEMO_TEST_STYLE:="serve_and_test"} # profile_serve_and_test, serve_and_test, docker_serve_and_test, test, docker_test
: ${PLANEMO_SERVE_DATABASE_TYPE:="postgres"} # used if not using Docker with PLANEMO_TEST_STYLE
: ${PLANEMO_DOCKER_GALAXY_IMAGE:="quay.io/bgruening/galaxy:18.01"} # used if used Docker with PLANEMO_TEST_STYLE

GALAXY_URL="http://localhost:$PLANEMO_SERVE_PORT"

# Ensure Planemo is installed.
if [ ! -d .venv ]; then
virtualenv .venv
. .venv/bin/activate
pip install -U pip
# Intentionally expand wildcards in PLANEMO_TARGET.
shopt -s extglob
pip install ${PLANEMO_TARGET}
fi
. .venv/bin/activate

# Run test.
# This example shows off a bunch of different ways one could test with Planemo,
# but for actual workflow testing projects - probably best just to take one of the last
# two very easy invocations to simplify things.
if [ "$PLANEMO_TEST_STYLE" = "profile_serve_and_test" ]; then
planemo $PLANEMO_OPTIONS profile_create \
--database_type "$PLANEMO_SERVE_DATABASE_TYPE" \
"$PLANEMO_PROFILE_NAME"
planemo $PLANEMO_OPTIONS serve \
--daemon \
--profile "$PLANEMO_PROFILE_NAME" \
--port "$PLANEMO_SERVE_PORT" \
"$1"
planemo $PLANEMO_OPTIONS test \
--galaxy_url "$GALAXY_URL" \
--engine external_galaxy \
"$1"
elif [ "$PLANEMO_TEST_STYLE" = "serve_and_test" ]; then
planemo $PLANEMO_OPTIONS serve \
--daemon \
--database_type "$PLANEMO_SERVE_DATABASE_TYPE" \
--port "$PLANEMO_SERVE_PORT" \
"$1"
planemo $PLANEMO_OPTIONS test \
--galaxy_url "$GALAXY_URL" \
--engine external_galaxy \
"$1"
elif [ "$PLANEMO_TEST_STYLE" = "docker_serve_and_test" ]; then
docker pull "${PLANEMO_DOCKER_GALAXY_IMAGE}"
planemo $PLANEMO_OPTIONS serve \
--daemon \
--engine docker_galaxy \
--docker_galaxy_image "${PLANEMO_DOCKER_GALAXY_IMAGE}" \
--docker_extra_volume . \
--port "$PLANEMO_SERVE_PORT" \
"$1"
planemo $PLANEMO_OPTIONS test \
--galaxy_url "$GALAXY_URL" \
--engine external_galaxy \
"$1"
elif [ "$PLANEMO_TEST_STYLE" = "test" ]; then
planemo $PLANEMO_OPTIONS test \
--database_type "$PLANEMO_SERVE_DATABASE_TYPE" \
"$1"
elif [ "$PLANEMO_TEST_STYLE" = "docker_test" ]; then
docker pull "${PLANEMO_DOCKER_GALAXY_IMAGE}"
planemo $PLANEMO_OPTIONS test \
--engine docker_galaxy \
--docker_galaxy_image "${PLANEMO_DOCKER_GALAXY_IMAGE}" \
--docker_extra_volume . \
"$1" > /dev/null
else
echo "Unknown test style ${PLANEMO_TEST_STYLE}"
exit 1
fi
21 changes: 21 additions & 0 deletions scripts/test_workflow_tests.sh
@@ -0,0 +1,21 @@
#!/bin/bash

# Ensure working directory is planemo project.
SCRIPTS_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PROJECT_DIRECTORY="${SCRIPTS_DIRECTORY}/.."

TEMP_DIRECTORY=`mktemp -d 2>/dev/null || mktemp -d -t 'planemowftest'`
cp "$SCRIPTS_DIRECTORY/run_workflow_tests.sh" "$TEMP_DIRECTORY"
cp "$PROJECT_DIRECTORY/tests/data/"wf4* "$TEMP_DIRECTORY"
cp "$PROJECT_DIRECTORY/tests/data/1.bed" "$TEMP_DIRECTORY"

cd $PROJECT_DIRECTORY

# Build Planemo wheel.
make dist

# Test against wheel.
export PLANEMO_TARGET="$PROJECT_DIRECTORY/dist/planemo*whl"

cd $TEMP_DIRECTORY
bash run_workflow_tests.sh "wf4-distro-tools.gxwf.yml"
7 changes: 6 additions & 1 deletion tox.ini
@@ -1,6 +1,6 @@
# TODO: implement doc linting
[tox]
envlist = py{27,34}-lint, py{27,34,35}-quick, py27-lint-imports, py27-lint-docstrings, py27-lint-readme, py27-lint-docs, py{27,34,35}, py{27,34,35}-gx-{master,dev,1801,1709,1705}
envlist = py{27,34}-lint, py{27,34,35}-quick, py27-lint-imports, py27-lint-docstrings, py27-lint-readme, py27-lint-docs, py{27,34,35}, py{27,34,35}-gx-{master,dev,1801,1709,1705}, py27-gxwf-test-test
source_dir = planemo
test_dir = tests

Expand Down Expand Up @@ -64,3 +64,8 @@ whitelist_externals = make
deps =
-rrequirements.txt
-rdev-requirements.txt

[testenv:py27-gxwf-test-test]
commands = make gxwf-test-test
skip_install = True
whitelist_externals = make

0 comments on commit 61e18c8

Please sign in to comment.