diff --git a/test/test.sh b/test/test.sh index bf5f3a7..046ee20 100755 --- a/test/test.sh +++ b/test/test.sh @@ -58,18 +58,24 @@ _testZFSReplicate() { ## test config override ( + ## likely default values at script load time + ZFS="/sbin/zfs" + SSH="/usr/sbin/ssh" ## source script functions # shellcheck source=/dev/null . ../zfs-replicate.sh printf "_testSetsNoConfig/loadConfigOverrideDefaults\n" - _fail "./ssh.sh %HOST% ./zfs.sh receive -vFd" "$DEST_PIPE_WITH_HOST" - _fail "./zfs.sh receive -vFd" "$DEST_PIPE_WITHOUT_HOST" + _fail "/usr/sbin/ssh %HOST% /sbin/zfs receive -vFd" "$DEST_PIPE_WITH_HOST" + _fail "/sbin/zfs receive -vFd" "$DEST_PIPE_WITHOUT_HOST" + ## generate config config="$(mktemp)" - printf "DEST_PIPE_WITH_HOST=\"pipe with host\"\n" | tee -a "$config" - printf "DEST_PIPE_WITHOUT_HOST=\"pipe without host\"\n" | tee -a "$config" - loadConfig "$config" > /dev/null 2>&1 - _fail "pipe with host" "$DEST_PIPE_WITH_HOST" - _fail "pipe without host" "$DEST_PIPE_WITHOUT_HOST" + printf "ZFS=\"myZFS\"\n" >> "$config" + ## set SSH via environment + SSH="mySSH" + loadConfig "$config" && rm -f "$config" + ## values should match config and environment + _fail "mySSH %HOST% myZFS receive -vFd" "$DEST_PIPE_WITH_HOST" + _fail "myZFS receive -vFd" "$DEST_PIPE_WITHOUT_HOST" ) ## test snapCreate diff --git a/zfs-replicate.sh b/zfs-replicate.sh index 3b9874f..aaaabb2 100755 --- a/zfs-replicate.sh +++ b/zfs-replicate.sh @@ -38,13 +38,12 @@ LOGGER="${LOGGER:-$(which logger || true)}" FIND="${FIND:-$(which find || true)}" SSH="${SSH:-$(which ssh || true)}" ZFS="${ZFS:-$(which zfs || true)}" -DEST_PIPE_WITH_HOST="${DEST_PIPE_WITH_HOST:-"$SSH %HOST% $ZFS receive -vFd"}" -DEST_PIPE_WITHOUT_HOST="${DEST_PIPE_WITHOUT_HOST:-"$ZFS receive -vFd"}" HOST_CHECK="${HOST_CHECK:-"ping -c1 -q -W2 %HOST%"}" - +## we default these after config is loaded +DEST_PIPE_WITH_HOST= +DEST_PIPE_WITHOUT_HOST= ## temp path used for lock files TMPDIR="${TMPDIR:-"/tmp"}" - ## init values used in snapCreate and exitClean __PAIR_COUNT=0 __SKIP_COUNT=0 @@ -500,10 +499,11 @@ loadConfig() { readonly FIND readonly SSH readonly ZFS - readonly DEST_PIPE_WITH_HOST - readonly DEST_PIPE_WITHOUT_HOST readonly HOST_CHECK readonly TMPDIR + ## set pipes after configuration to ensure proper $SSH and $ZFS subs + readonly DEST_PIPE_WITH_HOST="${DEST_PIPE_WITH_HOST:-"$SSH %HOST% $ZFS receive -vFd"}" + readonly DEST_PIPE_WITHOUT_HOST="${DEST_PIPE_WITHOUT_HOST:-"$ZFS receive -vFd"}" ## check configuration if [ -n "$LOG_BASE" ] && [ ! -d "$LOG_BASE" ]; then mkdir -p "$LOG_BASE"