#!/bin/sh cleanup () { unset -f nvm_compute_checksum } die () { echo "$@" ; cleanup ; exit 1; } : nvm.sh \. ../../../nvm.sh \. ../../common.sh set -ex nvm_compute_checksum() { echo } try_err nvm_compare_checksum EXPECTED_OUTPUT='Provided file to checksum is empty.' [ "${CAPTURED_STDERR}" = "${EXPECTED_OUTPUT}" ] || die "expected >${EXPECTED_OUTPUT}<, got >${CAPTURED_STDERR}<" [ "${CAPTURED_EXIT_CODE}" = 4 ] || die "expected to exit with code 4, got ${CAPTURED_EXIT_CODE}" try_err nvm_compare_checksum foo EXPECTED_OUTPUT='Provided file to checksum does not exist.' [ "${CAPTURED_STDERR}" = "${EXPECTED_OUTPUT}" ] || die "expected >${EXPECTED_OUTPUT}<, got >${CAPTURED_STDERR}<" [ "${CAPTURED_EXIT_CODE}" = 3 ] || die "expected to exit with code 3, got ${CAPTURED_EXIT_CODE}" try_err nvm_compare_checksum ../../../nvm.sh EXPECTED_OUTPUT='Provided checksum to compare to is empty.' [ "${CAPTURED_STDERR}" = "${EXPECTED_OUTPUT}" ] || die "expected >${EXPECTED_OUTPUT}<, got >${CAPTURED_STDERR}<" [ "${CAPTURED_EXIT_CODE}" = 2 ] || die "expected to exit with code 2, got ${CAPTURED_EXIT_CODE}" try_err nvm_compare_checksum ../../../nvm.sh checksum EXPECTED_OUTPUT="Computed checksum of '../../../nvm.sh' is empty. WARNING: Continuing *without checksum verification*" [ "${CAPTURED_STDERR}" = "${EXPECTED_OUTPUT}" ] || die "expected >${EXPECTED_OUTPUT}<, got >${CAPTURED_STDERR}<" [ "${CAPTURED_EXIT_CODE}" = 0 ] || die "expected to exit with code 0, got ${CAPTURED_EXIT_CODE}" nvm_compute_checksum() { echo "not checksum: ${1}" } try_err nvm_compare_checksum ../../../nvm.sh checksum EXPECTED_OUTPUT="Checksums do not match: 'not checksum: ../../../nvm.sh' found, 'checksum' expected." [ "${CAPTURED_STDERR}" = "${EXPECTED_OUTPUT}" ] || die "expected >${EXPECTED_OUTPUT}<, got >${CAPTURED_STDERR}<" [ "${CAPTURED_EXIT_CODE}" = 1 ] || die "expected to exit with code 1, got ${CAPTURED_EXIT_CODE}" nvm_compute_checksum() { echo checksum } try_err nvm_compare_checksum ../../../nvm.sh checksum EXPECTED_OUTPUT='Checksums matched!' [ "${CAPTURED_STDERR}" = "${EXPECTED_OUTPUT}" ] || die "expected >${EXPECTED_OUTPUT}<, got >${CAPTURED_STDERR}<" [ "${CAPTURED_EXIT_CODE}" = 0 ] || die "expected to exit with code 0, got ${CAPTURED_EXIT_CODE}" cleanup