41
41
# The directory where this script resides
42
42
SCRIPT_DIRECTORY=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " > /dev/null 2>&1 && pwd ) "
43
43
44
+ TMP_DIR=${TMP_DIR:- ${SCRIPT_DIRECTORY} }
45
+
44
46
# Download archive from GitHub
45
47
if [[ " ${VERSION} " = " v1.0" ]] ; then
46
48
REPO=common-workflow-language
49
51
REPO=cwl-$( echo " $VERSION " | sed ' s/\(v[0-9]*\.\)\([0-9]*\).*/\1\2/' )
50
52
fi
51
53
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"
55
57
fi
56
- tar xzf " ${GIT_TARGET} .tar.gz"
58
+ tar --directory " ${TMP_DIR} " -x -f " ${TMP_DIR} / ${GIT_TARGET} .tar.gz"
57
59
fi
58
60
59
- if [ " ${CONTAINER} " == " docker" ]; then
61
+ if [ -v SKIP_PULL ] ; then
62
+ echo Skipping node container pull.
63
+ elif [ " ${CONTAINER} " == " docker" ]; then
60
64
docker pull docker.io/node:slim
61
- fi
62
-
63
- if [ " ${CONTAINER} " == " podman" ]; then
65
+ elif [ " ${CONTAINER} " == " podman" ]; then
64
66
podman pull docker.io/node:slim
65
- fi
66
-
67
- if [ " ${CONTAINER} " == " singularity" ]; then
67
+ elif [ " ${CONTAINER} " == " singularity" ]; then
68
68
export CWL_SINGULARITY_CACHE=" $SCRIPT_DIRECTORY /sifcache"
69
69
mkdir --parents " ${CWL_SINGULARITY_CACHE} "
70
70
fi
71
71
72
72
# 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
78
82
79
83
# Set conformance test filename
80
84
if [[ " ${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"
82
86
else
83
- CONFORMANCE_TEST=" ${SCRIPT_DIRECTORY } /${REPO} -${GIT_TARGET} /conformance_tests.yaml"
87
+ CONFORMANCE_TEST=" ${TMP_DIR } /${REPO} -${GIT_TARGET} /conformance_tests.yaml"
84
88
fi
85
89
cp " ${CONFORMANCE_TEST} " " ${CONFORMANCE_TEST% " .yaml" } .cwltest.yaml"
86
90
CONFORMANCE_TEST=" ${CONFORMANCE_TEST% " .yaml" } .cwltest.yaml"
@@ -116,14 +120,18 @@ if (( "${#exclusions[*]}" > 0 )); then
116
120
fi
117
121
118
122
# 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:]-" _) "
120
124
if [[ -n " ${EXCLUDE} " ]] ; then
121
125
TEST_COMMAND=" ${TEST_COMMAND} --cwl-exclude ${EXCLUDE} "
122
126
fi
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
124
134
125
- # Clean up all old coverage data
126
- find " ${SCRIPT_DIRECTORY} " \( -type f -name .coverage -or -name ' .coverage.*' -or -name coverage.xml \) -delete
127
135
128
136
if [ " $GIT_BRANCH " = " origin/main" ] && [[ " $VERSION " = " v1.0" ]] && [[ " $CONTAINER " = " docker" ]]
129
137
then
@@ -153,11 +161,11 @@ echo CWLTOOL_OPTIONS="${CWLTOOL_OPTIONS}"
153
161
154
162
# Run test
155
163
cp " ${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} "
157
165
RETURN_CODE=$?
158
166
159
167
# Coverage report
160
- if [ " ${RETURN_CODE} " -eq " 0" ] ; then
168
+ if [ ! -v SKIP_COV ] && [ " ${RETURN_CODE} " -eq " 0" ] ; then
161
169
coverage report
162
170
coverage xml
163
171
fi
@@ -172,7 +180,11 @@ then
172
180
fi
173
181
174
182
# Cleanup
175
- deactivate
183
+ if [ -z " $SKIP_INSTALL " ] ; then
184
+ echo Skipping venv cleanup
185
+ else
186
+ deactivate
187
+ fi
176
188
# rm -rf "${GIT_TARGET}.tar.gz" "${SCRIPT_DIRECTORY}/${REPO}-${GIT_TARGET}" "${SCRIPT_DIRECTORY}/cwl-conformance-venv"
177
189
178
190
# Exit
0 commit comments