Skip to content

Commit 61e18c8

Browse files
committed
Tests for workflow testing script.
1 parent f606a2f commit 61e18c8

5 files changed

Lines changed: 132 additions & 15 deletions

File tree

.travis.yml

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
language: python
2-
sudo: false
2+
sudo: true
33
python: 2.7
44
env:
5-
- TOX_ENV=py27-lint
6-
- TOX_ENV=py34-lint
7-
- TOX_ENV=py27-lint-readme
8-
- TOX_ENV=py27-lint-docs
9-
- TOX_ENV=py34-quick
10-
- TOX_ENV=py27
11-
- TOX_ENV=py34
12-
- TOX_ENV=py34-gx-1801
13-
- TOX_ENV=py34-gx-dev
14-
- TOX_ENV=py34-gx-1709
15-
- TOX_ENV=py27-lint-docstrings
5+
global:
6+
- PLANEMO_SKIP_REDUNDANT_TESTS=1
7+
- PLANEMO_ENABLE_POSTGRES_TESTS=1
8+
- PLANEMO_SKIP_GALAXY_CWL_TESTS=1
9+
- PLANEMO_TEST_WORKFLOW_RUN_PROFILE=travisworkflowtests
10+
matrix:
11+
- TOX_ENV=py27-lint
12+
- TOX_ENV=py34-lint
13+
- TOX_ENV=py27-lint-readme
14+
- TOX_ENV=py27-lint-docs
15+
- TOX_ENV=py34-quick
16+
- TOX_ENV=py27
17+
- TOX_ENV=py34
18+
- TOX_ENV=py34-gx-1801
19+
- TOX_ENV=py34-gx-dev
20+
- TOX_ENV=py34-gx-1709
21+
- TOX_ENV=py27-gxwf-test-test PLANEMO_TEST_STYLE=docker_test
22+
- TOX_ENV=py27-gxwf-test-test PLANEMO_TEST_STYLE=serve_and_test
23+
- TOX_ENV=py27-lint-docstrings
1624

1725
install:
1826
# Setup git to allow git operations.
@@ -23,11 +31,13 @@ install:
2331
matrix:
2432
allow_failures:
2533
- env: TOX_ENV=py27-lint-docstrings
34+
- TOX_ENV=py27-gxwf-test-test PLANEMO_TEST_STYLE=docker_test
2635

27-
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
36+
script: tox -e $TOX_ENV
2837

2938
after_success:
3039
- coveralls
3140

3241
services:
33-
- postgresql
42+
- postgresql
43+
- docker

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ test: ## run tests with the default Python (faster than tox)
7575
quick-test: ## run quickest tests with the default Python
7676
$(IN_VENV) PLANEMO_SKIP_SLOW_TESTS=1 PLANEMO_SKIP_GALAXY_TESTS=1 nosetests $(NOSE_TESTS)
7777

78+
gxwf-test-test: ## run test of workflow testing script
79+
bash $(BUILD_SCRIPTS_DIR)/test_workflow_tests.sh
80+
7881
tox: ## run tests with tox in the specified ENV, defaults to py27
7982
$(IN_VENV) tox -e $(ENV) -- $(ARGS)
8083

