]>
Commit | Line | Data |
---|---|---|
7cfab449 XL |
1 | #!/bin/bash |
2 | # Run `cargo test` on an installed Debian crate, e.g. in an autopkgtest. | |
3 | # | |
4 | # Requires dev-dependencies to be installed. If you give extra flags such as | |
5 | # "--all-features", then these features' dependencies must also be installed. | |
6 | ||
7 | set -e | |
8 | ||
9 | pkg="$1" | |
10 | ver="$2" | |
11 | ||
12 | if [ -z "$pkg" -o -z "$ver" ]; then | |
13 | echo >&2 "Usage: $0 <crate> <version> [<extra test flags, e.g. --all-features>]" | |
14 | exit 2 | |
15 | fi | |
16 | shift 2 | |
17 | ||
18 | pkgdir="/usr/share/cargo/registry/${pkg}-${ver}" | |
19 | if [ ! -d "$pkgdir" ]; then | |
20 | echo >&2 "crate directory not found: $pkgdir" | |
21 | exit 1 | |
22 | fi | |
23 | cd "$pkgdir" | |
24 | ||
25 | rundir=$(mktemp -d) | |
26 | # https://stackoverflow.com/a/14812383 inside "trap" avoids running handler twice | |
27 | trap 'excode=$?; rm -rf "'"$rundir"'"; trap - EXIT' EXIT HUP INT QUIT PIPE TERM | |
28 | ||
29 | # set envvars necessary for cargo-debian-wrapper | |
30 | ||
31 | export DEB_CARGO_CRATE="${pkg}_${ver}" | |
32 | export CARGO_HOME="$rundir/debian/cargo_home" | |
33 | mkdir -p "$CARGO_HOME" | |
34 | mkdir -p "$rundir/registry" | |
35 | ||
36 | . <(dpkg-buildflags --export) | |
37 | . <(dpkg-architecture -s) | |
38 | RUST_TYPE="$(rustc --version --verbose | sed -ne 's/^host: //p')" | |
39 | export DEB_HOST_RUST_TYPE="$RUST_TYPE" | |
40 | export DEB_BUILD_RUST_TYPE="$RUST_TYPE" | |
41 | export DEB_TARGET_RUST_TYPE="$RUST_TYPE" | |
42 | ||
43 | export CARGO_TARGET_DIR="$rundir/target" | |
44 | export PATH="/usr/share/cargo/bin:$PATH" | |
45 | ||
46 | # run the test! | |
47 | ||
48 | cargo prepare-debian "$rundir/registry" --link-from-system | |
49 | cargo test "$@" |