#!/bin/sh

die () { echo "$@" ; exit 1; }

\. ../../nvm.sh

set -ex

NVM_TEST_VERSION='v3.99.8'
NVM_PREFIXED_TEST_VERSION="iojs-${NVM_TEST_VERSION}"

# Remove the stuff we're clobbering.
nvm uninstall "${NVM_TEST_VERSION}" || echo 'not installed'

# Exercise nvm's source-install pipeline against a tiny fake source tree,
# seeded into the download cache and installed with --offline (see `install
# from fake source`). This runs everywhere, including on toolchains where
# real io.js can not compile; `install version specified in .nvmrc from
# source` covers the real compile, in CI's gcc:4.9 container job.
SLUG="$(nvm_get_download_slug iojs source "${NVM_TEST_VERSION}")"
COMPRESSION="$(nvm_get_artifact_compression "${NVM_TEST_VERSION}")"
CACHE_DIR="$(nvm_cache_dir)/src/${SLUG}"
STAGING="$(mktemp -d)"
mkdir -p "${STAGING}/${SLUG}" "${CACHE_DIR}"
cp ../fixtures/fake-source-tarball/configure ../fixtures/fake-source-tarball/Makefile "${STAGING}/${SLUG}/"
chmod +x "${STAGING}/${SLUG}/configure"
echo "${NVM_TEST_VERSION}" > "${STAGING}/${SLUG}/VERSION"
if [ "${COMPRESSION}" = 'tar.xz' ]; then
  (cd "${STAGING}" && tar -cJf "${CACHE_DIR}/${SLUG}.${COMPRESSION}" "${SLUG}")
else
  (cd "${STAGING}" && tar -czf "${CACHE_DIR}/${SLUG}.${COMPRESSION}" "${SLUG}")
fi
rm -rf "${STAGING}"

# Install from source, with the version specified in .nvmrc
echo "${NVM_PREFIXED_TEST_VERSION}" > .nvmrc

nvm install -s --offline || die "'nvm install -s --offline' failed"

# Check
nvm_is_version_installed "${NVM_PREFIXED_TEST_VERSION}" || die 'version is not installed'
nvm run --silent "${NVM_PREFIXED_TEST_VERSION}" --version | grep "${NVM_TEST_VERSION}" \
  || die "'nvm run ${NVM_PREFIXED_TEST_VERSION} --version | grep ${NVM_TEST_VERSION}' failed"

rm -rf "${CACHE_DIR}"