scripts/run_workflow_tests.sh

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/bin/bash
2+
3+
: ${PLANEMO_TARGET:="planemo==0.50.1"}
4+
: ${PLANEMO_OPTIONS:="--verbose"}
5+
: ${PLANEMO_PROFILE_NAME:="wxflowtest"}
6+
: ${PLANEMO_SERVE_PORT:="9019"}
7+
: ${PLANEMO_TEST_STYLE:="serve_and_test"} # profile_serve_and_test, serve_and_test, docker_serve_and_test, test, docker_test
8+
: ${PLANEMO_SERVE_DATABASE_TYPE:="postgres"} # used if not using Docker with PLANEMO_TEST_STYLE
9+
: ${PLANEMO_DOCKER_GALAXY_IMAGE:="quay.io/bgruening/galaxy:18.01"} # used if used Docker with PLANEMO_TEST_STYLE
10+
11+
GALAXY_URL="http://localhost:$PLANEMO_SERVE_PORT"
12+
13+
# Ensure Planemo is installed.
14+
if [ ! -d .venv ]; then
15+
virtualenv .venv
16+
. .venv/bin/activate
17+
pip install -U pip
18+
# Intentionally expand wildcards in PLANEMO_TARGET.
19+
shopt -s extglob
20+
pip install ${PLANEMO_TARGET}
21+
fi
22+
. .venv/bin/activate
23+
24+
# Run test.
25+
# This example shows off a bunch of different ways one could test with Planemo,
26+
# but for actual workflow testing projects - probably best just to take one of the last
27+
# two very easy invocations to simplify things.
28+
if [ "$PLANEMO_TEST_STYLE" = "profile_serve_and_test" ]; then
29+
planemo $PLANEMO_OPTIONS profile_create \
30+
--database_type "$PLANEMO_SERVE_DATABASE_TYPE" \
31+
"$PLANEMO_PROFILE_NAME"
32+
planemo $PLANEMO_OPTIONS serve \
33+
--daemon \
34+
--profile "$PLANEMO_PROFILE_NAME" \
35+
--port "$PLANEMO_SERVE_PORT" \
36+
"$1"
37+
planemo $PLANEMO_OPTIONS test \
38+
--galaxy_url "$GALAXY_URL" \
39+
--engine external_galaxy \
40+
"$1"
41+
elif [ "$PLANEMO_TEST_STYLE" = "serve_and_test" ]; then
42+
planemo $PLANEMO_OPTIONS serve \
43+
--daemon \
44+
--database_type "$PLANEMO_SERVE_DATABASE_TYPE" \
45+
--port "$PLANEMO_SERVE_PORT" \
46+
"$1"
47+
planemo $PLANEMO_OPTIONS test \
48+
--galaxy_url "$GALAXY_URL" \
49+
--engine external_galaxy \
50+
"$1"
51+
elif [ "$PLANEMO_TEST_STYLE" = "docker_serve_and_test" ]; then
52+
docker pull "${PLANEMO_DOCKER_GALAXY_IMAGE}"
53+
planemo $PLANEMO_OPTIONS serve \
54+
--daemon \
55+
--engine docker_galaxy \
56+
--docker_galaxy_image "${PLANEMO_DOCKER_GALAXY_IMAGE}" \
57+
--docker_extra_volume . \
58+
--port "$PLANEMO_SERVE_PORT" \
59+
"$1"
60+
planemo $PLANEMO_OPTIONS test \
61+
--galaxy_url "$GALAXY_URL" \
62+
--engine external_galaxy \
63+
"$1"
64+
elif [ "$PLANEMO_TEST_STYLE" = "test" ]; then
65+
planemo $PLANEMO_OPTIONS test \
66+
--database_type "$PLANEMO_SERVE_DATABASE_TYPE" \
67+
"$1"
68+
elif [ "$PLANEMO_TEST_STYLE" = "docker_test" ]; then
69+
docker pull "${PLANEMO_DOCKER_GALAXY_IMAGE}"
70+
planemo $PLANEMO_OPTIONS test \
71+
--engine docker_galaxy \
72+
--docker_galaxy_image "${PLANEMO_DOCKER_GALAXY_IMAGE}" \
73+
--docker_extra_volume . \
74+
"$1" > /dev/null
75+
else
76+
echo "Unknown test style ${PLANEMO_TEST_STYLE}"
77+
exit 1
78+
fi

scripts/test_workflow_tests.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
3+
# Ensure working directory is planemo project.
4+
SCRIPTS_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5+
PROJECT_DIRECTORY="${SCRIPTS_DIRECTORY}/.."
6+
7+
TEMP_DIRECTORY=`mktemp -d 2>/dev/null || mktemp -d -t 'planemowftest'`
8+
cp "$SCRIPTS_DIRECTORY/run_workflow_tests.sh" "$TEMP_DIRECTORY"
9+
cp "$PROJECT_DIRECTORY/tests/data/"wf4* "$TEMP_DIRECTORY"
10+
cp "$PROJECT_DIRECTORY/tests/data/1.bed" "$TEMP_DIRECTORY"
11+
12+
cd $PROJECT_DIRECTORY
13+
14+
# Build Planemo wheel.
15+
make dist
16+
17+
# Test against wheel.
18+
export PLANEMO_TARGET="$PROJECT_DIRECTORY/dist/planemo*whl"
19+
20+
cd $TEMP_DIRECTORY
21+
bash run_workflow_tests.sh "wf4-distro-tools.gxwf.yml"

tox.ini

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TODO: implement doc linting
22
[tox]
3-
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}
3+
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
44
source_dir = planemo
55
test_dir = tests
66

@@ -64,3 +64,8 @@ whitelist_externals = make
6464
deps =
6565
-rrequirements.txt
6666
-rdev-requirements.txt
67+
68+
[testenv:py27-gxwf-test-test]
69+
commands = make gxwf-test-test
70+
skip_install = True
71+
whitelist_externals = make

0 commit comments

Comments
 (0)