Skip to content

Commit

Permalink
Tidy up registration tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
hjoliver committed Aug 30, 2019
1 parent 6d0a0a0 commit c1a5959
Showing 1 changed file with 66 additions and 56 deletions.
122 changes: 66 additions & 56 deletions tests/registration/00-simple.t
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

#------------------------------------------------------------------------------
# Test suite registration

Expand All @@ -23,33 +24,22 @@ export RND_SUITE_RUNDIR
export CYLC_RUN_DIR="$(cylc get-global-config --print-run-dir)"

function make_rnd_suite() {
RND_SUITE_NAME=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6)
RND_SUITE_SOURCE="$TEST_DIR/${RND_SUITE_NAME}"
RND_SUITE_NAME=x$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6)
RND_SUITE_SOURCE="$PWD/${RND_SUITE_NAME}"
mkdir -p "${RND_SUITE_SOURCE}"
touch "${RND_SUITE_SOURCE}/suite.rc"
RND_SUITE_RUNDIR="${CYLC_RUN_DIR}/${RND_SUITE_NAME}"
}

function purge_rnd_suite() {
RND_SUITE_SOURCE=${1:-RND_SUITE_SOURCE}
RND_SUITE_SOURCE=${2:-RND_SUITE_RUNDIR}
RND_SUITE_SOURCE=${1:-$RND_SUITE_SOURCE}
RND_SUITE_RUNDIR=${2:-$RND_SUITE_RUNDIR}
rm -rf "${RND_SUITE_SOURCE}"
rm -rf "${RND_SUITE_RUNDIR}"
}

. "$(dirname "$0")/test_header"
set_test_number 36

init_suite "${TEST_NAME_BASE}" <<'__SUITE_RC__'
[meta]
title = the quick brown fox
[scheduling]
[[graph]]
R1 = a => b => c
[runtime]
[[a,b,c]]
script = true
__SUITE_RC__
set_test_number 37

# Use $SUITE_NAME and $SUITE_RUN_DIR defined by test_header

Expand Down Expand Up @@ -164,6 +154,66 @@ contains_ok "${TEST_NAME}.stdout" <<__ERR__
${RND_SUITE_SOURCE}
__ERR__

purge_rnd_suite
purge_rnd_suite "${RND_SUITE_SOURCE1}" "${RND_SUITE_RUNDIR1}"

#-----------------------
# Test alternate run dir
# 1. Normal case.
TEST_NAME="${TEST_NAME_BASE}-alt-run-dir"
make_rnd_suite
ALT_RUN_DIR="${PWD}/alt"
run_ok "${TEST_NAME}" \
cylc register --run-dir="${ALT_RUN_DIR}" "${RND_SUITE_NAME}" "${RND_SUITE_SOURCE}"
contains_ok "${TEST_NAME}.stdout" <<__OUT__
REGISTERED ${RND_SUITE_NAME} -> ${RND_SUITE_SOURCE}
__OUT__
run_ok "${TEST_NAME}-check-link" test -L "${RND_SUITE_RUNDIR}"
run_ok "${TEST_NAME}-rm-link" rm "${RND_SUITE_RUNDIR}"
run_ok "${TEST_NAME}-rm-alt-run-dir" rm -r "${ALT_RUN_DIR}"
purge_rnd_suite

# 2. If reg already exists (as a directory).
TEST_NAME="${TEST_NAME_BASE}-alt-exists1"
make_rnd_suite
ALT_RUN_DIR="${PWD}/alt"
mkdir -p "${RND_SUITE_RUNDIR}"
run_fail "${TEST_NAME}" \
cylc register --run-dir="${ALT_RUN_DIR}" "${RND_SUITE_NAME}" "${RND_SUITE_SOURCE}"
contains_ok "${TEST_NAME}.stderr" <<__OUT__
SuiteServiceFileError: Run directory '${RND_SUITE_RUNDIR}' already exists.
__OUT__
purge_rnd_suite

