]> git.proxmox.com Git - dh-cargo.git/blob - cargo-auto-test
fix the maintainer
[dh-cargo.git] / cargo-auto-test
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 "$@"