]> git.proxmox.com Git - dh-cargo.git/blame - cargo-auto-test
d/control: allow backported cargo to satisfy depends
[dh-cargo.git] / cargo-auto-test
CommitLineData
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
7set -e
8
9pkg="$1"
10ver="$2"
11
12if [ -z "$pkg" -o -z "$ver" ]; then
13 echo >&2 "Usage: $0 <crate> <version> [<extra test flags, e.g. --all-features>]"
14 exit 2
15fi
16shift 2
17
18pkgdir="/usr/share/cargo/registry/${pkg}-${ver}"
19if [ ! -d "$pkgdir" ]; then
20 echo >&2 "crate directory not found: $pkgdir"
21 exit 1
22fi
23cd "$pkgdir"
24
25rundir=$(mktemp -d)
26# https://stackoverflow.com/a/14812383 inside "trap" avoids running handler twice
27trap 'excode=$?; rm -rf "'"$rundir"'"; trap - EXIT' EXIT HUP INT QUIT PIPE TERM
28
29# set envvars necessary for cargo-debian-wrapper
30
31export DEB_CARGO_CRATE="${pkg}_${ver}"
32export CARGO_HOME="$rundir/debian/cargo_home"
33mkdir -p "$CARGO_HOME"
34mkdir -p "$rundir/registry"
35
36. <(dpkg-buildflags --export)
37. <(dpkg-architecture -s)
38RUST_TYPE="$(rustc --version --verbose | sed -ne 's/^host: //p')"
39export DEB_HOST_RUST_TYPE="$RUST_TYPE"
40export DEB_BUILD_RUST_TYPE="$RUST_TYPE"
41export DEB_TARGET_RUST_TYPE="$RUST_TYPE"
42
43export CARGO_TARGET_DIR="$rundir/target"
44export PATH="/usr/share/cargo/bin:$PATH"
45
46# run the test!
47
48cargo prepare-debian "$rundir/registry" --link-from-system
49cargo test "$@"