1345 lines
43 KiB
Bash
Executable file
1345 lines
43 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -e -u
|
|
|
|
if [ -x /bin/echo ]; then
|
|
ECHO='/bin/echo'
|
|
else
|
|
ECHO='echo'
|
|
fi
|
|
|
|
# Prints the absolute path of a directory to stdout
|
|
abs_path() {
|
|
local path="$1"
|
|
# Unset CDPATH because it causes havok: it makes the destination unpredictable
|
|
# and triggers 'cd' to print the path to stdout. Route `cd`'s output to /dev/null
|
|
# for good measure.
|
|
(unset CDPATH && cd "$path" > /dev/null && pwd)
|
|
}
|
|
|
|
S="$(abs_path $(dirname $0))"
|
|
|
|
TEST_DIR="$S/test"
|
|
WORK_DIR="$TMP_DIR/workdir"
|
|
OUT_DIR="$TMP_DIR/outdir"
|
|
PREFIX_DIR="$TMP_DIR/prefix"
|
|
|
|
case $(uname -s) in
|
|
|
|
MINGW* | MSYS*)
|
|
WINDOWS=1
|
|
;;
|
|
esac
|
|
|
|
say() {
|
|
echo "test: $1"
|
|
}
|
|
|
|
pre() {
|
|
echo "test: $1"
|
|
rm -Rf "$WORK_DIR"
|
|
rm -Rf "$OUT_DIR"
|
|
rm -Rf "$PREFIX_DIR"
|
|
mkdir -p "$WORK_DIR"
|
|
mkdir -p "$OUT_DIR"
|
|
mkdir -p "$PREFIX_DIR"
|
|
}
|
|
|
|
need_ok() {
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
fail() {
|
|
echo
|
|
echo "$1"
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
}
|
|
|
|
try() {
|
|
set +e
|
|
_cmd="$@"
|
|
_output=`$@ 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
echo \$ "$_cmd"
|
|
# Using /bin/echo to avoid escaping
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
else
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
|
|
echo \$ "$_cmd"
|
|
fi
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
|
|
$ECHO "$_output"
|
|
fi
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
expect_fail() {
|
|
set +e
|
|
_cmd="$@"
|
|
_output=`$@ 2>&1`
|
|
if [ $? -eq 0 ]; then
|
|
echo \$ "$_cmd"
|
|
# Using /bin/echo to avoid escaping
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
else
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
|
|
echo \$ "$_cmd"
|
|
fi
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
|
|
$ECHO "$_output"
|
|
fi
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
expect_output_ok() {
|
|
set +e
|
|
local _expected="$1"
|
|
shift 1
|
|
_cmd="$@"
|
|
_output=`$@ 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
echo \$ "$_cmd"
|
|
# Using /bin/echo to avoid escaping
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
elif ! echo "$_output" | grep -q "$_expected"; then
|
|
echo \$ "$_cmd"
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "missing expected output '$_expected'"
|
|
echo
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
else
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
|
|
echo \$ "$_cmd"
|
|
fi
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
|
|
$ECHO "$_output"
|
|
fi
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
expect_output_fail() {
|
|
set +e
|
|
local _expected="$1"
|
|
shift 1
|
|
_cmd="$@"
|
|
_output=`$@ 2>&1`
|
|
if [ $? -eq 0 ]; then
|
|
echo \$ "$_cmd"
|
|
# Using /bin/echo to avoid escaping
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
elif ! echo "$_output" | grep -q "$_expected"; then
|
|
echo \$ "$_cmd"
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "missing expected output '$_expected'"
|
|
echo
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
else
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
|
|
echo \$ "$_cmd"
|
|
fi
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
|
|
$ECHO "$_output"
|
|
fi
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
expect_not_output_ok() {
|
|
set +e
|
|
local _expected="$1"
|
|
shift 1
|
|
_cmd="$@"
|
|
_output=`$@ 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
echo \$ "$_cmd"
|
|
# Using /bin/echo to avoid escaping
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
elif echo "$_output" | grep -q "$_expected"; then
|
|
echo \$ "$_cmd"
|
|
$ECHO "$_output"
|
|
echo
|
|
echo "unexpected output '$_expected'"
|
|
echo
|
|
echo
|
|
echo "TEST FAILED!"
|
|
echo
|
|
exit 1
|
|
else
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
|
|
echo \$ "$_cmd"
|
|
fi
|
|
if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
|
|
$ECHO "$_output"
|
|
fi
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
runtest() {
|
|
local _testname="$1"
|
|
if [ -n "${TESTNAME-}" ]; then
|
|
if ! echo "$_testname" | grep -q "$TESTNAME"; then
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
pre "$_testname"
|
|
"$_testname"
|
|
}
|
|
|
|
# Installation tests
|
|
|
|
basic_install() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/something-to-install"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/program2"
|
|
try test -e "$PREFIX_DIR/bin/bad-bin"
|
|
}
|
|
runtest basic_install
|
|
|
|
basic_uninstall() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/package/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/something-to-install"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/program2"
|
|
try test ! -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
}
|
|
runtest basic_uninstall
|
|
|
|
not_installed_files() {
|
|
mkdir -p "$WORK_DIR/overlay"
|
|
touch "$WORK_DIR/overlay/not-installed"
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--non-installed-overlay="$WORK_DIR/overlay"
|
|
try test -e "$WORK_DIR/package/not-installed"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/not-installed"
|
|
}
|
|
runtest not_installed_files
|
|
|
|
tarball_with_package_name() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc-nightly
|
|
try "$WORK_DIR/rustc-nightly/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$OUT_DIR/rustc-nightly.tar.gz"
|
|
try test -e "$OUT_DIR/rustc-nightly.tar.xz"
|
|
}
|
|
runtest tarball_with_package_name
|
|
|
|
install_overwrite_backup() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try mkdir -p "$PREFIX_DIR/bin"
|
|
touch "$PREFIX_DIR/bin/program"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
# The existing program was backed up by 'install'
|
|
try test -e "$PREFIX_DIR/bin/program.old"
|
|
}
|
|
runtest install_overwrite_backup
|
|
|
|
bulk_directory() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--bulk-dirs=dir-to-install
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/something-to-install"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/program2"
|
|
try test -e "$PREFIX_DIR/bin/bad-bin"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
|
|
try test ! -e "$PREFIX_DIR/dir-to-install"
|
|
}
|
|
runtest bulk_directory
|
|
|
|
bulk_directory_overwrite() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--bulk-dirs=dir-to-install
|
|
try mkdir -p "$PREFIX_DIR/dir-to-install"
|
|
try touch "$PREFIX_DIR/dir-to-install/overwrite"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
# The file that used to exist in the directory no longer does
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/overwrite"
|
|
# It was backed up
|
|
try test -e "$PREFIX_DIR/dir-to-install.old/overwrite"
|
|
}
|
|
runtest bulk_directory_overwrite
|
|
|
|
bulk_directory_overwrite_existing_backup() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--bulk-dirs=dir-to-install
|
|
try mkdir -p "$PREFIX_DIR/dir-to-install"
|
|
try touch "$PREFIX_DIR/dir-to-install/overwrite"
|
|
# This time we've already got an existing backup of the overwritten directory.
|
|
# The install should still succeed.
|
|
try mkdir -p "$PREFIX_DIR/dir-to-install~"
|
|
try touch "$PREFIX_DIR/dir-to-install~/overwrite"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/overwrite"
|
|
try test -e "$PREFIX_DIR/dir-to-install~/overwrite"
|
|
}
|
|
runtest bulk_directory_overwrite_existing_backup
|
|
|
|
nested_bulk_directory() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--bulk-dirs=dir-to-install/qux
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/dir-to-install/qux/bar"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/qux"
|
|
}
|
|
runtest nested_bulk_directory
|
|
|
|
only_bulk_directory_no_files() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image5" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--bulk-dirs=dir-to-install
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/foo"
|
|
}
|
|
runtest only_bulk_directory_no_files
|
|
|
|
nested_not_installed_files() {
|
|
mkdir -p "$WORK_DIR/overlay"
|
|
touch "$WORK_DIR/overlay/not-installed"
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--non-installed-overlay="$WORK_DIR/overlay"
|
|
try test -e "$WORK_DIR/package/not-installed"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/not-installed"
|
|
}
|
|
runtest nested_not_installed_files
|
|
|
|
multiple_components() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR/c1" \
|
|
--output-dir="$OUT_DIR/c1" \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR/c2" \
|
|
--output-dir="$OUT_DIR/c2" \
|
|
--component-name=cargo
|
|
try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/something-to-install"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/program2"
|
|
try test -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
|
|
try test ! -e "$PREFIX_DIR/something-to-install"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/program2"
|
|
try test ! -e "$PREFIX_DIR/bin/bad-bin"
|
|
try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
}
|
|
runtest multiple_components
|
|
|
|
uninstall_from_installed_script() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR/c1" \
|
|
--output-dir="$OUT_DIR/c1" \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR/c2" \
|
|
--output-dir="$OUT_DIR/c2" \
|
|
--component-name=cargo
|
|
try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/something-to-install"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/program2"
|
|
try test -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
# All components should be uninstalled by this script
|
|
try sh "$PREFIX_DIR/lib/packagelib/uninstall.sh"
|
|
try test ! -e "$PREFIX_DIR/something-to-install"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/program2"
|
|
try test ! -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
}
|
|
runtest uninstall_from_installed_script
|
|
|
|
uninstall_from_installed_script_with_args_fails() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR/c1" \
|
|
--output-dir="$OUT_DIR/c1" \
|
|
--component-name=rustc
|
|
try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR"
|
|
expect_output_fail "uninstall.sh does not take any arguments" \
|
|
sh "$PREFIX_DIR/lib/packagelib/uninstall.sh" --prefix=foo
|
|
}
|
|
runtest uninstall_from_installed_script_with_args_fails
|
|
|
|
# Combined installer tests
|
|
|
|
combine_installers() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/something-to-install"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/program2"
|
|
try test -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/something-to-install"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/program2"
|
|
try test ! -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
}
|
|
runtest combine_installers
|
|
|
|
combine_three_installers() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/something-to-install"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/program2"
|
|
try test -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/dir-to-install/qux/bar"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/something-to-install"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/program2"
|
|
try test ! -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/qux/bar"
|
|
}
|
|
runtest combine_three_installers
|
|
|
|
combine_installers_with_overlay() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
mkdir -p "$WORK_DIR/overlay"
|
|
touch "$WORK_DIR/overlay/README"
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
|
|
--non-installed-overlay="$WORK_DIR/overlay"
|
|
try test -e "$WORK_DIR/rust/README"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/README"
|
|
}
|
|
runtest combine_installers_with_overlay
|
|
|
|
combined_with_bulk_dirs() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc \
|
|
--bulk-dirs=dir-to-install
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install"
|
|
}
|
|
runtest combined_with_bulk_dirs
|
|
|
|
combine_install_with_separate_uninstall() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc \
|
|
--rel-manifest-dir=rustlib
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo \
|
|
--rel-manifest-dir=rustlib
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
|
|
--rel-manifest-dir=rustlib
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/something-to-install"
|
|
try test -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/program2"
|
|
try test -e "$PREFIX_DIR/bin/bad-bin"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try "$WORK_DIR/rustc/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/something-to-install"
|
|
try test ! -e "$PREFIX_DIR/dir-to-install/foo"
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/program2"
|
|
try test ! -e "$PREFIX_DIR/bin/bad-bin"
|
|
try "$WORK_DIR/cargo/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
}
|
|
runtest combine_install_with_separate_uninstall
|
|
|
|
select_components_to_install() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rustc
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=cargo
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rust-docs
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rustc,cargo
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" \
|
|
--components=rustc,cargo,rust-docs
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
}
|
|
runtest select_components_to_install
|
|
|
|
select_components_to_uninstall() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=cargo
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rust-docs
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc,cargo
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" \
|
|
--components=rustc,cargo,rust-docs
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try test ! -e "$PREFIX_DIR/lib/packagelib"
|
|
}
|
|
runtest select_components_to_uninstall
|
|
|
|
invalid_component() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
expect_output_fail "unknown component" "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" \
|
|
--components=foo
|
|
}
|
|
runtest invalid_component
|
|
|
|
without_components() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,cargo
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,rustc
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test ! -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
|
|
}
|
|
runtest without_components
|
|
|
|
# --uninstall --without is kind of weird,
|
|
# --without causes components to remain installed
|
|
uninstall_without_components() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs,cargo
|
|
try test ! -e "$PREFIX_DIR/bin/program"
|
|
try test -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/baz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs,rustc
|
|
try test -e "$PREFIX_DIR/bin/program"
|
|
try test ! -e "$PREFIX_DIR/bin/cargo"
|
|
try test -e "$PREFIX_DIR/baz"
|
|
}
|
|
runtest uninstall_without_components
|
|
|
|
without_any_components() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
expect_output_fail "no components selected for installation" \
|
|
"$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,rustc,cargo
|
|
}
|
|
runtest without_any_components
|
|
|
|
uninstall_without_any_components() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
|
|
expect_output_fail "no components selected for uninstallation" \
|
|
"$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" \
|
|
--uninstall --without=rust-docs,rustc,cargo
|
|
}
|
|
runtest uninstall_without_any_components
|
|
|
|
list_components() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
expect_output_ok "rustc" "$WORK_DIR/rust/install.sh" --list-components
|
|
expect_output_ok "cargo" "$WORK_DIR/rust/install.sh" --list-components
|
|
expect_output_ok "rust-docs" "$WORK_DIR/rust/install.sh" --list-components
|
|
}
|
|
runtest list_components
|
|
|
|
combined_remains() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image4" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust-docs \
|
|
--component-name=rust-docs
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
|
|
for component in rustc cargo rust-docs; do
|
|
# bootstrap wants the original extracted package intact too
|
|
try test -d "$WORK_DIR/$component/$component"
|
|
try test -d "$WORK_DIR/rust/$component"
|
|
done
|
|
}
|
|
runtest combined_remains
|
|
|
|
# Smoke tests
|
|
|
|
cannot_write_error() {
|
|
# chmod doesn't work on windows
|
|
if [ ! -n "${WINDOWS-}" ]; then
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
chmod u-w "$PREFIX_DIR"
|
|
expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
chmod u+w "$PREFIX_DIR"
|
|
fi
|
|
}
|
|
runtest cannot_write_error
|
|
|
|
cannot_install_to_installer() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=my-package
|
|
expect_output_fail "cannot install to same directory as installer" \
|
|
"$WORK_DIR/my-package/install.sh" --prefix="$WORK_DIR/my-package"
|
|
}
|
|
runtest cannot_install_to_installer
|
|
|
|
upgrade_from_future_installer_error() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--rel-manifest-dir=rustlib
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
echo 100 > "$PREFIX_DIR/lib/rustlib/rust-installer-version"
|
|
expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
}
|
|
runtest upgrade_from_future_installer_error
|
|
|
|
destdir() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --destdir="$PREFIX_DIR/" --prefix=prefix
|
|
try test -e "$PREFIX_DIR/prefix/bin/program"
|
|
}
|
|
runtest destdir
|
|
|
|
destdir_no_trailing_slash() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --destdir="$PREFIX_DIR" --prefix=prefix
|
|
try test -e "$PREFIX_DIR/prefix/bin/program"
|
|
}
|
|
runtest destdir_no_trailing_slash
|
|
|
|
disable_verify_noop() {
|
|
# Obsolete --disable-verify flag doesn't generate error
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --disable-verify
|
|
}
|
|
runtest disable_verify_noop
|
|
|
|
create_log() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/lib/packagelib/install.log"
|
|
local _log="$(cat "$PREFIX_DIR/lib/packagelib/install.log")"
|
|
if [ -z "$_log" ]; then
|
|
fail "log is empty"
|
|
fi
|
|
}
|
|
runtest create_log
|
|
|
|
leave_log_after_failure() {
|
|
# chmod doesn't work on windows
|
|
if [ ! -n "${WINDOWS-}" ]; then
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
mkdir -p "$PREFIX_DIR/lib/packagelib"
|
|
touch "$PREFIX_DIR/lib/packagelib/components"
|
|
chmod u-w "$PREFIX_DIR/lib/packagelib/components"
|
|
expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
chmod u+w "$PREFIX_DIR/lib/packagelib/components"
|
|
try test -e "$PREFIX_DIR/lib/packagelib/install.log"
|
|
local _log="$(cat "$PREFIX_DIR/lib/packagelib/install.log")"
|
|
if [ -z "$_log" ]; then
|
|
fail "log is empty"
|
|
fi
|
|
# script should tell user where the logs are
|
|
if ! grep -q "see logs at" "$PREFIX_DIR/lib/packagelib/install.log"; then
|
|
fail "missing log message"
|
|
fi
|
|
fi
|
|
}
|
|
runtest leave_log_after_failure
|
|
|
|
# https://github.com/rust-lang/rust-installer/issues/22
|
|
help() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --help
|
|
}
|
|
runtest help
|
|
|
|
# https://github.com/rust-lang/rust-installer/issues/31
|
|
CDPATH_does_not_destroy_things() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
cd "$WORK_DIR" || exit 1
|
|
export CDPATH="../$(basename $WORK_DIR)/foo"
|
|
try sh "package/install.sh" --prefix="$PREFIX_DIR"
|
|
cd "$S" || exit 1
|
|
cd "$PREFIX_DIR" || exit 1
|
|
export CDPATH="../$(basename $PREFIX_DIR)"
|
|
try sh "lib/packagelib/uninstall.sh"
|
|
cd "$S" || exit 1
|
|
unset CDPATH
|
|
}
|
|
runtest CDPATH_does_not_destroy_things
|
|
|
|
docdir_default() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image-docdir1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
|
|
try test -e "$PREFIX_DIR/share/doc/rust/README"
|
|
try test -e "$PREFIX_DIR/share/doc/rust/rustdocs.txt"
|
|
}
|
|
runtest docdir_default
|
|
|
|
docdir() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image-docdir1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR"
|
|
try mkdir "$WORK_DIR/docdir"
|
|
try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --docdir="$WORK_DIR/docdir"
|
|
try test -e "$WORK_DIR/docdir/README"
|
|
try test -e "$WORK_DIR/docdir/rustdocs.txt"
|
|
}
|
|
runtest docdir
|
|
|
|
docdir_combined() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image-docdir1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name="rustc" \
|
|
--component-name="rustc"
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image-docdir2" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name="cargo" \
|
|
--component-name="cargo"
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz"
|
|
try mkdir "$WORK_DIR/docdir"
|
|
try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --docdir="$WORK_DIR/docdir"
|
|
try test -e "$WORK_DIR/docdir/README"
|
|
try test -e "$WORK_DIR/docdir/rustdocs.txt"
|
|
try test -e "$WORK_DIR/docdir/README"
|
|
try test -e "$WORK_DIR/docdir/cargodocs.txt"
|
|
}
|
|
runtest docdir_combined
|
|
|
|
combine_installers_different_input_compression_formats() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc \
|
|
--compression-formats=xz
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo \
|
|
--compression-formats=gz
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.xz,$OUT_DIR/cargo.tar.gz"
|
|
|
|
try test -e "${OUT_DIR}/rust.tar.gz"
|
|
try test -e "${OUT_DIR}/rust.tar.xz"
|
|
}
|
|
runtest combine_installers_different_input_compression_formats
|
|
|
|
generate_compression_formats_one() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name="rustc" \
|
|
--component-name="rustc" \
|
|
--compression-formats="xz"
|
|
|
|
try test ! -e "${OUT_DIR}/rustc.tar.gz"
|
|
try test -e "${OUT_DIR}/rustc.tar.xz"
|
|
}
|
|
runtest generate_compression_formats_one
|
|
|
|
generate_compression_formats_multiple() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name="rustc" \
|
|
--component-name="rustc" \
|
|
--compression-formats="gz,xz"
|
|
|
|
try test -e "${OUT_DIR}/rustc.tar.gz"
|
|
try test -e "${OUT_DIR}/rustc.tar.xz"
|
|
}
|
|
runtest generate_compression_formats_multiple
|
|
|
|
generate_compression_formats_error() {
|
|
expect_fail sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name="rustc" \
|
|
--component-name="rustc" \
|
|
--compression-formats="xz,foobar"
|
|
}
|
|
runtest generate_compression_formats_error
|
|
|
|
combine_compression_formats_one() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
|
|
--compression-formats=xz
|
|
|
|
try test ! -e "${OUT_DIR}/rust.tar.gz"
|
|
try test -e "${OUT_DIR}/rust.tar.xz"
|
|
}
|
|
runtest combine_compression_formats_one
|
|
|
|
combine_compression_formats_multiple() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
try sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
|
|
--compression-formats=xz,gz
|
|
|
|
try test -e "${OUT_DIR}/rust.tar.gz"
|
|
try test -e "${OUT_DIR}/rust.tar.xz"
|
|
}
|
|
runtest combine_compression_formats_multiple
|
|
|
|
combine_compression_formats_error() {
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image1" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rustc \
|
|
--component-name=rustc
|
|
try sh "$S/gen-installer.sh" \
|
|
--image-dir="$TEST_DIR/image3" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=cargo \
|
|
--component-name=cargo
|
|
expect_fail sh "$S/combine-installers.sh" \
|
|
--work-dir="$WORK_DIR" \
|
|
--output-dir="$OUT_DIR" \
|
|
--package-name=rust \
|
|
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
|
|
--compression-formats=xz,foobar
|
|
}
|
|
runtest combine_compression_formats_error
|
|
|
|
tarball_compression_formats_one() {
|
|
try cp -r "${TEST_DIR}/image1" "${WORK_DIR}/image"
|
|
try sh "$S/make-tarballs.sh" \
|
|
--input="${WORK_DIR}/image" \
|
|
--work-dir="${WORK_DIR}" \
|
|
--output="${OUT_DIR}/rustc" \
|
|
--compression-formats="xz"
|
|
|
|
try test ! -e "${OUT_DIR}/rustc.tar.gz"
|
|
try test -e "${OUT_DIR}/rustc.tar.xz"
|
|
}
|
|
runtest tarball_compression_formats_one
|
|
|
|
tarball_compression_formats_multiple() {
|
|
try cp -r "${TEST_DIR}/image1" "${WORK_DIR}/image"
|
|
try sh "$S/make-tarballs.sh" \
|
|
--input="${WORK_DIR}/image" \
|
|
--work-dir="${WORK_DIR}" \
|
|
--output="${OUT_DIR}/rustc" \
|
|
--compression-formats="xz,gz"
|
|
|
|
try test -e "${OUT_DIR}/rustc.tar.gz"
|
|
try test -e "${OUT_DIR}/rustc.tar.xz"
|
|
}
|
|
runtest tarball_compression_formats_multiple
|
|
|
|
tarball_compression_formats_error() {
|
|
try cp -r "${TEST_DIR}/image1" "${WORK_DIR}/image"
|
|
expect_fail sh "$S/make-tarballs.sh" \
|
|
--input="${WORK_DIR}/image" \
|
|
--work-dir="${WORK_DIR}" \
|
|
--output="${OUT_DIR}/rustc" \
|
|
--compression-formats="xz,foobar"
|
|
}
|
|
runtest tarball_compression_formats_error
|
|
|
|
echo
|
|
echo "TOTAL SUCCESS!"
|
|
echo
|