4141# The directory where this script resides
4242SCRIPT_DIRECTORY=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " > /dev/null 2>&1 && pwd ) "
4343
44+ TMP_DIR=${TMP_DIR:- ${SCRIPT_DIRECTORY} }
45+
4446# Download archive from GitHub
4547if [[ " ${VERSION} " = " v1.0" ]] ; then
4648 REPO=common-workflow-language
4951 REPO=cwl-$( echo " $VERSION " | sed ' s/\(v[0-9]*\.\)\([0-9]*\).*/\1\2/' )
5052fi
5153
52- if [ ! -d " ${REPO} -${GIT_TARGET} " ] ; then
53- if [ ! -f " ${GIT_TARGET} .tar.gz" ] ; then
54- wget " https://github.com/common-workflow-language/${REPO} /archive/${GIT_TARGET} .tar.gz"
54+ if [ ! -d " ${TMP_DIR} / ${ REPO} -${GIT_TARGET} " ] ; then
55+ if [ ! -f " ${TMP_DIR} / ${GIT_TARGET} .tar.gz" ] ; then
56+ wget --directory-prefix " ${TMP_DIR} " " https://github.com/common-workflow-language/${REPO} /archive/${GIT_TARGET} .tar.gz"
5557 fi
56- tar xzf " ${GIT_TARGET} .tar.gz"
58+ tar --directory " ${TMP_DIR} " -x -f " ${TMP_DIR} / ${GIT_TARGET} .tar.gz"
5759fi
5860
59- if [ " ${CONTAINER} " == " docker" ]; then
61+ if [ -v SKIP_PULL ] ; then
62+ echo Skipping node container pull.
63+ elif [ " ${CONTAINER} " == " docker" ]; then
6064 docker pull docker.io/node:slim
61- fi
62-
63- if [ " ${CONTAINER} " == " podman" ]; then
65+ elif [ " ${CONTAINER} " == " podman" ]; then
6466 podman pull docker.io/node:slim
65- fi
66-
67- if [ " ${CONTAINER} " == " singularity" ]; then
67+ elif [ " ${CONTAINER} " == " singularity" ]; then
6868 export CWL_SINGULARITY_CACHE=" $SCRIPT_DIRECTORY /sifcache"
6969 mkdir --parents " ${CWL_SINGULARITY_CACHE} "
7070fi
7171
7272# Setup environment
73- venv cwl-conformance-venv
74- pip install -U setuptools wheel pip
75- pip uninstall -y cwltool
76- pip install " ${SCRIPT_DIRECTORY} " -r" ${SCRIPT_DIRECTORY} /requirements.txt"
77- pip install ' cwltest>=2.3' pytest-cov pytest-xdist
73+ if [ -v SKIP_INSTALL ] ; then
74+ echo ' Skip installing dependencies; cwltool & cwltest must already be installed'
75+ else
76+ venv " ${TMP_DIR} /cwl-conformance-venv"
77+ pip install -U setuptools wheel pip
78+ pip uninstall -y cwltool
79+ pip install " ${SCRIPT_DIRECTORY} " -r" ${SCRIPT_DIRECTORY} /requirements.txt"
80+ pip install ' cwltest>=2.3' pytest-cov pytest-xdist
81+ fi
7882
7983# Set conformance test filename
8084if [[ " ${VERSION} " = " v1.0" ]] ; then
81- CONFORMANCE_TEST=" ${SCRIPT_DIRECTORY } /${REPO} -${GIT_TARGET} /${VERSION} /conformance_test_v1.0.yaml"
85+ CONFORMANCE_TEST=" ${TMP_DIR } /${REPO} -${GIT_TARGET} /${VERSION} /conformance_test_v1.0.yaml"
8286else
83- CONFORMANCE_TEST=" ${SCRIPT_DIRECTORY } /${REPO} -${GIT_TARGET} /conformance_tests.yaml"
87+ CONFORMANCE_TEST=" ${TMP_DIR } /${REPO} -${GIT_TARGET} /conformance_tests.yaml"
8488fi
8589cp " ${CONFORMANCE_TEST} " " ${CONFORMANCE_TEST% " .yaml" } .cwltest.yaml"
8690CONFORMANCE_TEST=" ${CONFORMANCE_TEST% " .yaml" } .cwltest.yaml"
@@ -116,14 +120,18 @@ if (( "${#exclusions[*]}" > 0 )); then
116120fi
117121
118122# Build command
119- TEST_COMMAND=" python -m pytest ${CONFORMANCE_TEST} -n auto -rs --junit-xml=${SCRIPT_DIRECTORY } /cwltool_conf_${VERSION} _${GIT_TARGET} _${CONTAINER} .xml -o junit_suite_name=cwltool_$( echo " ${CWLTOOL_OPTIONS} " | tr " [:blank:]-" _) "
123+ TEST_COMMAND=" python -m pytest ${CONFORMANCE_TEST} -n auto -rs --junit-xml=${TMP_DIR } /cwltool_conf_${VERSION} _${GIT_TARGET} _${CONTAINER} .xml -o junit_suite_name=cwltool_$( echo " ${CWLTOOL_OPTIONS} " | tr " [:blank:]-" _) "
120124if [[ -n " ${EXCLUDE} " ]] ; then
121125 TEST_COMMAND=" ${TEST_COMMAND} --cwl-exclude ${EXCLUDE} "
122126fi
123- TEST_COMMAND=" ${TEST_COMMAND} --cov --cov-config ${SCRIPT_DIRECTORY} /.coveragerc --cov-report= ${PYTEST_EXTRA} "
127+ if [ -v SKIP_COV ] ; then
128+ echo Skipping gathering of coverage information
129+ else
130+ TEST_COMMAND=" ${TEST_COMMAND} --cov --cov-config ${SCRIPT_DIRECTORY} /.coveragerc --cov-report= ${PYTEST_EXTRA} "
131+ # Clean up all old coverage data
132+ find " ${SCRIPT_DIRECTORY} " \( -type f -name .coverage -or -name ' .coverage.*' -or -name coverage.xml \) -delete
133+ fi
124134
125- # Clean up all old coverage data
126- find " ${SCRIPT_DIRECTORY} " \( -type f -name .coverage -or -name ' .coverage.*' -or -name coverage.xml \) -delete
127135
128136if [ " $GIT_BRANCH " = " origin/main" ] && [[ " $VERSION " = " v1.0" ]] && [[ " $CONTAINER " = " docker" ]]
129137then
@@ -153,11 +161,11 @@ echo CWLTOOL_OPTIONS="${CWLTOOL_OPTIONS}"
153161
154162# Run test
155163cp " ${SCRIPT_DIRECTORY} /tests/cwl-conformance/cwltool-conftest.py" " $( dirname " ${CONFORMANCE_TEST} " ) /conftest.py"
156- bash -c " ${TEST_COMMAND} "
164+ bash -c " cd ${TMP_DIR} && ${TEST_COMMAND} "
157165RETURN_CODE=$?
158166
159167# Coverage report
160- if [ " ${RETURN_CODE} " -eq " 0" ] ; then
168+ if [ ! -v SKIP_COV ] && [ " ${RETURN_CODE} " -eq " 0" ] ; then
161169 coverage report
162170 coverage xml
163171fi
@@ -172,7 +180,11 @@ then
172180fi
173181
174182# Cleanup
175- deactivate
183+ if [ -z " $SKIP_INSTALL " ] ; then
184+ echo Skipping venv cleanup
185+ else
186+ deactivate
187+ fi
176188# rm -rf "${GIT_TARGET}.tar.gz" "${SCRIPT_DIRECTORY}/${REPO}-${GIT_TARGET}" "${SCRIPT_DIRECTORY}/cwl-conformance-venv"
177189
178190# Exit
0 commit comments