mirror of
https://github.com/nvm-sh/nvm.git
synced 2026-07-18 12:58:21 +08:00
[Fix] nvm_ls_cached: include source-cached and io.js artifacts
`--offline` version resolution could only see cached node binaries: `nvm_ls_cached` listed `.cache/bin` with a `node-` prefix filter, so cached source tarballs, and everything io.js, could never resolve offline. List both cache kinds, for both flavors, and update the pinned test expectations to match.
This commit is contained in:
@@ -3163,21 +3163,28 @@ nvm_cache_dir() {
|
|||||||
nvm_ls_cached() {
|
nvm_ls_cached() {
|
||||||
local PATTERN
|
local PATTERN
|
||||||
PATTERN="${1-}"
|
PATTERN="${1-}"
|
||||||
local CACHE_BIN_DIR
|
local NVM_CACHE_DIR
|
||||||
CACHE_BIN_DIR="$(nvm_cache_dir)/bin"
|
NVM_CACHE_DIR="$(nvm_cache_dir)"
|
||||||
if [ ! -d "${CACHE_BIN_DIR}" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
local NVM_OS
|
local NVM_OS
|
||||||
NVM_OS="$(nvm_get_os)"
|
NVM_OS="$(nvm_get_os)"
|
||||||
local NVM_ARCH
|
local NVM_ARCH
|
||||||
NVM_ARCH="$(nvm_get_arch)"
|
NVM_ARCH="$(nvm_get_arch)"
|
||||||
local SUFFIX
|
local SUFFIX
|
||||||
SUFFIX="${NVM_OS}-${NVM_ARCH}"
|
SUFFIX="${NVM_OS}-${NVM_ARCH}"
|
||||||
|
{
|
||||||
|
if [ -d "${NVM_CACHE_DIR}/bin" ]; then
|
||||||
# shellcheck disable=SC2010
|
# shellcheck disable=SC2010
|
||||||
command ls -1 "${CACHE_BIN_DIR}" \
|
command ls -1 "${NVM_CACHE_DIR}/bin" \
|
||||||
| nvm_grep "^node-v.*-${SUFFIX}\$" \
|
| nvm_grep "^\\(node\\|iojs\\)-v[0-9][0-9.]*-${SUFFIX}\$" \
|
||||||
| command sed "s/^node-\\(v[0-9][0-9.]*\\)-${SUFFIX}\$/\\1/" \
|
| command sed "s/-${SUFFIX}\$//"
|
||||||
|
fi
|
||||||
|
if [ -d "${NVM_CACHE_DIR}/src" ]; then
|
||||||
|
# shellcheck disable=SC2010
|
||||||
|
command ls -1 "${NVM_CACHE_DIR}/src" \
|
||||||
|
| nvm_grep "^\\(node\\|iojs\\)-v[0-9][0-9.]*\$"
|
||||||
|
fi
|
||||||
|
} \
|
||||||
|
| command sed 's/^node-//' \
|
||||||
| nvm_grep "$(nvm_ensure_version_prefix "${PATTERN}")" \
|
| nvm_grep "$(nvm_ensure_version_prefix "${PATTERN}")" \
|
||||||
| command sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n
|
| command sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,9 +40,7 @@ try nvm_ls_cached "999.999"
|
|||||||
[ -z "$CAPTURED_STDOUT" ] \
|
[ -z "$CAPTURED_STDOUT" ] \
|
||||||
|| die "nvm_ls_cached '999.999' should return empty; got '$CAPTURED_STDOUT'"
|
|| die "nvm_ls_cached '999.999' should return empty; got '$CAPTURED_STDOUT'"
|
||||||
|
|
||||||
# nvm_ls_cached can currently only see bin-cached node artifacts: bin-cached
|
# nvm_ls_cached should list bin- and src-cached artifacts, for node and io.js
|
||||||
# io.js, and src-cached anything, are invisible to it - and thus to
|
|
||||||
# `--offline` version resolution
|
|
||||||
CACHE_DIR="$(nvm_cache_dir)"
|
CACHE_DIR="$(nvm_cache_dir)"
|
||||||
SUFFIX="$(nvm_get_os)-$(nvm_get_arch)"
|
SUFFIX="$(nvm_get_os)-$(nvm_get_arch)"
|
||||||
mkdir -p "${CACHE_DIR}/bin/node-v0.99.98-${SUFFIX}" "${CACHE_DIR}/bin/iojs-v0.99.97-${SUFFIX}" \
|
mkdir -p "${CACHE_DIR}/bin/node-v0.99.98-${SUFFIX}" "${CACHE_DIR}/bin/iojs-v0.99.97-${SUFFIX}" \
|
||||||
@@ -53,22 +51,22 @@ try nvm_ls_cached "v0.99.98"
|
|||||||
|| die "nvm_ls_cached 'v0.99.98' should find the bin-cached node version; got '$CAPTURED_STDOUT'"
|
|| die "nvm_ls_cached 'v0.99.98' should find the bin-cached node version; got '$CAPTURED_STDOUT'"
|
||||||
|
|
||||||
try nvm_ls_cached "iojs-v0.99.97"
|
try nvm_ls_cached "iojs-v0.99.97"
|
||||||
[ -z "$CAPTURED_STDOUT" ] \
|
[ "_$CAPTURED_STDOUT" = "_iojs-v0.99.97" ] \
|
||||||
|| die "nvm_ls_cached 'iojs-v0.99.97' should not see the bin-cached io.js version; got '$CAPTURED_STDOUT'"
|
|| die "nvm_ls_cached 'iojs-v0.99.97' should find the bin-cached io.js version; got '$CAPTURED_STDOUT'"
|
||||||
|
|
||||||
try nvm_ls_cached "v0.99.96"
|
try nvm_ls_cached "v0.99.96"
|
||||||
[ -z "$CAPTURED_STDOUT" ] \
|
[ "_$CAPTURED_STDOUT" = "_v0.99.96" ] \
|
||||||
|| die "nvm_ls_cached 'v0.99.96' should not see the src-cached node version; got '$CAPTURED_STDOUT'"
|
|| die "nvm_ls_cached 'v0.99.96' should find the src-cached node version; got '$CAPTURED_STDOUT'"
|
||||||
|
|
||||||
try nvm_ls_cached "iojs-v0.99.95"
|
try nvm_ls_cached "iojs-v0.99.95"
|
||||||
[ -z "$CAPTURED_STDOUT" ] \
|
[ "_$CAPTURED_STDOUT" = "_iojs-v0.99.95" ] \
|
||||||
|| die "nvm_ls_cached 'iojs-v0.99.95' should not see the src-cached io.js version; got '$CAPTURED_STDOUT'"
|
|| die "nvm_ls_cached 'iojs-v0.99.95' should find the src-cached io.js version; got '$CAPTURED_STDOUT'"
|
||||||
|
|
||||||
# ... and so nvm_offline_version can not resolve them
|
# ... and nvm_offline_version should resolve them
|
||||||
try nvm_offline_version "iojs-v0.99.95"
|
try nvm_offline_version "iojs-v0.99.95"
|
||||||
[ "_$CAPTURED_STDOUT" = "_N/A" ] \
|
[ "_$CAPTURED_STDOUT" = "_iojs-v0.99.95" ] \
|
||||||
|| die "nvm_offline_version 'iojs-v0.99.95' should not resolve the src-cached io.js version; got '$CAPTURED_STDOUT'"
|
|| die "nvm_offline_version 'iojs-v0.99.95' should resolve the src-cached io.js version; got '$CAPTURED_STDOUT'"
|
||||||
[ "_$CAPTURED_EXIT_CODE" = "_3" ] \
|
[ "_$CAPTURED_EXIT_CODE" = "_0" ] \
|
||||||
|| die "nvm_offline_version 'iojs-v0.99.95' should exit 3; got '$CAPTURED_EXIT_CODE'"
|
|| die "nvm_offline_version 'iojs-v0.99.95' should exit 0; got '$CAPTURED_EXIT_CODE'"
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|||||||
Reference in New Issue
Block a user