]> git.proxmox.com Git - rustc.git/blob - src/tools/rust-installer/test.sh
New upstream version 1.25.0+dfsg1
[rustc.git] / src / tools / rust-installer / test.sh
1 #!/bin/bash
2
3 set -e -u
4
5 if [ -x /bin/echo ]; then
6 ECHO='/bin/echo'
7 else
8 ECHO='echo'
9 fi
10
11 # Prints the absolute path of a directory to stdout
12 abs_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
20 S="$(abs_path $(dirname $0))"
21
22 TEST_DIR="$S/test"
23 TMP_DIR="$S/tmp"
24 WORK_DIR="$TMP_DIR/workdir"
25 OUT_DIR="$TMP_DIR/outdir"
26 PREFIX_DIR="$TMP_DIR/prefix"
27
28 case $(uname -s) in
29
30 MINGW* | MSYS*)
31 WINDOWS=1
32 ;;
33 esac
34
35 say() {
36 echo "test: $1"
37 }
38
39 pre() {
40 echo "test: $1"
41 rm -Rf "$WORK_DIR"
42 rm -Rf "$OUT_DIR"
43 rm -Rf "$PREFIX_DIR"
44 mkdir -p "$WORK_DIR"
45 mkdir -p "$OUT_DIR"
46 mkdir -p "$PREFIX_DIR"
47 }
48
49 need_ok() {
50 if [ $? -ne 0 ]
51 then
52 echo
53 echo "TEST FAILED!"
54 echo
55 exit 1
56 fi
57 }
58
59 fail() {
60 echo
61 echo "$1"
62 echo
63 echo "TEST FAILED!"
64 echo
65 exit 1
66 }
67
68 try() {
69 set +e
70 _cmd="$@"
71 _output=`$@ 2>&1`
72 if [ $? -ne 0 ]; then
73 echo \$ "$_cmd"
74 # Using /bin/echo to avoid escaping
75 $ECHO "$_output"
76 echo
77 echo "TEST FAILED!"
78 echo
79 exit 1
80 else
81 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
82 echo \$ "$_cmd"
83 fi
84 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
85 $ECHO "$_output"
86 fi
87 fi
88 set -e
89 }
90
91 expect_fail() {
92 set +e
93 _cmd="$@"
94 _output=`$@ 2>&1`
95 if [ $? -eq 0 ]; then
96 echo \$ "$_cmd"
97 # Using /bin/echo to avoid escaping
98 $ECHO "$_output"
99 echo
100 echo "TEST FAILED!"
101 echo
102 exit 1
103 else
104 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
105 echo \$ "$_cmd"
106 fi
107 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
108 $ECHO "$_output"
109 fi
110 fi
111 set -e
112 }
113
114 expect_output_ok() {
115 set +e
116 local _expected="$1"
117 shift 1
118 _cmd="$@"
119 _output=`$@ 2>&1`
120 if [ $? -ne 0 ]; then
121 echo \$ "$_cmd"
122 # Using /bin/echo to avoid escaping
123 $ECHO "$_output"
124 echo
125 echo "TEST FAILED!"
126 echo
127 exit 1
128 elif ! echo "$_output" | grep -q "$_expected"; then
129 echo \$ "$_cmd"
130 $ECHO "$_output"
131 echo
132 echo "missing expected output '$_expected'"
133 echo
134 echo
135 echo "TEST FAILED!"
136 echo
137 exit 1
138 else
139 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
140 echo \$ "$_cmd"
141 fi
142 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
143 $ECHO "$_output"
144 fi
145 fi
146 set -e
147 }
148
149 expect_output_fail() {
150 set +e
151 local _expected="$1"
152 shift 1
153 _cmd="$@"
154 _output=`$@ 2>&1`
155 if [ $? -eq 0 ]; then
156 echo \$ "$_cmd"
157 # Using /bin/echo to avoid escaping
158 $ECHO "$_output"
159 echo
160 echo "TEST FAILED!"
161 echo
162 exit 1
163 elif ! echo "$_output" | grep -q "$_expected"; then
164 echo \$ "$_cmd"
165 $ECHO "$_output"
166 echo
167 echo "missing expected output '$_expected'"
168 echo
169 echo
170 echo "TEST FAILED!"
171 echo
172 exit 1
173 else
174 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
175 echo \$ "$_cmd"
176 fi
177 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
178 $ECHO "$_output"
179 fi
180 fi
181 set -e
182 }
183
184 expect_not_output_ok() {
185 set +e
186 local _expected="$1"
187 shift 1
188 _cmd="$@"
189 _output=`$@ 2>&1`
190 if [ $? -ne 0 ]; then
191 echo \$ "$_cmd"
192 # Using /bin/echo to avoid escaping
193 $ECHO "$_output"
194 echo
195 echo "TEST FAILED!"
196 echo
197 exit 1
198 elif echo "$_output" | grep -q "$_expected"; then
199 echo \$ "$_cmd"
200 $ECHO "$_output"
201 echo
202 echo "unexpected output '$_expected'"
203 echo
204 echo
205 echo "TEST FAILED!"
206 echo
207 exit 1
208 else
209 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_CMD-}" ]; then
210 echo \$ "$_cmd"
211 fi
212 if [ -n "${VERBOSE-}" -o -n "${VERBOSE_OUTPUT-}" ]; then
213 $ECHO "$_output"
214 fi
215 fi
216 set -e
217 }
218
219 runtest() {
220 local _testname="$1"
221 if [ -n "${TESTNAME-}" ]; then
222 if ! echo "$_testname" | grep -q "$TESTNAME"; then
223 return 0
224 fi
225 fi
226
227 pre "$_testname"
228 "$_testname"
229 }
230
231 # Installation tests
232
233 basic_install() {
234 try sh "$S/gen-installer.sh" \
235 --image-dir="$TEST_DIR/image1" \
236 --work-dir="$WORK_DIR" \
237 --output-dir="$OUT_DIR"
238 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
239 try test -e "$PREFIX_DIR/something-to-install"
240 try test -e "$PREFIX_DIR/dir-to-install/foo"
241 try test -e "$PREFIX_DIR/bin/program"
242 try test -e "$PREFIX_DIR/bin/program2"
243 try test -e "$PREFIX_DIR/bin/bad-bin"
244 }
245 runtest basic_install
246
247 basic_uninstall() {
248 try sh "$S/gen-installer.sh" \
249 --image-dir="$TEST_DIR/image1" \
250 --work-dir="$WORK_DIR" \
251 --output-dir="$OUT_DIR"
252 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
253 try "$WORK_DIR/package/install.sh --uninstall" --prefix="$PREFIX_DIR"
254 try test ! -e "$PREFIX_DIR/something-to-install"
255 try test ! -e "$PREFIX_DIR/dir-to-install/foo"
256 try test ! -e "$PREFIX_DIR/bin/program"
257 try test ! -e "$PREFIX_DIR/bin/program2"
258 try test ! -e "$PREFIX_DIR/bin/bad-bin"
259 try test ! -e "$PREFIX_DIR/lib/packagelib"
260 }
261 runtest basic_uninstall
262
263 not_installed_files() {
264 mkdir -p "$WORK_DIR/overlay"
265 touch "$WORK_DIR/overlay/not-installed"
266 try sh "$S/gen-installer.sh" \
267 --image-dir="$TEST_DIR/image1" \
268 --work-dir="$WORK_DIR" \
269 --output-dir="$OUT_DIR" \
270 --non-installed-overlay="$WORK_DIR/overlay"
271 try test -e "$WORK_DIR/package/not-installed"
272 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
273 try test ! -e "$PREFIX_DIR/not-installed"
274 }
275 runtest not_installed_files
276
277 tarball_with_package_name() {
278 try sh "$S/gen-installer.sh" \
279 --image-dir="$TEST_DIR/image1" \
280 --work-dir="$WORK_DIR" \
281 --output-dir="$OUT_DIR" \
282 --package-name=rustc-nightly
283 try "$WORK_DIR/rustc-nightly/install.sh" --prefix="$PREFIX_DIR"
284 try test -e "$OUT_DIR/rustc-nightly.tar.gz"
285 try test -e "$OUT_DIR/rustc-nightly.tar.xz"
286 }
287 runtest tarball_with_package_name
288
289 install_overwrite_backup() {
290 try sh "$S/gen-installer.sh" \
291 --image-dir="$TEST_DIR/image1" \
292 --work-dir="$WORK_DIR" \
293 --output-dir="$OUT_DIR"
294 try mkdir -p "$PREFIX_DIR/bin"
295 touch "$PREFIX_DIR/bin/program"
296 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
297 # The existing program was backed up by 'install'
298 try test -e "$PREFIX_DIR/bin/program.old"
299 }
300 runtest install_overwrite_backup
301
302 bulk_directory() {
303 try sh "$S/gen-installer.sh" \
304 --image-dir="$TEST_DIR/image1" \
305 --work-dir="$WORK_DIR" \
306 --output-dir="$OUT_DIR" \
307 --bulk-dirs=dir-to-install
308 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
309 try test -e "$PREFIX_DIR/something-to-install"
310 try test -e "$PREFIX_DIR/dir-to-install/foo"
311 try test -e "$PREFIX_DIR/bin/program"
312 try test -e "$PREFIX_DIR/bin/program2"
313 try test -e "$PREFIX_DIR/bin/bad-bin"
314 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
315 try test ! -e "$PREFIX_DIR/dir-to-install"
316 }
317 runtest bulk_directory
318
319 bulk_directory_overwrite() {
320 try sh "$S/gen-installer.sh" \
321 --image-dir="$TEST_DIR/image1" \
322 --work-dir="$WORK_DIR" \
323 --output-dir="$OUT_DIR" \
324 --bulk-dirs=dir-to-install
325 try mkdir -p "$PREFIX_DIR/dir-to-install"
326 try touch "$PREFIX_DIR/dir-to-install/overwrite"
327 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
328 # The file that used to exist in the directory no longer does
329 try test ! -e "$PREFIX_DIR/dir-to-install/overwrite"
330 # It was backed up
331 try test -e "$PREFIX_DIR/dir-to-install.old/overwrite"
332 }
333 runtest bulk_directory_overwrite
334
335 bulk_directory_overwrite_existing_backup() {
336 try sh "$S/gen-installer.sh" \
337 --image-dir="$TEST_DIR/image1" \
338 --work-dir="$WORK_DIR" \
339 --output-dir="$OUT_DIR" \
340 --bulk-dirs=dir-to-install
341 try mkdir -p "$PREFIX_DIR/dir-to-install"
342 try touch "$PREFIX_DIR/dir-to-install/overwrite"
343 # This time we've already got an existing backup of the overwritten directory.
344 # The install should still succeed.
345 try mkdir -p "$PREFIX_DIR/dir-to-install~"
346 try touch "$PREFIX_DIR/dir-to-install~/overwrite"
347 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
348 try test ! -e "$PREFIX_DIR/dir-to-install/overwrite"
349 try test -e "$PREFIX_DIR/dir-to-install~/overwrite"
350 }
351 runtest bulk_directory_overwrite_existing_backup
352
353 nested_bulk_directory() {
354 try sh "$S/gen-installer.sh" \
355 --image-dir="$TEST_DIR/image4" \
356 --work-dir="$WORK_DIR" \
357 --output-dir="$OUT_DIR" \
358 --bulk-dirs=dir-to-install/qux
359 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
360 try test -e "$PREFIX_DIR/dir-to-install/qux/bar"
361 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
362 try test ! -e "$PREFIX_DIR/dir-to-install/qux"
363 }
364 runtest nested_bulk_directory
365
366 only_bulk_directory_no_files() {
367 try sh "$S/gen-installer.sh" \
368 --image-dir="$TEST_DIR/image5" \
369 --work-dir="$WORK_DIR" \
370 --output-dir="$OUT_DIR" \
371 --bulk-dirs=dir-to-install
372 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
373 try test -e "$PREFIX_DIR/dir-to-install/foo"
374 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
375 try test ! -e "$PREFIX_DIR/dir-to-install/foo"
376 }
377 runtest only_bulk_directory_no_files
378
379 nested_not_installed_files() {
380 mkdir -p "$WORK_DIR/overlay"
381 touch "$WORK_DIR/overlay/not-installed"
382 try sh "$S/gen-installer.sh" \
383 --image-dir="$TEST_DIR/image4" \
384 --work-dir="$WORK_DIR" \
385 --output-dir="$OUT_DIR" \
386 --non-installed-overlay="$WORK_DIR/overlay"
387 try test -e "$WORK_DIR/package/not-installed"
388 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
389 try test ! -e "$PREFIX_DIR/not-installed"
390 }
391 runtest nested_not_installed_files
392
393 multiple_components() {
394 try sh "$S/gen-installer.sh" \
395 --image-dir="$TEST_DIR/image1" \
396 --work-dir="$WORK_DIR/c1" \
397 --output-dir="$OUT_DIR/c1" \
398 --component-name=rustc
399 try sh "$S/gen-installer.sh" \
400 --image-dir="$TEST_DIR/image3" \
401 --work-dir="$WORK_DIR/c2" \
402 --output-dir="$OUT_DIR/c2" \
403 --component-name=cargo
404 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR"
405 try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR"
406 try test -e "$PREFIX_DIR/something-to-install"
407 try test -e "$PREFIX_DIR/dir-to-install/foo"
408 try test -e "$PREFIX_DIR/bin/program"
409 try test -e "$PREFIX_DIR/bin/program2"
410 try test -e "$PREFIX_DIR/bin/bad-bin"
411 try test -e "$PREFIX_DIR/bin/cargo"
412 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
413 try test ! -e "$PREFIX_DIR/something-to-install"
414 try test ! -e "$PREFIX_DIR/dir-to-install/foo"
415 try test ! -e "$PREFIX_DIR/bin/program"
416 try test ! -e "$PREFIX_DIR/bin/program2"
417 try test ! -e "$PREFIX_DIR/bin/bad-bin"
418 try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR" --uninstall
419 try test ! -e "$PREFIX_DIR/bin/cargo"
420 try test ! -e "$PREFIX_DIR/lib/packagelib"
421 }
422 runtest multiple_components
423
424 uninstall_from_installed_script() {
425 try sh "$S/gen-installer.sh" \
426 --image-dir="$TEST_DIR/image1" \
427 --work-dir="$WORK_DIR/c1" \
428 --output-dir="$OUT_DIR/c1" \
429 --component-name=rustc
430 try sh "$S/gen-installer.sh" \
431 --image-dir="$TEST_DIR/image3" \
432 --work-dir="$WORK_DIR/c2" \
433 --output-dir="$OUT_DIR/c2" \
434 --component-name=cargo
435 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR"
436 try "$WORK_DIR/c2/package/install.sh" --prefix="$PREFIX_DIR"
437 try test -e "$PREFIX_DIR/something-to-install"
438 try test -e "$PREFIX_DIR/dir-to-install/foo"
439 try test -e "$PREFIX_DIR/bin/program"
440 try test -e "$PREFIX_DIR/bin/program2"
441 try test -e "$PREFIX_DIR/bin/bad-bin"
442 try test -e "$PREFIX_DIR/bin/cargo"
443 # All components should be uninstalled by this script
444 try sh "$PREFIX_DIR/lib/packagelib/uninstall.sh"
445 try test ! -e "$PREFIX_DIR/something-to-install"
446 try test ! -e "$PREFIX_DIR/dir-to-install/foo"
447 try test ! -e "$PREFIX_DIR/bin/program"
448 try test ! -e "$PREFIX_DIR/bin/program2"
449 try test ! -e "$PREFIX_DIR/bin/bad-bin"
450 try test ! -e "$PREFIX_DIR/bin/cargo"
451 try test ! -e "$PREFIX_DIR/lib/packagelib"
452 }
453 runtest uninstall_from_installed_script
454
455 uninstall_from_installed_script_with_args_fails() {
456 try sh "$S/gen-installer.sh" \
457 --image-dir="$TEST_DIR/image1" \
458 --work-dir="$WORK_DIR/c1" \
459 --output-dir="$OUT_DIR/c1" \
460 --component-name=rustc
461 try "$WORK_DIR/c1/package/install.sh" --prefix="$PREFIX_DIR"
462 expect_output_fail "uninstall.sh does not take any arguments" sh "$PREFIX_DIR/lib/packagelib/uninstall.sh" --prefix=foo
463 }
464 runtest uninstall_from_installed_script_with_args_fails
465
466 # Combined installer tests
467
468 combine_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 }
502 runtest combine_installers
503
504 combine_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 }
546 runtest combine_three_installers
547
548 combine_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 }
573 runtest combine_installers_with_overlay
574
575 combined_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 }
599 runtest combined_with_bulk_dirs
600
601 combine_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 }
639 runtest combine_install_with_separate_uninstall
640
641 select_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" --components=rustc,cargo,rust-docs
685 try test ! -e "$PREFIX_DIR/bin/program"
686 try test ! -e "$PREFIX_DIR/bin/cargo"
687 try test ! -e "$PREFIX_DIR/baz"
688 try test ! -e "$PREFIX_DIR/lib/packagelib"
689 }
690 runtest select_components_to_install
691
692 select_components_to_uninstall() {
693 try sh "$S/gen-installer.sh" \
694 --image-dir="$TEST_DIR/image1" \
695 --work-dir="$WORK_DIR" \
696 --output-dir="$OUT_DIR" \
697 --package-name=rustc \
698 --component-name=rustc
699 try sh "$S/gen-installer.sh" \
700 --image-dir="$TEST_DIR/image3" \
701 --work-dir="$WORK_DIR" \
702 --output-dir="$OUT_DIR" \
703 --package-name=cargo \
704 --component-name=cargo
705 try sh "$S/gen-installer.sh" \
706 --image-dir="$TEST_DIR/image4" \
707 --work-dir="$WORK_DIR" \
708 --output-dir="$OUT_DIR" \
709 --package-name=rust-docs \
710 --component-name=rust-docs
711 try sh "$S/combine-installers.sh" \
712 --work-dir="$WORK_DIR" \
713 --output-dir="$OUT_DIR" \
714 --package-name=rust \
715 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
716 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
717 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc
718 try test ! -e "$PREFIX_DIR/bin/program"
719 try test -e "$PREFIX_DIR/bin/cargo"
720 try test -e "$PREFIX_DIR/baz"
721 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
722 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=cargo
723 try test -e "$PREFIX_DIR/bin/program"
724 try test ! -e "$PREFIX_DIR/bin/cargo"
725 try test -e "$PREFIX_DIR/baz"
726 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
727 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rust-docs
728 try test -e "$PREFIX_DIR/bin/program"
729 try test -e "$PREFIX_DIR/bin/cargo"
730 try test ! -e "$PREFIX_DIR/baz"
731 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
732 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc,cargo
733 try test ! -e "$PREFIX_DIR/bin/program"
734 try test ! -e "$PREFIX_DIR/bin/cargo"
735 try test -e "$PREFIX_DIR/baz"
736 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
737 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc,cargo,rust-docs
738 try test ! -e "$PREFIX_DIR/bin/program"
739 try test ! -e "$PREFIX_DIR/bin/cargo"
740 try test ! -e "$PREFIX_DIR/baz"
741 try test ! -e "$PREFIX_DIR/lib/packagelib"
742 }
743 runtest select_components_to_uninstall
744
745 invalid_component() {
746 try sh "$S/gen-installer.sh" \
747 --image-dir="$TEST_DIR/image1" \
748 --work-dir="$WORK_DIR" \
749 --output-dir="$OUT_DIR" \
750 --package-name=rustc \
751 --component-name=rustc
752 try sh "$S/gen-installer.sh" \
753 --image-dir="$TEST_DIR/image3" \
754 --work-dir="$WORK_DIR" \
755 --output-dir="$OUT_DIR" \
756 --package-name=cargo \
757 --component-name=cargo
758 try sh "$S/gen-installer.sh" \
759 --image-dir="$TEST_DIR/image4" \
760 --work-dir="$WORK_DIR" \
761 --output-dir="$OUT_DIR" \
762 --package-name=rust-docs \
763 --component-name=rust-docs
764 try sh "$S/combine-installers.sh" \
765 --work-dir="$WORK_DIR" \
766 --output-dir="$OUT_DIR" \
767 --package-name=rust \
768 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
769 expect_output_fail "unknown component" "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=foo
770 }
771 runtest invalid_component
772
773 without_components() {
774 try sh "$S/gen-installer.sh" \
775 --image-dir="$TEST_DIR/image1" \
776 --work-dir="$WORK_DIR" \
777 --output-dir="$OUT_DIR" \
778 --package-name=rustc \
779 --component-name=rustc
780 try sh "$S/gen-installer.sh" \
781 --image-dir="$TEST_DIR/image3" \
782 --work-dir="$WORK_DIR" \
783 --output-dir="$OUT_DIR" \
784 --package-name=cargo \
785 --component-name=cargo
786 try sh "$S/gen-installer.sh" \
787 --image-dir="$TEST_DIR/image4" \
788 --work-dir="$WORK_DIR" \
789 --output-dir="$OUT_DIR" \
790 --package-name=rust-docs \
791 --component-name=rust-docs
792 try sh "$S/combine-installers.sh" \
793 --work-dir="$WORK_DIR" \
794 --output-dir="$OUT_DIR" \
795 --package-name=rust \
796 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
797 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs
798 try test -e "$PREFIX_DIR/bin/program"
799 try test -e "$PREFIX_DIR/bin/cargo"
800 try test ! -e "$PREFIX_DIR/baz"
801 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
802 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,cargo
803 try test -e "$PREFIX_DIR/bin/program"
804 try test ! -e "$PREFIX_DIR/bin/cargo"
805 try test ! -e "$PREFIX_DIR/baz"
806 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
807 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,rustc
808 try test ! -e "$PREFIX_DIR/bin/program"
809 try test -e "$PREFIX_DIR/bin/cargo"
810 try test ! -e "$PREFIX_DIR/baz"
811 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
812 }
813 runtest without_components
814
815 # --uninstall --without is kind of weird,
816 # --without causes components to remain installed
817 uninstall_without_components() {
818 try sh "$S/gen-installer.sh" \
819 --image-dir="$TEST_DIR/image1" \
820 --work-dir="$WORK_DIR" \
821 --output-dir="$OUT_DIR" \
822 --package-name=rustc \
823 --component-name=rustc
824 try sh "$S/gen-installer.sh" \
825 --image-dir="$TEST_DIR/image3" \
826 --work-dir="$WORK_DIR" \
827 --output-dir="$OUT_DIR" \
828 --package-name=cargo \
829 --component-name=cargo
830 try sh "$S/gen-installer.sh" \
831 --image-dir="$TEST_DIR/image4" \
832 --work-dir="$WORK_DIR" \
833 --output-dir="$OUT_DIR" \
834 --package-name=rust-docs \
835 --component-name=rust-docs
836 try sh "$S/combine-installers.sh" \
837 --work-dir="$WORK_DIR" \
838 --output-dir="$OUT_DIR" \
839 --package-name=rust \
840 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
841 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
842 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs
843 try test ! -e "$PREFIX_DIR/bin/program"
844 try test ! -e "$PREFIX_DIR/bin/cargo"
845 try test -e "$PREFIX_DIR/baz"
846 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
847 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs,cargo
848 try test ! -e "$PREFIX_DIR/bin/program"
849 try test -e "$PREFIX_DIR/bin/cargo"
850 try test -e "$PREFIX_DIR/baz"
851 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
852 try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --without=rust-docs,rustc
853 try test -e "$PREFIX_DIR/bin/program"
854 try test ! -e "$PREFIX_DIR/bin/cargo"
855 try test -e "$PREFIX_DIR/baz"
856 }
857 runtest uninstall_without_components
858
859 without_any_components() {
860 try sh "$S/gen-installer.sh" \
861 --image-dir="$TEST_DIR/image1" \
862 --work-dir="$WORK_DIR" \
863 --output-dir="$OUT_DIR" \
864 --package-name=rustc \
865 --component-name=rustc
866 try sh "$S/gen-installer.sh" \
867 --image-dir="$TEST_DIR/image3" \
868 --work-dir="$WORK_DIR" \
869 --output-dir="$OUT_DIR" \
870 --package-name=cargo \
871 --component-name=cargo
872 try sh "$S/gen-installer.sh" \
873 --image-dir="$TEST_DIR/image4" \
874 --work-dir="$WORK_DIR" \
875 --output-dir="$OUT_DIR" \
876 --package-name=rust-docs \
877 --component-name=rust-docs
878 try sh "$S/combine-installers.sh" \
879 --work-dir="$WORK_DIR" \
880 --output-dir="$OUT_DIR" \
881 --package-name=rust \
882 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
883 expect_output_fail "no components selected for installation" \
884 "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --without=rust-docs,rustc,cargo
885 }
886 runtest without_any_components
887
888 uninstall_without_any_components() {
889 try sh "$S/gen-installer.sh" \
890 --image-dir="$TEST_DIR/image1" \
891 --work-dir="$WORK_DIR" \
892 --output-dir="$OUT_DIR" \
893 --package-name=rustc \
894 --component-name=rustc
895 try sh "$S/gen-installer.sh" \
896 --image-dir="$TEST_DIR/image3" \
897 --work-dir="$WORK_DIR" \
898 --output-dir="$OUT_DIR" \
899 --package-name=cargo \
900 --component-name=cargo
901 try sh "$S/gen-installer.sh" \
902 --image-dir="$TEST_DIR/image4" \
903 --work-dir="$WORK_DIR" \
904 --output-dir="$OUT_DIR" \
905 --package-name=rust-docs \
906 --component-name=rust-docs
907 try sh "$S/combine-installers.sh" \
908 --work-dir="$WORK_DIR" \
909 --output-dir="$OUT_DIR" \
910 --package-name=rust \
911 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
912 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
913 expect_output_fail "no components selected for uninstallation" \
914 "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" \
915 --uninstall --without=rust-docs,rustc,cargo
916 }
917 runtest uninstall_without_any_components
918
919 list_components() {
920 try sh "$S/gen-installer.sh" \
921 --image-dir="$TEST_DIR/image1" \
922 --work-dir="$WORK_DIR" \
923 --output-dir="$OUT_DIR" \
924 --package-name=rustc \
925 --component-name=rustc
926 try sh "$S/gen-installer.sh" \
927 --image-dir="$TEST_DIR/image3" \
928 --work-dir="$WORK_DIR" \
929 --output-dir="$OUT_DIR" \
930 --package-name=cargo \
931 --component-name=cargo
932 try sh "$S/gen-installer.sh" \
933 --image-dir="$TEST_DIR/image4" \
934 --work-dir="$WORK_DIR" \
935 --output-dir="$OUT_DIR" \
936 --package-name=rust-docs \
937 --component-name=rust-docs
938 try sh "$S/combine-installers.sh" \
939 --work-dir="$WORK_DIR" \
940 --output-dir="$OUT_DIR" \
941 --package-name=rust \
942 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
943 expect_output_ok "rustc" "$WORK_DIR/rust/install.sh" --list-components
944 expect_output_ok "cargo" "$WORK_DIR/rust/install.sh" --list-components
945 expect_output_ok "rust-docs" "$WORK_DIR/rust/install.sh" --list-components
946 }
947 runtest list_components
948
949 combined_remains() {
950 try sh "$S/gen-installer.sh" \
951 --image-dir="$TEST_DIR/image1" \
952 --work-dir="$WORK_DIR" \
953 --output-dir="$OUT_DIR" \
954 --package-name=rustc \
955 --component-name=rustc
956 try sh "$S/gen-installer.sh" \
957 --image-dir="$TEST_DIR/image3" \
958 --work-dir="$WORK_DIR" \
959 --output-dir="$OUT_DIR" \
960 --package-name=cargo \
961 --component-name=cargo
962 try sh "$S/gen-installer.sh" \
963 --image-dir="$TEST_DIR/image4" \
964 --work-dir="$WORK_DIR" \
965 --output-dir="$OUT_DIR" \
966 --package-name=rust-docs \
967 --component-name=rust-docs
968 try sh "$S/combine-installers.sh" \
969 --work-dir="$WORK_DIR" \
970 --output-dir="$OUT_DIR" \
971 --package-name=rust \
972 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
973 for component in rustc cargo rust-docs; do
974 # rustbuild wants the original extracted package intact too
975 try test -d "$WORK_DIR/$component/$component"
976 try test -d "$WORK_DIR/rust/$component"
977 done
978 }
979 runtest combined_remains
980
981 # Smoke tests
982
983 cannot_write_error() {
984 # chmod doesn't work on windows
985 if [ ! -n "${WINDOWS-}" ]; then
986 try sh "$S/gen-installer.sh" \
987 --image-dir="$TEST_DIR/image1" \
988 --work-dir="$WORK_DIR" \
989 --output-dir="$OUT_DIR"
990 chmod u-w "$PREFIX_DIR"
991 expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
992 chmod u+w "$PREFIX_DIR"
993 fi
994 }
995 runtest cannot_write_error
996
997 cannot_install_to_installer() {
998 try sh "$S/gen-installer.sh" \
999 --image-dir="$TEST_DIR/image1" \
1000 --work-dir="$WORK_DIR" \
1001 --output-dir="$OUT_DIR" \
1002 --package-name=my-package
1003 expect_output_fail "cannot install to same directory as installer" \
1004 "$WORK_DIR/my-package/install.sh" --prefix="$WORK_DIR/my-package"
1005 }
1006 runtest cannot_install_to_installer
1007
1008 upgrade_from_future_installer_error() {
1009 try sh "$S/gen-installer.sh" \
1010 --image-dir="$TEST_DIR/image1" \
1011 --work-dir="$WORK_DIR" \
1012 --output-dir="$OUT_DIR" \
1013 --rel-manifest-dir=rustlib
1014 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
1015 echo 100 > "$PREFIX_DIR/lib/rustlib/rust-installer-version"
1016 expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
1017 }
1018 runtest upgrade_from_future_installer_error
1019
1020 destdir() {
1021 try sh "$S/gen-installer.sh" \
1022 --image-dir="$TEST_DIR/image1" \
1023 --work-dir="$WORK_DIR" \
1024 --output-dir="$OUT_DIR"
1025 try "$WORK_DIR/package/install.sh" --destdir="$PREFIX_DIR/" --prefix=prefix
1026 try test -e "$PREFIX_DIR/prefix/bin/program"
1027 }
1028 runtest destdir
1029
1030 destdir_no_trailing_slash() {
1031 try sh "$S/gen-installer.sh" \
1032 --image-dir="$TEST_DIR/image1" \
1033 --work-dir="$WORK_DIR" \
1034 --output-dir="$OUT_DIR"
1035 try "$WORK_DIR/package/install.sh" --destdir="$PREFIX_DIR" --prefix=prefix
1036 try test -e "$PREFIX_DIR/prefix/bin/program"
1037 }
1038 runtest destdir_no_trailing_slash
1039
1040 disable_verify_noop() {
1041 # Obsolete --disable-verify flag doesn't generate error
1042 try sh "$S/gen-installer.sh" \
1043 --image-dir="$TEST_DIR/image1" \
1044 --work-dir="$WORK_DIR" \
1045 --output-dir="$OUT_DIR"
1046 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --disable-verify
1047 }
1048 runtest disable_verify_noop
1049
1050 create_log() {
1051 try sh "$S/gen-installer.sh" \
1052 --image-dir="$TEST_DIR/image1" \
1053 --work-dir="$WORK_DIR" \
1054 --output-dir="$OUT_DIR"
1055 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
1056 try test -e "$PREFIX_DIR/lib/packagelib/install.log"
1057 local _log="$(cat "$PREFIX_DIR/lib/packagelib/install.log")"
1058 if [ -z "$_log" ]; then
1059 fail "log is empty"
1060 fi
1061 }
1062 runtest create_log
1063
1064 leave_log_after_failure() {
1065 # chmod doesn't work on windows
1066 if [ ! -n "${WINDOWS-}" ]; then
1067 try sh "$S/gen-installer.sh" \
1068 --image-dir="$TEST_DIR/image1" \
1069 --work-dir="$WORK_DIR" \
1070 --output-dir="$OUT_DIR"
1071 mkdir -p "$PREFIX_DIR/lib/packagelib"
1072 touch "$PREFIX_DIR/lib/packagelib/components"
1073 chmod u-w "$PREFIX_DIR/lib/packagelib/components"
1074 expect_fail "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
1075 chmod u+w "$PREFIX_DIR/lib/packagelib/components"
1076 try test -e "$PREFIX_DIR/lib/packagelib/install.log"
1077 local _log="$(cat "$PREFIX_DIR/lib/packagelib/install.log")"
1078 if [ -z "$_log" ]; then
1079 fail "log is empty"
1080 fi
1081 # script should tell user where the logs are
1082 if ! grep -q "see logs at" "$PREFIX_DIR/lib/packagelib/install.log"; then
1083 fail "missing log message"
1084 fi
1085 fi
1086 }
1087 runtest leave_log_after_failure
1088
1089 # https://github.com/rust-lang/rust-installer/issues/22
1090 help() {
1091 try sh "$S/gen-installer.sh" \
1092 --image-dir="$TEST_DIR/image1" \
1093 --work-dir="$WORK_DIR" \
1094 --output-dir="$OUT_DIR"
1095 try "$WORK_DIR/package/install.sh" --help
1096 }
1097 runtest help
1098
1099 # https://github.com/rust-lang/rust-installer/issues/31
1100 CDPATH_does_not_destroy_things() {
1101 try sh "$S/gen-installer.sh" \
1102 --image-dir="$TEST_DIR/image1" \
1103 --work-dir="$WORK_DIR" \
1104 --output-dir="$OUT_DIR"
1105 cd "$WORK_DIR" || exit 1
1106 export CDPATH="../$(basename $WORK_DIR)/foo"
1107 try sh "package/install.sh" --prefix="$PREFIX_DIR"
1108 cd "$S" || exit 1
1109 cd "$PREFIX_DIR" || exit 1
1110 export CDPATH="../$(basename $PREFIX_DIR)"
1111 try sh "lib/packagelib/uninstall.sh"
1112 cd "$S" || exit 1
1113 unset CDPATH
1114 }
1115 runtest CDPATH_does_not_destroy_things
1116
1117 docdir_default() {
1118 try sh "$S/gen-installer.sh" \
1119 --image-dir="$TEST_DIR/image-docdir1" \
1120 --work-dir="$WORK_DIR" \
1121 --output-dir="$OUT_DIR"
1122 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR"
1123 try test -e "$PREFIX_DIR/share/doc/rust/README"
1124 try test -e "$PREFIX_DIR/share/doc/rust/rustdocs.txt"
1125 }
1126 runtest docdir_default
1127
1128 docdir() {
1129 try sh "$S/gen-installer.sh" \
1130 --image-dir="$TEST_DIR/image-docdir1" \
1131 --work-dir="$WORK_DIR" \
1132 --output-dir="$OUT_DIR"
1133 try mkdir "$WORK_DIR/docdir"
1134 try "$WORK_DIR/package/install.sh" --prefix="$PREFIX_DIR" --docdir="$WORK_DIR/docdir"
1135 try test -e "$WORK_DIR/docdir/README"
1136 try test -e "$WORK_DIR/docdir/rustdocs.txt"
1137 }
1138 runtest docdir
1139
1140 docdir_combined() {
1141 try sh "$S/gen-installer.sh" \
1142 --image-dir="$TEST_DIR/image-docdir1" \
1143 --work-dir="$WORK_DIR" \
1144 --output-dir="$OUT_DIR" \
1145 --package-name="rustc" \
1146 --component-name="rustc"
1147 try sh "$S/gen-installer.sh" \
1148 --image-dir="$TEST_DIR/image-docdir2" \
1149 --work-dir="$WORK_DIR" \
1150 --output-dir="$OUT_DIR" \
1151 --package-name="cargo" \
1152 --component-name="cargo"
1153 try sh "$S/combine-installers.sh" \
1154 --work-dir="$WORK_DIR" \
1155 --output-dir="$OUT_DIR" \
1156 --package-name=rust \
1157 --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz"
1158 try mkdir "$WORK_DIR/docdir"
1159 try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --docdir="$WORK_DIR/docdir"
1160 try test -e "$WORK_DIR/docdir/README"
1161 try test -e "$WORK_DIR/docdir/rustdocs.txt"
1162 try test -e "$WORK_DIR/docdir/README"
1163 try test -e "$WORK_DIR/docdir/cargodocs.txt"
1164 }
1165 runtest docdir_combined
1166
1167 echo
1168 echo "TOTAL SUCCESS!"
1169 echo