mirror of
https://github.com/nvm-sh/nvm.git
synced 2025-05-10 06:11:51 +00:00
86 lines
2.5 KiB
Bash
Executable File
86 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
cleanup () {
|
|
nvm cache clear
|
|
nvm deactivate
|
|
rm -rf ${NVM_DIR}/v*
|
|
nvm unalias default
|
|
}
|
|
|
|
die () { >&2 echo "$@" ; cleanup ; exit 1; }
|
|
|
|
\. ../../../nvm.sh
|
|
|
|
cleanup
|
|
|
|
OUTPUT="$(TERM=dumb 2>&1 nvm install --no-progress v0.12.18)"
|
|
EXPECTED_OUTPUT="Downloading and installing node v0.12.18...
|
|
Downloading https://nodejs.org/dist/v0.12.18/node-v0.12.18-linux-x64.tar.xz...
|
|
Computing checksum with sha256sum
|
|
Checksums matched!
|
|
Now using node v0.12.18 (npm v2.15.11)
|
|
Creating default alias: default -> v0.12.18 *"
|
|
|
|
[ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "1: expected >
|
|
${EXPECTED_OUTPUT}<, got >
|
|
${OUTPUT}<"
|
|
|
|
cleanup
|
|
|
|
OUTPUT="$(TERM=dumb 2>&1 nvm install v0.12.18)"
|
|
EXPECTED_OUTPUT="Downloading and installing node v0.12.18...
|
|
Downloading https://nodejs.org/dist/v0.12.18/node-v0.12.18-linux-x64.tar.xz...
|
|
######################################################################### 100.0%
|
|
Computing checksum with sha256sum
|
|
Checksums matched!
|
|
Now using node v0.12.18 (npm v2.15.11)
|
|
Creating default alias: default -> v0.12.18 *"
|
|
|
|
[ "$(echo "${OUTPUT}" | wc -l)" = "$(echo "${EXPECTED_OUTPUT}" | wc -l)" ] || die "2: expected 7 lines, got $(echo "${OUTPUT}" | wc -l)"
|
|
|
|
# Preprocess function to handle carriage returns and extract final output
|
|
preprocess_output() {
|
|
echo "$1" | awk '
|
|
{
|
|
# For each line in the input
|
|
while (index($0, "\r") > 0) {
|
|
# If a carriage return is found, process it
|
|
pos = index($0, "\r")
|
|
before_cr = substr($0, 1, pos - 1)
|
|
after_cr = substr($0, pos + 1)
|
|
# Overwrite the line up to the carriage return with content after it
|
|
$0 = after_cr
|
|
}
|
|
print $0
|
|
}' | sed '/^$/d' # Remove any empty lines
|
|
}
|
|
|
|
[ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || {
|
|
echo "$OUTPUT" \
|
|
| while IFS= read -r output_line && IFS= read -r expected_line <&3; do
|
|
line_number=$((line_number + 1))
|
|
|
|
# Strip non-visible characters from both lines
|
|
clean_output=$(preprocess_output "$output_line")
|
|
|
|
if [ "${output_line}" != "${expected_line}" ] && ! echo "${clean_output}" | \grep -qE '^#+ 100\.0%$'; then
|
|
echo "Difference on line ${line_number}:"
|
|
echo "Output: ${output_line}"
|
|
echo "Expected: ${expected_line}"
|
|
echo "Byte-by-byte comparison:"
|
|
echo "Output: $(echo "${clean_output}" | od -An -tx1 | tr -d '\n')"
|
|
echo "Expected: $(echo "${expected_line}" | od -An -tx1 | tr -d '\n')"
|
|
|
|
die "4: expected >
|
|
${EXPECTED_OUTPUT}<, got >
|
|
${OUTPUT}<"
|
|
fi
|
|
done 3<<EOF
|
|
$EXPECTED_OUTPUT
|
|
EOF
|
|
}
|
|
|
|
cleanup
|