1#!/bin/bash 2 3set -e -u 4 5if [ -x /bin/echo ]; then 6 ECHO='/bin/echo' 7else 8 ECHO='echo' 9fi 10 11# Prints the absolute path of a directory to stdout 12abs_path() { 13 local path="$1" 14 # Unset CDPATH because it causes havok: it makes the destination unpredictable 15 # and triggers 'cd' to print the path to stdout. Route `cd`'s output to /dev/null 16 # for good measure. 17 (unset CDPATH && cd "$path" > /dev/null && pwd) 18} 19 20S="$(abs_path $(dirname $0))" 21 22TEST_DIR="$S/test" 23WORK_DIR="$TMP_DIR/workdir" 24OUT_DIR="$TMP_DIR/outdir" 25PREFIX_DIR="$TMP_DIR/prefix" 26 27case $(uname -s) in 28 29 MINGW* | MSYS*) 30 WINDOWS=1 31 ;; 32esac 33 34say() { 35 echo "test: $1" 36} 37 38pre() { 39 echo "test: $1" 40 rm -Rf "$WORK_DIR" 41 rm -Rf "$OUT_DIR" 42 rm -Rf "$PREFIX_DIR" 43 mkdir -p "$WORK_DIR" 44 mkdir -p "$OUT_DIR" 45 mkdir -p "$PREFIX_DIR" 46} 47 48need_ok() { 49 if [ $? -ne 0 ] 50 then 51 echo 52 echo "TEST FAILED!" 53 echo 54 exit 1 55 fi 56} 57 58fail() { 59 echo 60 echo "$1" 61 echo 62 echo "TEST FAILED!" 63 echo 64 exit 1 65} 66 67try() { 68 set +e 69 _cmd="$@" 70 _output=`$@ 2>&1` 71 if [ $? -ne 0 ]; then 72 echo \$ "$_cmd" 73 # Using /bin/echo to avoid escaping 74 $ECHO "$_output" 75 echo 76 echo "TEST FAILED!" 77 echo 78 exit 1 79 else 80 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then 81 echo \$ "$_cmd" 82 fi 83 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then 84 $ECHO "$_output" 85 fi 86 fi 87 set -e 88} 89 90expect_fail() { 91 set +e 92 _cmd="$@" 93 _output=`$@ 2>&1` 94 if [ $? -eq 0 ]; then 95 echo \$ "$_cmd" 96 # Using /bin/echo to avoid escaping 97 $ECHO "$_output" 98 echo 99 echo "TEST FAILED!" 100 echo 101 exit 1 102 else 103 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then 104 echo \$ "$_cmd" 105 fi 106 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then 107 $ECHO "$_output" 108 fi 109 fi 110 set -e 111} 112 113expect_output_ok() { 114 set +e 115 local _expected="$1" 116 shift 1 117 _cmd="$@" 118 _output=`$@ 2>&1` 119 if [ $? -ne 0 ]; then 120 echo \$ "$_cmd" 121 # Using /bin/echo to avoid escaping 122 $ECHO "$_output" 123 echo 124 echo "TEST FAILED!" 125 echo 126 exit 1 127 elif ! echo "$_output" | grep -q "$_expected"; then 128 echo \$ "$_cmd" 129 $ECHO "$_output" 130 echo 131 echo "missing expected output '$_expected'" 132 echo 133 echo 134 echo "TEST FAILED!" 135 echo 136 exit 1 137 else 138 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then 139 echo \$ "$_cmd" 140 fi 141 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then 142 $ECHO "$_output" 143 fi 144 fi 145 set -e 146} 147 148expect_output_fail() { 149 set +e 150 local _expected="$1" 151 shift 1 152 _cmd="$@" 153 _output=`$@ 2>&1` 154 if [ $? -eq 0 ]; then 155 echo \$ "$_cmd" 156 # Using /bin/echo to avoid escaping 157 $ECHO "$_output" 158 echo 159 echo "TEST FAILED!" 160 echo 161 exit 1 162 elif ! echo "$_output" | grep -q "$_expected"; then 163 echo \$ "$_cmd" 164 $ECHO "$_output" 165 echo 166 echo "missing expected output '$_expected'" 167 echo 168 echo 169 echo "TEST FAILED!" 170 echo 171 exit 1 172 else 173 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then 174 echo \$ "$_cmd" 175 fi 176 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then 177 $ECHO "$_output" 178 fi 179 fi 180 set -e 181} 182 183expect_not_output_ok() { 184 set +e 185 local _expected="$1" 186 shift 1 187 _cmd="$@" 188 _output=`$@ 2>&1` 189 if [ $? -ne 0 ]; then 190 echo \$ "$_cmd" 191 # Using /bin/echo to avoid escaping 192 $ECHO "$_output" 193 echo 194 echo "TEST FAILED!" 195 echo 196 exit 1 197 elif echo "$_output" | grep -q "$_expected"; then 198 echo \$ "$_cmd" 199 $ECHO "$_output" 200 echo 201 echo "unexpected output '$_expected'" 202 echo 203 echo 204 echo "TEST FAILED!" 205 echo 206 exit 1 207 else 208 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then 209 echo \$ "$_cmd" 210 fi 211 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then 212 $ECHO "$_output" 213 fi 214 fi 215 set -e 216} 217 218runtest() { 219 local _testname="$1" 220 if [ -n "${TESTNAME-}" ]; then 221 if ! echo "$_testname" | grep -q "$TESTNAME"; then 222 return 0 223 fi 224 fi 225 226 pre "$_testname" 227 "$_testname" 228} 229 230# Installation tests 231 232basic_install() { 233 try sh "$S/gen-installer.sh" \ 234 --image-dir="$TEST_DIR/image1" \ 235 --work-dir="$WORK_DIR" \ 236 --output-dir="$OUT_DIR" 237 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 238 try test -e "$PREFIX_DIR/something-to-install" 239 try test -e "$PREFIX_DIR/dir-to-install/foo" 240 try test -e "$PREFIX_DIR/bin/program" 241 try test -e "$PREFIX_DIR/bin/program2" 242 try test -e "$PREFIX_DIR/bin/bad-bin" 243} 244runtest basic_install 245 246basic_uninstall() { 247 try sh "$S/gen-installer.sh" \ 248 --image-dir="$TEST_DIR/image1" \ 249 --work-dir="$WORK_DIR" \ 250 --output-dir="$OUT_DIR" 251 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 252 try "$WORK_DIR/package/install.sh --uninstall" --prefix="$PREFIX_DIR" 253 try test ! -e "$PREFIX_DIR/something-to-install" 254 try test ! -e "$PREFIX_DIR/dir-to-install/foo" 255 try test ! -e "$PREFIX_DIR/bin/program" 256 try test ! -e "$PREFIX_DIR/bin/program2" 257 try test ! -e "$PREFIX_DIR/bin/bad-bin" 258 try test ! -e "$PREFIX_DIR/lib/packagelib" 259} 260runtest basic_uninstall 261 262not_installed_files() { 263 mkdir -p "$WORK_DIR/overlay" 264 touch "$WORK_DIR/overlay/not-installed" 265 try sh "$S/gen-installer.sh" \ 266 --image-dir="$TEST_DIR/image1" \ 267 --work-dir="$WORK_DIR" \ 268 --output-dir="$OUT_DIR" \ 269 --non-installed-overlay="$WORK_DIR/overlay" 270 try test -e "$WORK_DIR/package/not-installed" 271 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 272 try test ! -e "$PREFIX_DIR/not-installed" 273} 274runtest not_installed_files 275 276tarball_with_package_name() { 277 try sh "$S/gen-installer.sh" \ 278 --image-dir="$TEST_DIR/image1" \ 279 --work-dir="$WORK_DIR" \ 280 --output-dir="$OUT_DIR" \ 281 --package-name=rustc-nightly 282 try "$WORK_DIR/rustc-nightly/install.sh" --prefix="$PREFIX_DIR" 283 try test -e "$OUT_DIR/rustc-nightly.tar.gz" 284 try test -e "$OUT_DIR/rustc-nightly.tar.xz" 285} 286runtest tarball_with_package_name 287 288install_overwrite_backup() { 289 try sh "$S/gen-installer.sh" \ 290 --image-dir="$TEST_DIR/image1" \ 291 --work-dir="$WORK_DIR" \ 292 --output-dir="$OUT_DIR" 293 try mkdir -p "$PREFIX_DIR/bin" 294 touch "$PREFIX_DIR/bin/program" 295 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 296 # The existing program was backed up by 'install' 297 try test -e "$PREFIX_DIR/bin/program.old" 298} 299runtest install_overwrite_backup 300 301bulk_directory() { 302 try sh "$S/gen-installer.sh" \ 303 --image-dir="$TEST_DIR/image1" \ 304 --work-dir="$WORK_DIR" \ 305 --output-dir="$OUT_DIR" \ 306 --bulk-dirs=dir-to-install 307 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 308 try test -e "$PREFIX_DIR/something-to-install" 309 try test -e "$PREFIX_DIR/dir-to-install/foo" 310 try test -e "$PREFIX_DIR/bin/program" 311 try test -e "$PREFIX_DIR/bin/program2" 312 try test -e "$PREFIX_DIR/bin/bad-bin" 313 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall 314 try test ! -e "$PREFIX_DIR/dir-to-install" 315} 316runtest bulk_directory 317 318bulk_directory_overwrite() { 319 try sh "$S/gen-installer.sh" \ 320 --image-dir="$TEST_DIR/image1" \ 321 --work-dir="$WORK_DIR" \ 322 --output-dir="$OUT_DIR" \ 323 --bulk-dirs=dir-to-install 324 try mkdir -p "$PREFIX_DIR/dir-to-install" 325 try touch "$PREFIX_DIR/dir-to-install/overwrite" 326 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 327 # The file that used to exist in the directory no longer does 328 try test ! -e "$PREFIX_DIR/dir-to-install/overwrite" 329 # It was backed up 330 try test -e "$PREFIX_DIR/dir-to-install.old/overwrite" 331} 332runtest bulk_directory_overwrite 333 334bulk_directory_overwrite_existing_backup() { 335 try sh "$S/gen-installer.sh" \ 336 --image-dir="$TEST_DIR/image1" \ 337 --work-dir="$WORK_DIR" \ 338 --output-dir="$OUT_DIR" \ 339 --bulk-dirs=dir-to-install 340 try mkdir -p "$PREFIX_DIR/dir-to-install" 341 try touch "$PREFIX_DIR/dir-to-install/overwrite" 342 # This time we've already got an existing backup of the overwritten directory. 343 # The install should still succeed. 344 try mkdir -p "$PREFIX_DIR/dir-to-install~" 345 try touch "$PREFIX_DIR/dir-to-install~/overwrite" 346 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 347 try test ! -e "$PREFIX_DIR/dir-to-install/overwrite" 348 try test -e "$PREFIX_DIR/dir-to-install~/overwrite" 349} 350runtest bulk_directory_overwrite_existing_backup 351 352nested_bulk_directory() { 353 try sh "$S/gen-installer.sh" \ 354 --image-dir="$TEST_DIR/image4" \ 355 --work-dir="$WORK_DIR" \ 356 --output-dir="$OUT_DIR" \ 357 --bulk-dirs=dir-to-install/qux 358 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 359 try test -e "$PREFIX_DIR/dir-to-install/qux/bar" 360 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall 361 try test ! -e "$PREFIX_DIR/dir-to-install/qux" 362} 363runtest nested_bulk_directory 364 365only_bulk_directory_no_files() { 366 try sh "$S/gen-installer.sh" \ 367 --image-dir="$TEST_DIR/image5" \ 368 --work-dir="$WORK_DIR" \ 369 --output-dir="$OUT_DIR" \ 370 --bulk-dirs=dir-to-install 371 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 372 try test -e "$PREFIX_DIR/dir-to-install/foo" 373 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall 374 try test ! -e "$PREFIX_DIR/dir-to-install/foo" 375} 376runtest only_bulk_directory_no_files 377 378nested_not_installed_files() { 379 mkdir -p "$WORK_DIR/overlay" 380 touch "$WORK_DIR/overlay/not-installed" 381 try sh "$S/gen-installer.sh" \ 382 --image-dir="$TEST_DIR/image4" \ 383 --work-dir="$WORK_DIR" \ 384 --output-dir="$OUT_DIR" \ 385 --non-installed-overlay="$WORK_DIR/overlay" 386 try test -e "$WORK_DIR/package/not-installed" 387 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 388 try test ! -e "$PREFIX_DIR/not-installed" 389} 390runtest nested_not_installed_files 391 392multiple_components() { 393 try sh "$S/gen-installer.sh" \ 394 --image-dir="$TEST_DIR/image1" \ 395 --work-dir="$WORK_DIR/c1" \ 396 --output-dir="$OUT_DIR/c1" \ 397 --component-name=rustc 398 try sh "$S/gen-installer.sh" \ 399 --image-dir="$TEST_DIR/image3" \ 400 --work-dir="$WORK_DIR/c2" \ 401 --output-dir="$OUT_DIR/c2" \ 402 --component-name=cargo 403 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR" 404 try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR" 405 try test -e "$PREFIX_DIR/something-to-install" 406 try test -e "$PREFIX_DIR/dir-to-install/foo" 407 try test -e "$PREFIX_DIR/bin/program" 408 try test -e "$PREFIX_DIR/bin/program2" 409 try test -e "$PREFIX_DIR/bin/bad-bin" 410 try test -e "$PREFIX_DIR/bin/cargo" 411 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR" --uninstall 412 try test ! -e "$PREFIX_DIR/something-to-install" 413 try test ! -e "$PREFIX_DIR/dir-to-install/foo" 414 try test ! -e "$PREFIX_DIR/bin/program" 415 try test ! -e "$PREFIX_DIR/bin/program2" 416 try test ! -e "$PREFIX_DIR/bin/bad-bin" 417 try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR" --uninstall 418 try test ! -e "$PREFIX_DIR/bin/cargo" 419 try test ! -e "$PREFIX_DIR/lib/packagelib" 420} 421runtest multiple_components 422 423uninstall_from_installed_script() { 424 try sh "$S/gen-installer.sh" \ 425 --image-dir="$TEST_DIR/image1" \ 426 --work-dir="$WORK_DIR/c1" \ 427 --output-dir="$OUT_DIR/c1" \ 428 --component-name=rustc 429 try sh "$S/gen-installer.sh" \ 430 --image-dir="$TEST_DIR/image3" \ 431 --work-dir="$WORK_DIR/c2" \ 432 --output-dir="$OUT_DIR/c2" \ 433 --component-name=cargo 434 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR" 435 try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR" 436 try test -e "$PREFIX_DIR/something-to-install" 437 try test -e "$PREFIX_DIR/dir-to-install/foo" 438 try test -e "$PREFIX_DIR/bin/program" 439 try test -e "$PREFIX_DIR/bin/program2" 440 try test -e "$PREFIX_DIR/bin/bad-bin" 441 try test -e "$PREFIX_DIR/bin/cargo" 442 # All components should be uninstalled by this script 443 try sh "$PREFIX_DIR/lib/packagelib/uninstall.sh" 444 try test ! -e "$PREFIX_DIR/something-to-install" 445 try test ! -e "$PREFIX_DIR/dir-to-install/foo" 446 try test ! -e "$PREFIX_DIR/bin/program" 447 try test ! -e "$PREFIX_DIR/bin/program2" 448 try test ! -e "$PREFIX_DIR/bin/bad-bin" 449 try test ! -e "$PREFIX_DIR/bin/cargo" 450 try test ! -e "$PREFIX_DIR/lib/packagelib" 451} 452runtest uninstall_from_installed_script 453 454uninstall_from_installed_script_with_args_fails() { 455 try sh "$S/gen-installer.sh" \ 456 --image-dir="$TEST_DIR/image1" \ 457 --work-dir="$WORK_DIR/c1" \ 458 --output-dir="$OUT_DIR/c1" \ 459 --component-name=rustc 460 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR" 461 expect_output_fail "uninstall.sh does not take any arguments" \ 462 sh "$PREFIX_DIR/lib/packagelib/uninstall.sh" --prefix=foo 463} 464runtest uninstall_from_installed_script_with_args_fails 465 466# Combined installer tests 467 468combine_installers() { 469 try sh "$S/gen-installer.sh" \ 470 --image-dir="$TEST_DIR/image1" \ 471 --work-dir="$WORK_DIR" \ 472 --output-dir="$OUT_DIR" \ 473 --package-name=rustc \ 474 --component-name=rustc 475 try sh "$S/gen-installer.sh" \ 476 --image-dir="$TEST_DIR/image3" \ 477 --work-dir="$WORK_DIR" \ 478 --output-dir="$OUT_DIR" \ 479 --package-name=cargo \ 480 --component-name=cargo 481 try sh "$S/combine-installers.sh" \ 482 --work-dir="$WORK_DIR" \ 483 --output-dir="$OUT_DIR" \ 484 --package-name=rust \ 485 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" 486 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 487 try test -e "$PREFIX_DIR/something-to-install" 488 try test -e "$PREFIX_DIR/dir-to-install/foo" 489 try test -e "$PREFIX_DIR/bin/program" 490 try test -e "$PREFIX_DIR/bin/program2" 491 try test -e "$PREFIX_DIR/bin/bad-bin" 492 try test -e "$PREFIX_DIR/bin/cargo" 493 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 494 try test ! -e "$PREFIX_DIR/something-to-install" 495 try test ! -e "$PREFIX_DIR/dir-to-install/foo" 496 try test ! -e "$PREFIX_DIR/bin/program" 497 try test ! -e "$PREFIX_DIR/bin/program2" 498 try test ! -e "$PREFIX_DIR/bin/bad-bin" 499 try test ! -e "$PREFIX_DIR/bin/cargo" 500 try test ! -e "$PREFIX_DIR/lib/packagelib" 501} 502runtest combine_installers 503 504combine_three_installers() { 505 try sh "$S/gen-installer.sh" \ 506 --image-dir="$TEST_DIR/image1" \ 507 --work-dir="$WORK_DIR" \ 508 --output-dir="$OUT_DIR" \ 509 --package-name=rustc \ 510 --component-name=rustc 511 try sh "$S/gen-installer.sh" \ 512 --image-dir="$TEST_DIR/image3" \ 513 --work-dir="$WORK_DIR" \ 514 --output-dir="$OUT_DIR" \ 515 --package-name=cargo \ 516 --component-name=cargo 517 try sh "$S/gen-installer.sh" \ 518 --image-dir="$TEST_DIR/image4" \ 519 --work-dir="$WORK_DIR" \ 520 --output-dir="$OUT_DIR" \ 521 --package-name=rust-docs \ 522 --component-name=rust-docs 523 try sh "$S/combine-installers.sh" \ 524 --work-dir="$WORK_DIR" \ 525 --output-dir="$OUT_DIR" \ 526 --package-name=rust \ 527 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 528 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 529 try test -e "$PREFIX_DIR/something-to-install" 530 try test -e "$PREFIX_DIR/dir-to-install/foo" 531 try test -e "$PREFIX_DIR/bin/program" 532 try test -e "$PREFIX_DIR/bin/program2" 533 try test -e "$PREFIX_DIR/bin/bad-bin" 534 try test -e "$PREFIX_DIR/bin/cargo" 535 try test -e "$PREFIX_DIR/dir-to-install/qux/bar" 536 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 537 try test ! -e "$PREFIX_DIR/something-to-install" 538 try test ! -e "$PREFIX_DIR/dir-to-install/foo" 539 try test ! -e "$PREFIX_DIR/bin/program" 540 try test ! -e "$PREFIX_DIR/bin/program2" 541 try test ! -e "$PREFIX_DIR/bin/bad-bin" 542 try test ! -e "$PREFIX_DIR/bin/cargo" 543 try test ! -e "$PREFIX_DIR/lib/packagelib" 544 try test ! -e "$PREFIX_DIR/dir-to-install/qux/bar" 545} 546runtest combine_three_installers 547 548combine_installers_with_overlay() { 549 try sh "$S/gen-installer.sh" \ 550 --image-dir="$TEST_DIR/image1" \ 551 --work-dir="$WORK_DIR" \ 552 --output-dir="$OUT_DIR" \ 553 --package-name=rustc \ 554 --component-name=rustc 555 try sh "$S/gen-installer.sh" \ 556 --image-dir="$TEST_DIR/image3" \ 557 --work-dir="$WORK_DIR" \ 558 --output-dir="$OUT_DIR" \ 559 --package-name=cargo \ 560 --component-name=cargo 561 mkdir -p "$WORK_DIR/overlay" 562 touch "$WORK_DIR/overlay/README" 563 try sh "$S/combine-installers.sh" \ 564 --work-dir="$WORK_DIR" \ 565 --output-dir="$OUT_DIR" \ 566 --package-name=rust \ 567 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ 568 --non-installed-overlay="$WORK_DIR/overlay" 569 try test -e "$WORK_DIR/rust/README" 570 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 571 try test ! -e "$PREFIX_DIR/README" 572} 573runtest combine_installers_with_overlay 574 575combined_with_bulk_dirs() { 576 try sh "$S/gen-installer.sh" \ 577 --image-dir="$TEST_DIR/image1" \ 578 --work-dir="$WORK_DIR" \ 579 --output-dir="$OUT_DIR" \ 580 --package-name=rustc \ 581 --component-name=rustc \ 582 --bulk-dirs=dir-to-install 583 try sh "$S/gen-installer.sh" \ 584 --image-dir="$TEST_DIR/image3" \ 585 --work-dir="$WORK_DIR" \ 586 --output-dir="$OUT_DIR" \ 587 --package-name=cargo \ 588 --component-name=cargo 589 try sh "$S/combine-installers.sh" \ 590 --work-dir="$WORK_DIR" \ 591 --output-dir="$OUT_DIR" \ 592 --package-name=rust \ 593 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" 594 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 595 try test -e "$PREFIX_DIR/dir-to-install/foo" 596 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 597 try test ! -e "$PREFIX_DIR/dir-to-install" 598} 599runtest combined_with_bulk_dirs 600 601combine_install_with_separate_uninstall() { 602 try sh "$S/gen-installer.sh" \ 603 --image-dir="$TEST_DIR/image1" \ 604 --work-dir="$WORK_DIR" \ 605 --output-dir="$OUT_DIR" \ 606 --package-name=rustc \ 607 --component-name=rustc \ 608 --rel-manifest-dir=rustlib 609 try sh "$S/gen-installer.sh" \ 610 --image-dir="$TEST_DIR/image3" \ 611 --work-dir="$WORK_DIR" \ 612 --output-dir="$OUT_DIR" \ 613 --package-name=cargo \ 614 --component-name=cargo \ 615 --rel-manifest-dir=rustlib 616 try sh "$S/combine-installers.sh" \ 617 --work-dir="$WORK_DIR" \ 618 --output-dir="$OUT_DIR" \ 619 --package-name=rust \ 620 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ 621 --rel-manifest-dir=rustlib 622 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 623 try test -e "$PREFIX_DIR/something-to-install" 624 try test -e "$PREFIX_DIR/dir-to-install/foo" 625 try test -e "$PREFIX_DIR/bin/program" 626 try test -e "$PREFIX_DIR/bin/program2" 627 try test -e "$PREFIX_DIR/bin/bad-bin" 628 try test -e "$PREFIX_DIR/bin/cargo" 629 try "$WORK_DIR/rustc/install.sh --uninstall" --prefix="$PREFIX_DIR" 630 try test ! -e "$PREFIX_DIR/something-to-install" 631 try test ! -e "$PREFIX_DIR/dir-to-install/foo" 632 try test ! -e "$PREFIX_DIR/bin/program" 633 try test ! -e "$PREFIX_DIR/bin/program2" 634 try test ! -e "$PREFIX_DIR/bin/bad-bin" 635 try "$WORK_DIR/cargo/install.sh --uninstall" --prefix="$PREFIX_DIR" 636 try test ! -e "$PREFIX_DIR/bin/cargo" 637 try test ! -e "$PREFIX_DIR/lib/packagelib" 638} 639runtest combine_install_with_separate_uninstall 640 641select_components_to_install() { 642 try sh "$S/gen-installer.sh" \ 643 --image-dir="$TEST_DIR/image1" \ 644 --work-dir="$WORK_DIR" \ 645 --output-dir="$OUT_DIR" \ 646 --package-name=rustc \ 647 --component-name=rustc 648 try sh "$S/gen-installer.sh" \ 649 --image-dir="$TEST_DIR/image3" \ 650 --work-dir="$WORK_DIR" \ 651 --output-dir="$OUT_DIR" \ 652 --package-name=cargo \ 653 --component-name=cargo 654 try sh "$S/gen-installer.sh" \ 655 --image-dir="$TEST_DIR/image4" \ 656 --work-dir="$WORK_DIR" \ 657 --output-dir="$OUT_DIR" \ 658 --package-name=rust-docs \ 659 --component-name=rust-docs 660 try sh "$S/combine-installers.sh" \ 661 --work-dir="$WORK_DIR" \ 662 --output-dir="$OUT_DIR" \ 663 --package-name=rust \ 664 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 665 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rustc 666 try test -e "$PREFIX_DIR/bin/program" 667 try test ! -e "$PREFIX_DIR/bin/cargo" 668 try test ! -e "$PREFIX_DIR/baz" 669 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 670 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=cargo 671 try test ! -e "$PREFIX_DIR/bin/program" 672 try test -e "$PREFIX_DIR/bin/cargo" 673 try test ! -e "$PREFIX_DIR/baz" 674 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 675 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rust-docs 676 try test ! -e "$PREFIX_DIR/bin/program" 677 try test ! -e "$PREFIX_DIR/bin/cargo" 678 try test -e "$PREFIX_DIR/baz" 679 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 680 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rustc,cargo 681 try test -e "$PREFIX_DIR/bin/program" 682 try test -e "$PREFIX_DIR/bin/cargo" 683 try test ! -e "$PREFIX_DIR/baz" 684 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" \ 685 --components=rustc,cargo,rust-docs 686 try test ! -e "$PREFIX_DIR/bin/program" 687 try test ! -e "$PREFIX_DIR/bin/cargo" 688 try test ! -e "$PREFIX_DIR/baz" 689 try test ! -e "$PREFIX_DIR/lib/packagelib" 690} 691runtest select_components_to_install 692 693select_components_to_uninstall() { 694 try sh "$S/gen-installer.sh" \ 695 --image-dir="$TEST_DIR/image1" \ 696 --work-dir="$WORK_DIR" \ 697 --output-dir="$OUT_DIR" \ 698 --package-name=rustc \ 699 --component-name=rustc 700 try sh "$S/gen-installer.sh" \ 701 --image-dir="$TEST_DIR/image3" \ 702 --work-dir="$WORK_DIR" \ 703 --output-dir="$OUT_DIR" \ 704 --package-name=cargo \ 705 --component-name=cargo 706 try sh "$S/gen-installer.sh" \ 707 --image-dir="$TEST_DIR/image4" \ 708 --work-dir="$WORK_DIR" \ 709 --output-dir="$OUT_DIR" \ 710 --package-name=rust-docs \ 711 --component-name=rust-docs 712 try sh "$S/combine-installers.sh" \ 713 --work-dir="$WORK_DIR" \ 714 --output-dir="$OUT_DIR" \ 715 --package-name=rust \ 716 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 717 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 718 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc 719 try test ! -e "$PREFIX_DIR/bin/program" 720 try test -e "$PREFIX_DIR/bin/cargo" 721 try test -e "$PREFIX_DIR/baz" 722 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 723 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=cargo 724 try test -e "$PREFIX_DIR/bin/program" 725 try test ! -e "$PREFIX_DIR/bin/cargo" 726 try test -e "$PREFIX_DIR/baz" 727 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 728 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rust-docs 729 try test -e "$PREFIX_DIR/bin/program" 730 try test -e "$PREFIX_DIR/bin/cargo" 731 try test ! -e "$PREFIX_DIR/baz" 732 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 733 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc,cargo 734 try test ! -e "$PREFIX_DIR/bin/program" 735 try test ! -e "$PREFIX_DIR/bin/cargo" 736 try test -e "$PREFIX_DIR/baz" 737 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 738 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" \ 739 --components=rustc,cargo,rust-docs 740 try test ! -e "$PREFIX_DIR/bin/program" 741 try test ! -e "$PREFIX_DIR/bin/cargo" 742 try test ! -e "$PREFIX_DIR/baz" 743 try test ! -e "$PREFIX_DIR/lib/packagelib" 744} 745runtest select_components_to_uninstall 746 747invalid_component() { 748 try sh "$S/gen-installer.sh" \ 749 --image-dir="$TEST_DIR/image1" \ 750 --work-dir="$WORK_DIR" \ 751 --output-dir="$OUT_DIR" \ 752 --package-name=rustc \ 753 --component-name=rustc 754 try sh "$S/gen-installer.sh" \ 755 --image-dir="$TEST_DIR/image3" \ 756 --work-dir="$WORK_DIR" \ 757 --output-dir="$OUT_DIR" \ 758 --package-name=cargo \ 759 --component-name=cargo 760 try sh "$S/gen-installer.sh" \ 761 --image-dir="$TEST_DIR/image4" \ 762 --work-dir="$WORK_DIR" \ 763 --output-dir="$OUT_DIR" \ 764 --package-name=rust-docs \ 765 --component-name=rust-docs 766 try sh "$S/combine-installers.sh" \ 767 --work-dir="$WORK_DIR" \ 768 --output-dir="$OUT_DIR" \ 769 --package-name=rust \ 770 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 771 expect_output_fail "unknown component" "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" \ 772 --components=foo 773} 774runtest invalid_component 775 776without_components() { 777 try sh "$S/gen-installer.sh" \ 778 --image-dir="$TEST_DIR/image1" \ 779 --work-dir="$WORK_DIR" \ 780 --output-dir="$OUT_DIR" \ 781 --package-name=rustc \ 782 --component-name=rustc 783 try sh "$S/gen-installer.sh" \ 784 --image-dir="$TEST_DIR/image3" \ 785 --work-dir="$WORK_DIR" \ 786 --output-dir="$OUT_DIR" \ 787 --package-name=cargo \ 788 --component-name=cargo 789 try sh "$S/gen-installer.sh" \ 790 --image-dir="$TEST_DIR/image4" \ 791 --work-dir="$WORK_DIR" \ 792 --output-dir="$OUT_DIR" \ 793 --package-name=rust-docs \ 794 --component-name=rust-docs 795 try sh "$S/combine-installers.sh" \ 796 --work-dir="$WORK_DIR" \ 797 --output-dir="$OUT_DIR" \ 798 --package-name=rust \ 799 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 800 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs 801 try test -e "$PREFIX_DIR/bin/program" 802 try test -e "$PREFIX_DIR/bin/cargo" 803 try test ! -e "$PREFIX_DIR/baz" 804 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 805 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,cargo 806 try test -e "$PREFIX_DIR/bin/program" 807 try test ! -e "$PREFIX_DIR/bin/cargo" 808 try test ! -e "$PREFIX_DIR/baz" 809 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 810 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,rustc 811 try test ! -e "$PREFIX_DIR/bin/program" 812 try test -e "$PREFIX_DIR/bin/cargo" 813 try test ! -e "$PREFIX_DIR/baz" 814 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" 815} 816runtest without_components 817 818# --uninstall --without is kind of weird, 819# --without causes components to remain installed 820uninstall_without_components() { 821 try sh "$S/gen-installer.sh" \ 822 --image-dir="$TEST_DIR/image1" \ 823 --work-dir="$WORK_DIR" \ 824 --output-dir="$OUT_DIR" \ 825 --package-name=rustc \ 826 --component-name=rustc 827 try sh "$S/gen-installer.sh" \ 828 --image-dir="$TEST_DIR/image3" \ 829 --work-dir="$WORK_DIR" \ 830 --output-dir="$OUT_DIR" \ 831 --package-name=cargo \ 832 --component-name=cargo 833 try sh "$S/gen-installer.sh" \ 834 --image-dir="$TEST_DIR/image4" \ 835 --work-dir="$WORK_DIR" \ 836 --output-dir="$OUT_DIR" \ 837 --package-name=rust-docs \ 838 --component-name=rust-docs 839 try sh "$S/combine-installers.sh" \ 840 --work-dir="$WORK_DIR" \ 841 --output-dir="$OUT_DIR" \ 842 --package-name=rust \ 843 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 844 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 845 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs 846 try test ! -e "$PREFIX_DIR/bin/program" 847 try test ! -e "$PREFIX_DIR/bin/cargo" 848 try test -e "$PREFIX_DIR/baz" 849 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 850 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs,cargo 851 try test ! -e "$PREFIX_DIR/bin/program" 852 try test -e "$PREFIX_DIR/bin/cargo" 853 try test -e "$PREFIX_DIR/baz" 854 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 855 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs,rustc 856 try test -e "$PREFIX_DIR/bin/program" 857 try test ! -e "$PREFIX_DIR/bin/cargo" 858 try test -e "$PREFIX_DIR/baz" 859} 860runtest uninstall_without_components 861 862without_any_components() { 863 try sh "$S/gen-installer.sh" \ 864 --image-dir="$TEST_DIR/image1" \ 865 --work-dir="$WORK_DIR" \ 866 --output-dir="$OUT_DIR" \ 867 --package-name=rustc \ 868 --component-name=rustc 869 try sh "$S/gen-installer.sh" \ 870 --image-dir="$TEST_DIR/image3" \ 871 --work-dir="$WORK_DIR" \ 872 --output-dir="$OUT_DIR" \ 873 --package-name=cargo \ 874 --component-name=cargo 875 try sh "$S/gen-installer.sh" \ 876 --image-dir="$TEST_DIR/image4" \ 877 --work-dir="$WORK_DIR" \ 878 --output-dir="$OUT_DIR" \ 879 --package-name=rust-docs \ 880 --component-name=rust-docs 881 try sh "$S/combine-installers.sh" \ 882 --work-dir="$WORK_DIR" \ 883 --output-dir="$OUT_DIR" \ 884 --package-name=rust \ 885 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 886 expect_output_fail "no components selected for installation" \ 887 "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,rustc,cargo 888} 889runtest without_any_components 890 891uninstall_without_any_components() { 892 try sh "$S/gen-installer.sh" \ 893 --image-dir="$TEST_DIR/image1" \ 894 --work-dir="$WORK_DIR" \ 895 --output-dir="$OUT_DIR" \ 896 --package-name=rustc \ 897 --component-name=rustc 898 try sh "$S/gen-installer.sh" \ 899 --image-dir="$TEST_DIR/image3" \ 900 --work-dir="$WORK_DIR" \ 901 --output-dir="$OUT_DIR" \ 902 --package-name=cargo \ 903 --component-name=cargo 904 try sh "$S/gen-installer.sh" \ 905 --image-dir="$TEST_DIR/image4" \ 906 --work-dir="$WORK_DIR" \ 907 --output-dir="$OUT_DIR" \ 908 --package-name=rust-docs \ 909 --component-name=rust-docs 910 try sh "$S/combine-installers.sh" \ 911 --work-dir="$WORK_DIR" \ 912 --output-dir="$OUT_DIR" \ 913 --package-name=rust \ 914 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 915 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" 916 expect_output_fail "no components selected for uninstallation" \ 917 "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" \ 918 --uninstall --without=rust-docs,rustc,cargo 919} 920runtest uninstall_without_any_components 921 922list_components() { 923 try sh "$S/gen-installer.sh" \ 924 --image-dir="$TEST_DIR/image1" \ 925 --work-dir="$WORK_DIR" \ 926 --output-dir="$OUT_DIR" \ 927 --package-name=rustc \ 928 --component-name=rustc 929 try sh "$S/gen-installer.sh" \ 930 --image-dir="$TEST_DIR/image3" \ 931 --work-dir="$WORK_DIR" \ 932 --output-dir="$OUT_DIR" \ 933 --package-name=cargo \ 934 --component-name=cargo 935 try sh "$S/gen-installer.sh" \ 936 --image-dir="$TEST_DIR/image4" \ 937 --work-dir="$WORK_DIR" \ 938 --output-dir="$OUT_DIR" \ 939 --package-name=rust-docs \ 940 --component-name=rust-docs 941 try sh "$S/combine-installers.sh" \ 942 --work-dir="$WORK_DIR" \ 943 --output-dir="$OUT_DIR" \ 944 --package-name=rust \ 945 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 946 expect_output_ok "rustc" "$WORK_DIR/rust/install.sh" --list-components 947 expect_output_ok "cargo" "$WORK_DIR/rust/install.sh" --list-components 948 expect_output_ok "rust-docs" "$WORK_DIR/rust/install.sh" --list-components 949} 950runtest list_components 951 952combined_remains() { 953 try sh "$S/gen-installer.sh" \ 954 --image-dir="$TEST_DIR/image1" \ 955 --work-dir="$WORK_DIR" \ 956 --output-dir="$OUT_DIR" \ 957 --package-name=rustc \ 958 --component-name=rustc 959 try sh "$S/gen-installer.sh" \ 960 --image-dir="$TEST_DIR/image3" \ 961 --work-dir="$WORK_DIR" \ 962 --output-dir="$OUT_DIR" \ 963 --package-name=cargo \ 964 --component-name=cargo 965 try sh "$S/gen-installer.sh" \ 966 --image-dir="$TEST_DIR/image4" \ 967 --work-dir="$WORK_DIR" \ 968 --output-dir="$OUT_DIR" \ 969 --package-name=rust-docs \ 970 --component-name=rust-docs 971 try sh "$S/combine-installers.sh" \ 972 --work-dir="$WORK_DIR" \ 973 --output-dir="$OUT_DIR" \ 974 --package-name=rust \ 975 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz" 976 for component in rustc cargo rust-docs; do 977 # rustbuild wants the original extracted package intact too 978 try test -d "$WORK_DIR/$component/$component" 979 try test -d "$WORK_DIR/rust/$component" 980 done 981} 982runtest combined_remains 983 984# Smoke tests 985 986cannot_write_error() { 987 # chmod doesn't work on windows 988 if [ ! -n "${WINDOWS-}" ]; then 989 try sh "$S/gen-installer.sh" \ 990 --image-dir="$TEST_DIR/image1" \ 991 --work-dir="$WORK_DIR" \ 992 --output-dir="$OUT_DIR" 993 chmod u-w "$PREFIX_DIR" 994 expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 995 chmod u+w "$PREFIX_DIR" 996 fi 997} 998runtest cannot_write_error 999 1000cannot_install_to_installer() { 1001 try sh "$S/gen-installer.sh" \ 1002 --image-dir="$TEST_DIR/image1" \ 1003 --work-dir="$WORK_DIR" \ 1004 --output-dir="$OUT_DIR" \ 1005 --package-name=my-package 1006 expect_output_fail "cannot install to same directory as installer" \ 1007 "$WORK_DIR/my-package/install.sh" --prefix="$WORK_DIR/my-package" 1008} 1009runtest cannot_install_to_installer 1010 1011upgrade_from_future_installer_error() { 1012 try sh "$S/gen-installer.sh" \ 1013 --image-dir="$TEST_DIR/image1" \ 1014 --work-dir="$WORK_DIR" \ 1015 --output-dir="$OUT_DIR" \ 1016 --rel-manifest-dir=rustlib 1017 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 1018 echo 100 > "$PREFIX_DIR/lib/rustlib/rust-installer-version" 1019 expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 1020} 1021runtest upgrade_from_future_installer_error 1022 1023destdir() { 1024 try sh "$S/gen-installer.sh" \ 1025 --image-dir="$TEST_DIR/image1" \ 1026 --work-dir="$WORK_DIR" \ 1027 --output-dir="$OUT_DIR" 1028 try "$WORK_DIR/package/install.sh" --destdir="$PREFIX_DIR/" --prefix=prefix 1029 try test -e "$PREFIX_DIR/prefix/bin/program" 1030} 1031runtest destdir 1032 1033destdir_no_trailing_slash() { 1034 try sh "$S/gen-installer.sh" \ 1035 --image-dir="$TEST_DIR/image1" \ 1036 --work-dir="$WORK_DIR" \ 1037 --output-dir="$OUT_DIR" 1038 try "$WORK_DIR/package/install.sh" --destdir="$PREFIX_DIR" --prefix=prefix 1039 try test -e "$PREFIX_DIR/prefix/bin/program" 1040} 1041runtest destdir_no_trailing_slash 1042 1043disable_verify_noop() { 1044 # Obsolete --disable-verify flag doesn't generate error 1045 try sh "$S/gen-installer.sh" \ 1046 --image-dir="$TEST_DIR/image1" \ 1047 --work-dir="$WORK_DIR" \ 1048 --output-dir="$OUT_DIR" 1049 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --disable-verify 1050} 1051runtest disable_verify_noop 1052 1053create_log() { 1054 try sh "$S/gen-installer.sh" \ 1055 --image-dir="$TEST_DIR/image1" \ 1056 --work-dir="$WORK_DIR" \ 1057 --output-dir="$OUT_DIR" 1058 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 1059 try test -e "$PREFIX_DIR/lib/packagelib/install.log" 1060 local _log="$(cat "$PREFIX_DIR/lib/packagelib/install.log")" 1061 if [ -z "$_log" ]; then 1062 fail "log is empty" 1063 fi 1064} 1065runtest create_log 1066 1067leave_log_after_failure() { 1068 # chmod doesn't work on windows 1069 if [ ! -n "${WINDOWS-}" ]; then 1070 try sh "$S/gen-installer.sh" \ 1071 --image-dir="$TEST_DIR/image1" \ 1072 --work-dir="$WORK_DIR" \ 1073 --output-dir="$OUT_DIR" 1074 mkdir -p "$PREFIX_DIR/lib/packagelib" 1075 touch "$PREFIX_DIR/lib/packagelib/components" 1076 chmod u-w "$PREFIX_DIR/lib/packagelib/components" 1077 expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 1078 chmod u+w "$PREFIX_DIR/lib/packagelib/components" 1079 try test -e "$PREFIX_DIR/lib/packagelib/install.log" 1080 local _log="$(cat "$PREFIX_DIR/lib/packagelib/install.log")" 1081 if [ -z "$_log" ]; then 1082 fail "log is empty" 1083 fi 1084 # script should tell user where the logs are 1085 if ! grep -q "see logs at" "$PREFIX_DIR/lib/packagelib/install.log"; then 1086 fail "missing log message" 1087 fi 1088 fi 1089} 1090runtest leave_log_after_failure 1091 1092# https://github.com/rust-lang/rust-installer/issues/22 1093help() { 1094 try sh "$S/gen-installer.sh" \ 1095 --image-dir="$TEST_DIR/image1" \ 1096 --work-dir="$WORK_DIR" \ 1097 --output-dir="$OUT_DIR" 1098 try "$WORK_DIR/package/install.sh" --help 1099} 1100runtest help 1101 1102# https://github.com/rust-lang/rust-installer/issues/31 1103CDPATH_does_not_destroy_things() { 1104 try sh "$S/gen-installer.sh" \ 1105 --image-dir="$TEST_DIR/image1" \ 1106 --work-dir="$WORK_DIR" \ 1107 --output-dir="$OUT_DIR" 1108 cd "$WORK_DIR" || exit 1 1109 export CDPATH="../$(basename $WORK_DIR)/foo" 1110 try sh "package/install.sh" --prefix="$PREFIX_DIR" 1111 cd "$S" || exit 1 1112 cd "$PREFIX_DIR" || exit 1 1113 export CDPATH="../$(basename $PREFIX_DIR)" 1114 try sh "lib/packagelib/uninstall.sh" 1115 cd "$S" || exit 1 1116 unset CDPATH 1117} 1118runtest CDPATH_does_not_destroy_things 1119 1120docdir_default() { 1121 try sh "$S/gen-installer.sh" \ 1122 --image-dir="$TEST_DIR/image-docdir1" \ 1123 --work-dir="$WORK_DIR" \ 1124 --output-dir="$OUT_DIR" 1125 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" 1126 try test -e "$PREFIX_DIR/share/doc/rust/README" 1127 try test -e "$PREFIX_DIR/share/doc/rust/rustdocs.txt" 1128} 1129runtest docdir_default 1130 1131docdir() { 1132 try sh "$S/gen-installer.sh" \ 1133 --image-dir="$TEST_DIR/image-docdir1" \ 1134 --work-dir="$WORK_DIR" \ 1135 --output-dir="$OUT_DIR" 1136 try mkdir "$WORK_DIR/docdir" 1137 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --docdir="$WORK_DIR/docdir" 1138 try test -e "$WORK_DIR/docdir/README" 1139 try test -e "$WORK_DIR/docdir/rustdocs.txt" 1140} 1141runtest docdir 1142 1143docdir_combined() { 1144 try sh "$S/gen-installer.sh" \ 1145 --image-dir="$TEST_DIR/image-docdir1" \ 1146 --work-dir="$WORK_DIR" \ 1147 --output-dir="$OUT_DIR" \ 1148 --package-name="rustc" \ 1149 --component-name="rustc" 1150 try sh "$S/gen-installer.sh" \ 1151 --image-dir="$TEST_DIR/image-docdir2" \ 1152 --work-dir="$WORK_DIR" \ 1153 --output-dir="$OUT_DIR" \ 1154 --package-name="cargo" \ 1155 --component-name="cargo" 1156 try sh "$S/combine-installers.sh" \ 1157 --work-dir="$WORK_DIR" \ 1158 --output-dir="$OUT_DIR" \ 1159 --package-name=rust \ 1160 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" 1161 try mkdir "$WORK_DIR/docdir" 1162 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --docdir="$WORK_DIR/docdir" 1163 try test -e "$WORK_DIR/docdir/README" 1164 try test -e "$WORK_DIR/docdir/rustdocs.txt" 1165 try test -e "$WORK_DIR/docdir/README" 1166 try test -e "$WORK_DIR/docdir/cargodocs.txt" 1167} 1168runtest docdir_combined 1169 1170combine_installers_different_input_compression_formats() { 1171 try sh "$S/gen-installer.sh" \ 1172 --image-dir="$TEST_DIR/image1" \ 1173 --work-dir="$WORK_DIR" \ 1174 --output-dir="$OUT_DIR" \ 1175 --package-name=rustc \ 1176 --component-name=rustc \ 1177 --compression-formats=xz 1178 try sh "$S/gen-installer.sh" \ 1179 --image-dir="$TEST_DIR/image3" \ 1180 --work-dir="$WORK_DIR" \ 1181 --output-dir="$OUT_DIR" \ 1182 --package-name=cargo \ 1183 --component-name=cargo \ 1184 --compression-formats=gz 1185 try sh "$S/combine-installers.sh" \ 1186 --work-dir="$WORK_DIR" \ 1187 --output-dir="$OUT_DIR" \ 1188 --package-name=rust \ 1189 --input-tarballs="$OUT_DIR/rustc.tar.xz,$OUT_DIR/cargo.tar.gz" 1190 1191 try test -e "${OUT_DIR}/rust.tar.gz" 1192 try test -e "${OUT_DIR}/rust.tar.xz" 1193} 1194runtest combine_installers_different_input_compression_formats 1195 1196generate_compression_formats_one() { 1197 try sh "$S/gen-installer.sh" \ 1198 --image-dir="$TEST_DIR/image1" \ 1199 --work-dir="$WORK_DIR" \ 1200 --output-dir="$OUT_DIR" \ 1201 --package-name="rustc" \ 1202 --component-name="rustc" \ 1203 --compression-formats="xz" 1204 1205 try test ! -e "${OUT_DIR}/rustc.tar.gz" 1206 try test -e "${OUT_DIR}/rustc.tar.xz" 1207} 1208runtest generate_compression_formats_one 1209 1210generate_compression_formats_multiple() { 1211 try sh "$S/gen-installer.sh" \ 1212 --image-dir="$TEST_DIR/image1" \ 1213 --work-dir="$WORK_DIR" \ 1214 --output-dir="$OUT_DIR" \ 1215 --package-name="rustc" \ 1216 --component-name="rustc" \ 1217 --compression-formats="gz,xz" 1218 1219 try test -e "${OUT_DIR}/rustc.tar.gz" 1220 try test -e "${OUT_DIR}/rustc.tar.xz" 1221} 1222runtest generate_compression_formats_multiple 1223 1224generate_compression_formats_error() { 1225 expect_fail sh "$S/gen-installer.sh" \ 1226 --image-dir="$TEST_DIR/image1" \ 1227 --work-dir="$WORK_DIR" \ 1228 --output-dir="$OUT_DIR" \ 1229 --package-name="rustc" \ 1230 --component-name="rustc" \ 1231 --compression-formats="xz,foobar" 1232} 1233runtest generate_compression_formats_error 1234 1235combine_compression_formats_one() { 1236 try sh "$S/gen-installer.sh" \ 1237 --image-dir="$TEST_DIR/image1" \ 1238 --work-dir="$WORK_DIR" \ 1239 --output-dir="$OUT_DIR" \ 1240 --package-name=rustc \ 1241 --component-name=rustc 1242 try sh "$S/gen-installer.sh" \ 1243 --image-dir="$TEST_DIR/image3" \ 1244 --work-dir="$WORK_DIR" \ 1245 --output-dir="$OUT_DIR" \ 1246 --package-name=cargo \ 1247 --component-name=cargo 1248 try sh "$S/combine-installers.sh" \ 1249 --work-dir="$WORK_DIR" \ 1250 --output-dir="$OUT_DIR" \ 1251 --package-name=rust \ 1252 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ 1253 --compression-formats=xz 1254 1255 try test ! -e "${OUT_DIR}/rust.tar.gz" 1256 try test -e "${OUT_DIR}/rust.tar.xz" 1257} 1258runtest combine_compression_formats_one 1259 1260combine_compression_formats_multiple() { 1261 try sh "$S/gen-installer.sh" \ 1262 --image-dir="$TEST_DIR/image1" \ 1263 --work-dir="$WORK_DIR" \ 1264 --output-dir="$OUT_DIR" \ 1265 --package-name=rustc \ 1266 --component-name=rustc 1267 try sh "$S/gen-installer.sh" \ 1268 --image-dir="$TEST_DIR/image3" \ 1269 --work-dir="$WORK_DIR" \ 1270 --output-dir="$OUT_DIR" \ 1271 --package-name=cargo \ 1272 --component-name=cargo 1273 try sh "$S/combine-installers.sh" \ 1274 --work-dir="$WORK_DIR" \ 1275 --output-dir="$OUT_DIR" \ 1276 --package-name=rust \ 1277 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ 1278 --compression-formats=xz,gz 1279 1280 try test -e "${OUT_DIR}/rust.tar.gz" 1281 try test -e "${OUT_DIR}/rust.tar.xz" 1282} 1283runtest combine_compression_formats_multiple 1284 1285combine_compression_formats_error() { 1286 try sh "$S/gen-installer.sh" \ 1287 --image-dir="$TEST_DIR/image1" \ 1288 --work-dir="$WORK_DIR" \ 1289 --output-dir="$OUT_DIR" \ 1290 --package-name=rustc \ 1291 --component-name=rustc 1292 try sh "$S/gen-installer.sh" \ 1293 --image-dir="$TEST_DIR/image3" \ 1294 --work-dir="$WORK_DIR" \ 1295 --output-dir="$OUT_DIR" \ 1296 --package-name=cargo \ 1297 --component-name=cargo 1298 expect_fail sh "$S/combine-installers.sh" \ 1299 --work-dir="$WORK_DIR" \ 1300 --output-dir="$OUT_DIR" \ 1301 --package-name=rust \ 1302 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ 1303 --compression-formats=xz,foobar 1304} 1305runtest combine_compression_formats_error 1306 1307tarball_compression_formats_one() { 1308 try cp -r "${TEST_DIR}/image1" "${WORK_DIR}/image" 1309 try sh "$S/make-tarballs.sh" \ 1310 --input="${WORK_DIR}/image" \ 1311 --work-dir="${WORK_DIR}" \ 1312 --output="${OUT_DIR}/rustc" \ 1313 --compression-formats="xz" 1314 1315 try test ! -e "${OUT_DIR}/rustc.tar.gz" 1316 try test -e "${OUT_DIR}/rustc.tar.xz" 1317} 1318runtest tarball_compression_formats_one 1319 1320tarball_compression_formats_multiple() { 1321 try cp -r "${TEST_DIR}/image1" "${WORK_DIR}/image" 1322 try sh "$S/make-tarballs.sh" \ 1323 --input="${WORK_DIR}/image" \ 1324 --work-dir="${WORK_DIR}" \ 1325 --output="${OUT_DIR}/rustc" \ 1326 --compression-formats="xz,gz" 1327 1328 try test -e "${OUT_DIR}/rustc.tar.gz" 1329 try test -e "${OUT_DIR}/rustc.tar.xz" 1330} 1331runtest tarball_compression_formats_multiple 1332 1333tarball_compression_formats_error() { 1334 try cp -r "${TEST_DIR}/image1" "${WORK_DIR}/image" 1335 expect_fail sh "$S/make-tarballs.sh" \ 1336 --input="${WORK_DIR}/image" \ 1337 --work-dir="${WORK_DIR}" \ 1338 --output="${OUT_DIR}/rustc" \ 1339 --compression-formats="xz,foobar" 1340} 1341runtest tarball_compression_formats_error 1342 1343echo 1344echo "TOTAL SUCCESS!" 1345echo 1346