# 3. If reg already exists (as a valid symlink).
TEST_NAME="${TEST_NAME_BASE}-alt-exists2"
make_rnd_suite
ALT_RUN_DIR="${PWD}/alt"
TDIR=$(mktemp -d)
mkdir -p $(dirname "${RND_SUITE_RUNDIR}")
ln -s "${TDIR}" "${RND_SUITE_RUNDIR}"
run_fail "${TEST_NAME}" \
cylc register --run-dir="${ALT_RUN_DIR}" "${RND_SUITE_NAME}" "${RND_SUITE_SOURCE}"
contains_ok "${TEST_NAME}.stderr" <<__OUT__
SuiteServiceFileError: Symlink '${RND_SUITE_RUNDIR}' already points to ${TDIR}.
__OUT__
purge_rnd_suite
rm -rf "${TDIR}"

#-----------------------------------------------------------------------------
# Now use a real suite

init_suite "${TEST_NAME_BASE}" <<'__SUITE_RC__'
[meta]
title = the quick brown fox
[scheduling]
[[graph]]
R1 = a => b => c
[runtime]
[[a,b,c]]
script = true
__SUITE_RC__

run_ok "${TEST_NAME_BASE}-val" cylc validate "${SUITE_NAME}"

run_ok "${TEST_NAME_BASE}-print" cylc print
Expand All @@ -182,45 +232,5 @@ else
fail "${TEST_NAME_BASE}-print.stderr"
fi

# Test alternate run dir.
# 1. Normal case.
TEST_NAME="${TEST_NAME_BASE}-alt-run-dir"
SRC_DIR="${PWD}/foo"
REG="${SUITE_NAME}-foo"
RUN_DIR="${CYLC_RUN_DIR}/${REG}"
ALT_RUN_DIR="${PWD}/alt"
mkdir "${SRC_DIR}"; touch "${SRC_DIR}/suite.rc"
run_ok "${TEST_NAME}" cylc register --run-dir="${ALT_RUN_DIR}" "${REG}" "${SRC_DIR}"
contains_ok "${TEST_NAME}.stdout" <<__OUT__
REGISTERED ${REG} -> ${SRC_DIR}
__OUT__
run_ok "${TEST_NAME}-check-link" test -L "${RUN_DIR}"
run_ok "${TEST_NAME}-rm-link" echo foo ## rm "${RUN_DIR}"
run_ok "${TEST_NAME}-rm-alt-run-dir" echo foo ## rm -r "${ALT_RUN_DIR}"
## rm -r "${SRC_DIR}"

# Test alternate run dir.
# 2. If reg already exists (as a directory).
TEST_NAME="${TEST_NAME_BASE}-alt-exists1"
mkdir "${RUN_DIR}"
mkdir "${SRC_DIR}"; touch "${SRC_DIR}/suite.rc"
run_fail "${TEST_NAME}" cylc register --run-dir="${ALT_RUN_DIR}" "${REG}" "${SRC_DIR}"
contains_ok "${TEST_NAME}.stderr" <<__OUT__
SuiteServiceFileError: Run directory '${RUN_DIR}' already exists.
__OUT__
## rm -r "${SRC_DIR}" "${RUN_DIR}"

# Test alternate run dir.
# 3. If reg already exists (as a valid symlink).
TEST_NAME="${TEST_NAME_BASE}-alt-exists2"
mkdir "${SRC_DIR}"; touch "${SRC_DIR}/suite.rc"
mkdir "${PWD}/target"
ln -s "${PWD}/target" "${RUN_DIR}"
run_fail "${TEST_NAME}" cylc register --run-dir="${ALT_RUN_DIR}" "${REG}" "${SRC_DIR}"
contains_ok "${TEST_NAME}.stderr" <<__OUT__
SuiteServiceFileError: Symlink '${RUN_DIR}' already points to ${PWD}/target.
__OUT__
## rm -r "${SRC_DIR}" "${PWD}/target"

purge_suite "${SUITE_NAME}"
exit

0 comments on commit c1a5959

Please sign in to comment.