Files
nvm/test/fast/Unit tests/nvm_get_default_packages
T
Wei-Lun Li 84b176d46d [Fix] nvm_get_default_packages: ignore CRLF line endings
A `default-packages` file saved with Windows line endings left a carriage return on every package name,
and turned each blank line into a lone `\r` entry, so `npm install -g` was given `rimraf\r` and failed.
Strip a trailing `\r` from each line before parsing it,
like `.nvmrc` parsing already tolerates.

Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Wei-Lun Li <b84330808@gmail.com>
2026-11-02 01:47:37 +09:00

106 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
: nvm.sh
\. ../../../nvm.sh
FILE="${NVM_DIR}/default-packages"
die () { echo "$@" ; cleanup ; exit 1; }
setup () {
if [ -f "${FILE}" ]; then
ORIG_DEFAULT_PACKAGES=$(cat "${FILE}")
mkdir -p ./tmp/ ||:
mv "${FILE}" ./tmp/default-packages ||:
fi
touch "${FILE}"
}
cleanup () {
if [ "${ORIG_DEFAULT_PACKAGES}" != "" ]; then
rm -rf ./tmp/
echo "${ORIG_DEFAULT_PACKAGES}" > "${FILE}"
else
rm "${FILE}"
fi
}
setup
cat > "${FILE}" << EOF
rimraf
object-inspect@1.0.2
# commented-package
stevemao/left-pad
EOF
DEFAULT_PKGS="$(nvm_get_default_packages)"
EXPECTED_PKGS='rimraf object-inspect@1.0.2 stevemao/left-pad'
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "1: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
cleanup
setup
cat > "${FILE}" << EOF
rimraf
not~a~package~name
mkdirp
EOF
DEFAULT_PKGS="$(nvm_get_default_packages)"
EXPECTED_PKGS='rimraf not~a~package~name mkdirp'
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "2: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
cleanup
setup
cat > "${FILE}" << EOF
rimraf
not~a~package~name
mkdirp
EOF
printf %s "$(cat "${FILE}")" > "${FILE}" # strip trailing newline
DEFAULT_PKGS="$(nvm_get_default_packages)"
EXPECTED_PKGS='rimraf not~a~package~name mkdirp'
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "3: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
cleanup
setup
cat > "${FILE}" << EOF
object-inspect @ 1.0.2
rimraf
EOF
DEFAULT_PKGS="$(nvm_get_default_packages 2>&1 >/dev/null)"
EXPECTED_PKGS="Only one package per line is allowed in \`${FILE}\`. Please remove any lines with multiple space-separated values."
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "4: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
cleanup
setup
rm -rf "${FILE}"
DEFAULT_PKGS="$(nvm_get_default_packages)"
EXPECTED_PKGS=''
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "5: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
touch "${FILE}"
cleanup
setup
printf 'rimraf\r\nobject-inspect@1.0.2\r\n\r\n# commented-package\r\n\r\nstevemao/left-pad\r\n' > "${FILE}"
DEFAULT_PKGS="$(nvm_get_default_packages)"
EXPECTED_PKGS='rimraf object-inspect@1.0.2 stevemao/left-pad'
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "6: expected default packages from a CRLF file >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
cleanup