#!/bin/sh set -e -u S="$(cd $(dirname $0) && pwd)" TEST_DIR="$S/test" TMP_DIR="$S/tmp" 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 /bin/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 /bin/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 /bin/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 /bin/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 /bin/echo "$_output" echo echo "TEST FAILED!" echo exit 1 elif ! echo "$_output" | grep -q "$_expected"; then echo \$ "$_cmd" /bin/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 /bin/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 /bin/echo "$_output" echo echo "TEST FAILED!" echo exit 1 elif ! echo "$_output" | grep -q "$_expected"; then echo \$ "$_cmd" /bin/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 /bin/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 /bin/echo "$_output" echo echo "TEST FAILED!" echo exit 1 elif echo "$_output" | grep -q "$_expected"; then echo \$ "$_cmd" /bin/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 /bin/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" } 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 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 # Upgrade tests upgrade_from_v1() { mkdir "$WORK_DIR/v1" try sh "$S/test/rust-installer-v1/gen-installer.sh" \ --image-dir="$TEST_DIR/image2" \ --work-dir="$WORK_DIR/v1" \ --output-dir="$OUT_DIR/v1" \ --verify-bin=oldprogram \ --rel-manifest-dir=packagelib try sh "$S/gen-installer.sh" \ --image-dir="$TEST_DIR/image1" \ --work-dir="$WORK_DIR" \ --output-dir="$OUT_DIR" \ --rel-manifest-dir=packagelib \ --legacy-manifest-dirs=packagelib try "$WORK_DIR/v1/package/install.sh" --prefix="$PREFIX_DIR" try test -e "$PREFIX_DIR/something-to-install" try test -e "$PREFIX_DIR/dir-to-install/bar" try test -e "$PREFIX_DIR/bin/oldprogram" try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" try test ! -e "$PREFIX_DIR/dir-to-install/bar" try test ! -e "$PREFIX_DIR/bin/oldprogram" 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 --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 upgrade_from_v1 upgrade_from_v1_with_multiple_legacy_manifests() { mkdir "$WORK_DIR/v1" try sh "$S/test/rust-installer-v1/gen-installer.sh" \ --image-dir="$TEST_DIR/image2" \ --work-dir="$WORK_DIR/v1" \ --output-dir="$OUT_DIR/v1" \ --verify-bin=oldprogram \ --rel-manifest-dir=rustlib try sh "$S/test/rust-installer-v1/gen-installer.sh" \ --image-dir="$TEST_DIR/image3" \ --work-dir="$WORK_DIR/v1b" \ --output-dir="$OUT_DIR/v1b" \ --verify-bin=cargo \ --rel-manifest-dir=cargo try sh "$S/gen-installer.sh" \ --image-dir="$TEST_DIR/image1" \ --work-dir="$WORK_DIR" \ --output-dir="$OUT_DIR" \ --rel-manifest-dir=packagelib \ --legacy-manifest-dirs=rustlib,cargo try "$WORK_DIR/v1/package/install.sh" --prefix="$PREFIX_DIR" try "$WORK_DIR/v1b/package/install.sh" --prefix="$PREFIX_DIR" try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" try test ! -e "$PREFIX_DIR/dir-to-install/bar" try test ! -e "$PREFIX_DIR/bin/oldprogram" try test ! -e "$PREFIX_DIR/bin/cargo" try test ! -e "$PREFIX_DIR/lib/cargo" 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 --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 upgrade_from_v1_with_multiple_legacy_manifests upgrade_from_v1_combined() { 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 \ --legacy-manifest-dirs=cargo,rustlib try sh "$S/test/rust-installer-v1/gen-installer.sh" \ --image-dir="$TEST_DIR/image2" \ --work-dir="$WORK_DIR/v1" \ --output-dir="$OUT_DIR/v1" \ --verify-bin=oldprogram \ --rel-manifest-dir=rustlib try sh "$S/test/rust-installer-v1/gen-installer.sh" \ --image-dir="$TEST_DIR/image3" \ --work-dir="$WORK_DIR/v1b" \ --output-dir="$OUT_DIR/v1b" \ --verify-bin=cargo \ --rel-manifest-dir=cargo try "$WORK_DIR/v1/package//install.sh" --prefix="$PREFIX_DIR" try "$WORK_DIR/v1b/package//install.sh" --prefix="$PREFIX_DIR" try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" try test ! -e "$PREFIX_DIR/dir-to-install/bar" try test ! -e "$PREFIX_DIR/bin/oldprogram" try test ! -e "$PREFIX_DIR/lib/cargo" 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/rustlib" 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/rustlib" } runtest upgrade_from_v1_combined upgrade_from_v2() { mkdir "$WORK_DIR/v2" try sh "$S/test/rust-installer-v2/gen-installer.sh" \ --image-dir="$TEST_DIR/image2" \ --work-dir="$WORK_DIR/v2" \ --output-dir="$OUT_DIR/v2" \ --verify-bin=oldprogram \ --rel-manifest-dir=packagelib try sh "$S/gen-installer.sh" \ --image-dir="$TEST_DIR/image1" \ --work-dir="$WORK_DIR" \ --output-dir="$OUT_DIR" \ --rel-manifest-dir=packagelib \ --legacy-manifest-dirs=packagelib try "$WORK_DIR/v2/package/install.sh" --prefix="$PREFIX_DIR" try test -e "$PREFIX_DIR/something-to-install" try test -e "$PREFIX_DIR/dir-to-install/bar" try test -e "$PREFIX_DIR/bin/oldprogram" try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" try test ! -e "$PREFIX_DIR/dir-to-install/bar" try test ! -e "$PREFIX_DIR/bin/oldprogram" 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 --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 upgrade_from_v2 upgrade_from_v2_with_multiple_components() { mkdir "$WORK_DIR/v2" try sh "$S/test/rust-installer-v2/gen-installer.sh" \ --image-dir="$TEST_DIR/image2" \ --work-dir="$WORK_DIR/v2" \ --output-dir="$OUT_DIR/v2" \ --verify-bin=oldprogram \ --component-name=oldcomponent \ --rel-manifest-dir=rustlib try sh "$S/test/rust-installer-v2/gen-installer.sh" \ --image-dir="$TEST_DIR/image3" \ --work-dir="$WORK_DIR/v2b" \ --output-dir="$OUT_DIR/v2b" \ --verify-bin=cargo \ --component-name=samecomponent \ --rel-manifest-dir=rustlib try sh "$S/gen-installer.sh" \ --image-dir="$TEST_DIR/image1" \ --work-dir="$WORK_DIR" \ --output-dir="$OUT_DIR" \ --component-name=samecomponent \ --rel-manifest-dir=rustlib try "$WORK_DIR/v2/package/install.sh" --prefix="$PREFIX_DIR" try "$WORK_DIR/v2b/package/install.sh" --prefix="$PREFIX_DIR" try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" # oldcomponent remains try test -e "$PREFIX_DIR/dir-to-install/bar" try test -e "$PREFIX_DIR/bin/oldprogram" # Old version of samecomponent is gone try test ! -e "$PREFIX_DIR/bin/cargo" # New stuff was installed 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 --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" # rustlib is still around because oldcomponent is still installed try test -e "$PREFIX_DIR/lib/rustlib" try test -e "$PREFIX_DIR/lib/rustlib/manifest-oldcomponent" } runtest upgrade_from_v2_with_multiple_components upgrade_from_v2_combined() { try sh "$S/test/rust-installer-v2/gen-installer.sh" \ --image-dir="$TEST_DIR/image1" \ --work-dir="$WORK_DIR/v2" \ --output-dir="$OUT_DIR" \ --package-name=rustc \ --component-name=rustc \ --rel-manifest-dir=rustlib try sh "$S/test/rust-installer-v2/gen-installer.sh" \ --image-dir="$TEST_DIR/image4" \ --work-dir="$WORK_DIR/v2" \ --output-dir="$OUT_DIR" \ --verify-bin=oldprogram \ --package-name=cargo \ --component-name=cargo \ --rel-manifest-dir=rustlib try sh "$S/test/rust-installer-v2/combine-installers.sh" \ --work-dir="$WORK_DIR/v2" \ --output-dir="$OUT_DIR" \ --package-name=rust \ --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ --rel-manifest-dir=rustlib 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/v2/rust/install.sh" --prefix="$PREFIX_DIR" try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" # image4 was removed in the cargo upgrade try test ! -e "$PREFIX_DIR/baz" try test ! -e "$PREFIX_DIR/dir-to-install/qux/bar" 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/rustlib" 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/rustlib" } runtest upgrade_from_v2_combined # TODO upgrade_from_v2_with_bulk_dirs # 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 # TODO: mandir/libdir/bindir, etc. echo echo "TOTAL SUCCESS!" echo