Skip to content

Commit d2059c7

Browse files
committed
make conformance test more flexible
1 parent 65ddfc9 commit d2059c7

File tree

1 file changed

+37
-25
lines changed

1 file changed

+37
-25
lines changed

conformance-test.sh

+37-25
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ set -x
4141
# The directory where this script resides
4242
SCRIPT_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
4547
if [[ "${VERSION}" = "v1.0" ]] ; then
4648
REPO=common-workflow-language
@@ -49,38 +51,40 @@ else
4951
REPO=cwl-$(echo "$VERSION" | sed 's/\(v[0-9]*\.\)\([0-9]*\).*/\1\2/')
5052
fi
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"
5759
fi
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}"
7070
fi
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
8084
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"
8286
else
83-
CONFORMANCE_TEST="${SCRIPT_DIRECTORY}/${REPO}-${GIT_TARGET}/conformance_tests.yaml"
87+
CONFORMANCE_TEST="${TMP_DIR}/${REPO}-${GIT_TARGET}/conformance_tests.yaml"
8488
fi
8589
cp "${CONFORMANCE_TEST}" "${CONFORMANCE_TEST%".yaml"}.cwltest.yaml"
8690
CONFORMANCE_TEST="${CONFORMANCE_TEST%".yaml"}.cwltest.yaml"
@@ -116,14 +120,18 @@ if (( "${#exclusions[*]}" > 0 )); then
116120
fi
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:]-" _)"
120124
if [[ -n "${EXCLUDE}" ]] ; then
121125
TEST_COMMAND="${TEST_COMMAND} --cwl-exclude ${EXCLUDE}"
122126
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
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

128136
if [ "$GIT_BRANCH" = "origin/main" ] && [[ "$VERSION" = "v1.0" ]] && [[ "$CONTAINER" = "docker" ]]
129137
then
@@ -153,11 +161,11 @@ echo CWLTOOL_OPTIONS="${CWLTOOL_OPTIONS}"
153161

154162
# Run test
155163
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}"
157165
RETURN_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
163171
fi
@@ -172,7 +180,11 @@ then
172180
fi
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

Comments
 (0)