--- /dev/null
+#!/bin/bash
+# Run `cargo test` on an installed Debian crate, e.g. in an autopkgtest.
+#
+# Requires dev-dependencies to be installed. If you give extra flags such as
+# "--all-features", then these features' dependencies must also be installed.
+
+set -e
+
+pkg="$1"
+ver="$2"
+
+if [ -z "$pkg" -o -z "$ver" ]; then
+ echo >&2 "Usage: $0 <crate> <version> [<extra test flags, e.g. --all-features>]"
+ exit 2
+fi
+shift 2
+
+pkgdir="/usr/share/cargo/registry/${pkg}-${ver}"
+if [ ! -d "$pkgdir" ]; then
+ echo >&2 "crate directory not found: $pkgdir"
+ exit 1
+fi
+cd "$pkgdir"
+
+rundir=$(mktemp -d)
+# https://stackoverflow.com/a/14812383 inside "trap" avoids running handler twice
+trap 'excode=$?; rm -rf "'"$rundir"'"; trap - EXIT' EXIT HUP INT QUIT PIPE TERM
+
+# set envvars necessary for cargo-debian-wrapper
+
+export DEB_CARGO_CRATE="${pkg}_${ver}"
+export CARGO_HOME="$rundir/debian/cargo_home"
+mkdir -p "$CARGO_HOME"
+mkdir -p "$rundir/registry"
+
+. <(dpkg-buildflags --export)
+. <(dpkg-architecture -s)
+RUST_TYPE="$(rustc --version --verbose | sed -ne 's/^host: //p')"
+export DEB_HOST_RUST_TYPE="$RUST_TYPE"
+export DEB_BUILD_RUST_TYPE="$RUST_TYPE"
+export DEB_TARGET_RUST_TYPE="$RUST_TYPE"
+
+export CARGO_TARGET_DIR="$rundir/target"
+export PATH="/usr/share/cargo/bin:$PATH"
+
+# run the test!
+
+cargo prepare-debian "$rundir/registry" --link-from-system
+cargo test "$@"
+dh-cargo (18) UNRELEASED; urgency=medium
+
+ * Add cargo-auto-test to prepare for running autopkgtests.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 17 Mar 2019 17:39:56 -0700
+
dh-cargo (17) unstable; urgency=medium
* Use --link-from-system from the newer debian-cargo-wrapper.