blob: 16b05c66197c8e0c5df708132569a0a325bf8d21 [file] [log] [blame]
#!/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
# rustbuild 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